ansible

2020-12-20  本文已影响0人  星云之水

Ansible 学习

visudo sudo权限
useradd -aG wheel sun 保留原来的组,追加sudo
yum源 /etc/yum.repos.d/base.repo
echo export EDITOR=vim >> /etc/profile.d/env.sh
systemctl is-enabled vsftpd
ss -tln|grep 80 查看端口
hostnamectl set-hostname node1
getent group

1,安装

yum install -y ansible

2,查看

yum -ql ansible | less

3,举例

ansible server -m ping -k :走的是ssh协议

-m 模块 -k 密码

服务器列表放在 /etc/ansible/hosts ,
用all代替全部服务器
用[]分组

加速SSH的方法
服务器上 /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no

服务器和记住的主机 /root/.ssh/known_hosts
/etc/ansible/ansible.cfg中
host_key_checking = False,不用服务器的hostkey
log_path=/var/log/ansible.log 打开日志

建议建议居于key验证
ssh-keygen
ssh-copy-id 192.168.153.101

4,ansible帮助

ansible-doc -l / -a / -s command

5, ansible 命令
ansible server -m 模块 -a 参数 -v 查看详细过程 --list 查看主机列表
-u 用户 -K sudo

ansible 192.168.153.101 -m command -a 'ls -l /root/' -u sun -k -b -K

主机列表,与&,或:,非!alist:blist:&clist:!dlist ,用单引号
正则表达 用双引号 “~(web|db)" 用~开头

6,常见模块 ansible-doc 模块
command 可以不用写,不支持|,;,&,$等
shell 可以执行 ansible serlist -m shell -a 'echo medu|passwd --stdin test1'
script 运行脚本 ansible 192.168.153.101 -m script -a '/root/ansible/host.sh'
copy ansible serlist -m copy -a 'src=/root/ansible/selinux dest=/etc/selinux/config backup=yes'
fetch 和copy相反
file 模块
hostname
cron
ansible 192.168.153.101 -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'
ansible 192.168.153.101 -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'
yum ansible 192.168.153.101 -m yum -a 'name=vsftpd'
service
user ansible webser -m user -a 'name=nginx shell='sbin/nologin system=yes home=/var/nginx groups=root comment="nginx server"'
group

7,galaxy
galaxy.ansible.com查看下载rules (一堆文件的集合)
ansible-galaxy list *****
ansible-galaxy install/remove *****

8.ansible-vault
ansible-vault decrypt *.yml
ansible-vault encrypt *.yml
ansible-vault view *.yml
ansible-vault edit *.yml
ansible-vault reky *.yml

9.ansible-console交互式工具

10,playbook
'''


ansible-playbook -C file.yml 检查语法
--check检查
--list-hosts 列出服务器
--list-tasks 列出任务
--list-tages 列出标签
--limit 主机 只争对特定主机

'''

handlers当资源触发时执行
nofify通知
’''


使用变量
ansible-playbook -e 'pkname=vsftpd' app.yml
'''


在有的时候play的结果依赖于变量、fact或者是前一个任务的执行结果,从而需要使用到条件语句。
一、when
有的时候在特定的主机需要跳过特定的步骤,例如在安装包的时候,需要指定主机的操作系统类型,或者是当操作系统的硬盘满了之后,需要清空文件等,可以使用when语句来做判断 。when关键字后面跟着的是python的表达式,在表达式中你能够使用任何的变量或者fact,当表达式的结果返回的是false,便会跳过本次的任务
1、基本用法,示例:




for vars/CentOS.yml

apache: httpd
somethingelse: 42
如果操作系统是’CentOS’, Ansible导入的第一个文件将是’vars/CentOS.yml’,紧接着 是’/var/os_defaults.yml’,如果这个文件不存在。而且在列表中没有找到,就会报错。 在Debian系统中,最先查看的将是’vars/Debian.yml’而不是’vars/CentOS.yml’, 如果没找到,则寻找默认文件’vars/os_defaults.yml’。

三、with_first_found
有些时候,我们想基于不同的操作系统,选择不同的配置文件,及配置文件的存放路径,可以借助with_first_found来解决:

上一篇下一篇

猜你喜欢

热点阅读