1. 关闭ansible的ssh秘钥检查
vim /etc/ansible/ansible.cfg
host_key_checking = False
2. open发送执行命令代替命令临时文件(针对不使用sudo,建议开启)
vim /etc/ansible/ansible.cfg
pipelinging = True
3. 升级openssh(升级到5.6以上)
```
openssh -V
yum update openssh
vim ~/.ssh/config
Host *
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 5
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 4h
```
4. 关闭gather facts,使用gather_facts关键字,如果要特殊开启, gather_facts: True
vim /etc/ansible/ansible.cfg
gathering = explicit
设置facts缓存,如果不想要禁用facts的话,可以使用缓冲
```
vim /etc/ansible/ansible.cfg
gathering=smart
fact_caching_timeout=86400
fact_caching=jsonfile
fact_caching_connection=/path/to/ansible_fact_cache
```
5. 设置ssh长连接时间5天(openssh版本在5.6以上)
vim /etc/ansible/ansible.cfg
ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d
6. 开启accelerate模式,使用accelerate关键字[新版本中废弃了这个特性,不符合ansible无客户端模式特性,不考虑]
(需要在被管理机器上安抓python-keyczar包,如果使用sudo,需要禁用nopasswd功能)
在playbook中
```yml
---
- hosts: all
accelerate: true
vim /etc/ansible/ansible.cfg
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
```
被管理机器(托管机)安装python-keyczar包
```bash
yum -y install epel-release
yum -y install python-keyczar
```
如果使用sudo,非root用户,需要在被管理主机上关闭requietty和nopasswd配置(略)
7. 并行执行,使用async和poll关键字(可以不考虑)
使用async和poll这两个关键字便可以并行运行一个任务. async这个关键字触发ansible并行运作任务,而async的值是ansible等待运行这个任务的最大超时值,而poll就是ansible检查这个任务是否完成的频率时间.
```
- name: update app
shell: sleep 10
async: 1000
poll: 0
```