ansible系列8-SSH连接和执行性能优化

1.

当你的SSH的版本高于5.6时

我们可以直接修改 /etc/ansible/ansible.cfg里面的参数

ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d

ControlPersist=5d这个参数是设置整个长连接保持时间设置为5天,如果开启,通过SSH连接过的设备都会在/ansible/cp目录下生成一个socket文件

如果你的SSH的版本低于5.6,需要使用yum对SSH升级

yum update openssh-clients

2.开启pipelining

我们可以直接修改 /etc/ansible/ansible.cfg里面的参数

pipelining=True

需要修改被控制主机的/etc/sudoers

sed -i '/Defaults.*requiretty/aDefaults: test !requiretty' /etc/sudoers #添加用户test !requiretty
sed -i "$a Defaults: test !requiretty" /etc/sudoers   #添加用户test !requiretty

编辑当前SSH用户配置为requiretty

3.开启ansible加速模式accelerate

1)  需要开启时首先要在远端机器安装 python-keyczar软件包

2)  需要在ansible-playbook的剧本文件中加入 accelerate: true

还需加入:

[accelerate]

accelerate_port = 5099

accelerate_timeout = 30

accelerate_connect_timeout = 5.0

4.设置facts缓存

1)需要在ansible-playbook的剧本文件中加入 gather_facts: False  #可以直接关闭facts不收集远程主机信息

2)设置facts缓存: /etc/ansible/ansible.cfg

     第一种方式:使用文件缓存

     gathering = smart

     facts_caching_timeout = 86400  #  设置缓存过期时间86400秒

     facts_caching = jsonfile              #  cache文件是json格式

     facts_caching_connection = /tmp/ansible/ansible_facts_cache   #缓存文件的存储路径

     第二种方式:使用redis存储facts文件需安装redis;yum install redis ;还需要安装pip install redis的python库

     gathering = smart

     facts_caching_timeout = 86400  #  设置缓存过期时间86400秒

     facts_caching = redis              # 使用redis          或者        facts_caching = memcached              #使用memcached

     #查看redis存储情况

        redis-cli               #登陆redis

        keyd *                 #找到所有键

        select 0              #切换库

        get   键的名字    #查看值