安装
ansible需要epel源,需要先安装epel源
代码语言:javascript复制yum install epel-release
yum install ansible
配置
配置ansible的主机清单列表,把受控主机的IP加入到清单中
代码语言:javascript复制vim /etc/ansible/hosts
172.10.0.18
完成上面的配置后,使用下面的命令,去ping对应的主机,发现会报错。
172.10.0.18主机不可达,ansible是基于ssh的,ansible不知道172.10.0.18这台主机的用户名和密码,所以ansible无法连接到它。 我们可以在清单文件中加入对应主机的用户名和密码,也可以基于密钥的方式
- 以用户名和密码的方式
vim /etc/ansible/ansible.cfg
host_key_checking = False # 取消注释,关闭ssh key验证
vim /etc/ansible/hosts # 配置服务器密码
172.10.0.18 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_ssh_port=22
受控主机的信息已经配置完毕,在执行下刚才的命令
命令成功执行
- 以密钥的方式
ssh-keygen # 先在ansible主机上生成密钥
ssh-copy-id 172.10.0.18 # 在把公钥复制到受控主机上
在清单文件中,删除刚才配置的ssh信息,只保留IP地址即可,如果端口不是默认的22,还需要保留并修改端口配置。
优化
关闭gathering_facts
ansible-playbook的第一个步骤总是执行gathering facts,关闭之后,可以加快playbook的执行效率
代码语言:javascript复制vim ansible-playbook.yml
---
- hosts: HOST
gather_facts: no # 在playbook中添加此行
ssh pipelining
ssh pipelining是一个加速ansible执行速度的插件,ssh pipelining默认是关闭的,之所以默认关闭是为了兼容不同的sudo配置,主要是requiretty选项,如果不使用sudo,建议开启,打开此选项,可以减少ansible执行没有传输时ssh在被控机器上执行任务的连接数,不过,如果使用sudo,就必须关闭requiretty选项
代码语言:javascript复制vim /etc/ansible/ansible.cfg
pipelining = True # 改为True
显示playbook执行每一步所花费的时间
代码语言:javascript复制1. 下载插件
https://github.com/jlafon/ansible-profile
2. 创建目录
在playbook目录下创建一个callback_plugins的目录,然后把下载的profile_tasks.py放到该目录下
3. 执行playbook
在执行playbook命令就会看到每一个tasks的执行时间