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
```