七、ansible-vault常用子命令:

1、create:默认使用vim编辑器创建一个加密文件

# ansible-vault create test

备注:执行上述命令后,会提示输入密码,确认密码,然后默认调用vim编辑器,输入内容后,内容会被保存到test文件中,并且在退出编辑时自动将test文件加密,使用cat等命令查看其文件内容,显示的是密文

2、encrypt:加密文件

# ansible-vault encrypt test.yml

# ansible-playbook --ask-vault-pass test.yml

备注:输入并确认密码后,test.yml被加密,正常执行需要输入加密时的密码

3、decrypt:解密文件

# ansible-vault decrypt test.yml

备注:解密时需要输入加密时的密码,解密成功后test.yml被还原成明文

4、edit:用vim编辑器编辑已经被加密的文件

# ansible-vault edit test.yml

备注:执行过程是先解密文件,修改内容保存后,再加密文件

5、rekey:修改加密/解密时的密码

# ansible-vault rekey test.yml

备注:执行上述命令后,一共会提示输入3次密码,第1次输入旧密码,之后2次输入新密码,修改成功后,以后都使用新密码进行解密

6、view:查看已经被加密文件的内容

# ansible-vault view test.yml

备注:执行上述命令后,输入加密时的密码后,才能查看文件内容,不会对文件本身进行解密操作


八、Ansible常见优化:

# cd /etc/ansible

# cp ansible.cfg ansible.cfg.bak

1、开启SSH长连接:

(1)# ssh -V

备注:确保OpenSSH的版本高于5.6,因为在5.6版本之后OpenSSH支持Multiplexing(多路复用)

(2)# vim ansible.cfg,取消如下代码注释并修改参数值:

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

control_path = /etc/ansible/socket/ansible-ssh-%%h-%%p-%%r

(3)创建目录:# mkdir -pv /etc/ansible/socket

备注:control_path指定socket文件的保存位置

image.png

2、开启pipelining模式:

# vim ansible.cfg,取消代码注释并修改参数值:pipelining = True

备注:使用-vvv选项查看整个执行过程,发现其中一个步骤就是将生成好的本地Python脚本PUT到远程主机中,如果开启了pipelining模式,可以减少在远程主机中执行模块所需的SSH操作数,大大提高执行效率。但是在使用sudo时,必须首先禁用远程主机/etc/sudoers中的requiretty。默认情况下,禁用此选项以保持与具有requirettysudoers配置的兼容性。

3、配置facts缓存,加速每次执行playbook时收集主机facts信息的过程,并保存至redis中:

(1)Ansible主机安装redis相关软件包,并启动:

# yum -y install redis python-setuptools

# easy_install pip

# pip install redis

# systemctl start redis.service

# ss -tunlp | grep 6379

(2)# vim ansible.cfg,取消代码注释并修改参数值:

gathering = smart

fact_caching = redis

fact_caching_timeout = 86400

(3)Ansible主机连接到本机redis查看key信息:

# redis-cli

127.0.0.1:6379> keys *

image.png

(4)执行playbook

(5)再次查看key信息:

image.png