ansible速度优化
2017-06-02 本文已影响0人
carey_ff72
文章来自于 carey的博客:ansible速度优化
有人说
ansible
的执行效率比价差,但是可以通过很多的优化去调整执行速度
$ 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
文件
设置参数
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
设置参数
pipelining = True
开启accelerate模式
accelerate
在远端服务器上运行一个守护进程。
注意: 开启accelerate
需要在管理与被管理端都安装python-keyczar
软件包。
设置参数
[accelerate]
#accelerate_port = 5099
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0
开启facts缓存
如果你不使用facts
里的信息,可以在playbook
中设置gather_facts: False
来提交效
设置参数
使用json
文件存储facts
信息
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
设置参数
gathering = smart
fact_caching_timeout = 86400
fact_caching = redis