ansible速度优化

有人说ansible的执行效率比价差,但是可以通过很多的优化去调整执行速度

1
2
3
4
5
6
7
$ time ansible centos -m ping -o
192.168.56.101 | SUCCESS => {"changed": false, "ping": "pong"}
192.168.56.102 | SUCCESS => {"changed": false, "ping": "pong"}
real 0m1.298s
user 0m0.479s
sys 0m0.217s

开启ssh长连接

OpenSSH 5.6版本后SSH支持了Multiplexing,关于这个特性可以参考文章Multiplexing
修改ansible.cfg文件
设置参数

1
2
3
ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d
ControlPersist=5d //长连接时间保持5天

开启后,通过SSH连接过的设备会在当前目录.ansible/cp/目录下生成一个socket文件,通过netstat命令会看到,有ESTABLISHED状态的连接一直与远端社保进行tcp连接

开启pipelining

执行流程优化
需要被控制主机/etc/sudoers文件编辑当前ansible ssh用户的配置为requiretty。否则在执行的时候会提示sudo: sorry, you must have a tty to run sudo
设置参数

1
pipelining = True

开启accelerate模式

accelerate在远端服务器上运行一个守护进程。
注意: 开启accelerate需要在管理与被管理端都安装python-keyczar软件包。
设置参数

1
2
3
4
[accelerate]
#accelerate_port = 5099
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0

开启facts缓存

如果你不使用facts里的信息,可以在playbook中设置gather_facts: False来提交效
设置参数
使用json文件存储facts信息

1
2
3
4
gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile
fact_caching_connection = /dev/shm/ansible_fact_cache

目前facts存储还不支持远端,所以需要在ansible管理机上安装redis服务,然后安装redis python库。pip install redis
设置参数

1
2
3
gathering = smart
fact_caching_timeout = 86400
fact_caching = redis

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器