运维工作中,经常用到Ansible,其强大的并发、远程批量管理主机的能力,使得其在工作的中的地位举足轻重。
下面就汇总一下经常使用的Ansible技巧,以便快速查阅。
1. 常用Shell命令和函数
1.1 自动交互密码
auto_Ansible(){
expect -c "
spawn $1
expect \"*assword: \"
send \"my_password\n\"
interact
"
}
expect是常用的自动交互命令,结合expect,可以在脚本中自动完成密码键入,达到自动运行的目的。
出于安全考虑,不建议将密码明文放于脚本中,因此可以调用下面的小脚本,来获取密码:
# 编辑脚本
vim get_passwd.sh
#!/bin/bash
if [[ "${1}x" == "7H3i" ]]; then
echo "my_password"
fi
# 二进制化
shc -f get_passwd.sh
rm get_passwd.sh get_passwd.sh.c
mv get_passwd.sh.x get_passwd.sh
# 调用
./get_passwd.sh 7H3i
1.2 Ansible的复制功能
这个功能用于对软件系统进行批量补丁操作,再适合不过了。因为出色的并发能力,可以使得补丁进程的时间大大缩短(相较于没有并发机制的shell脚本而言)。
ansible temp -i lius.list -f 200 -k -K -b -u lius -m copy -a "src=my_mgmt.sh dest=/tmp/lius.bak/ mode=0755 force=yes"
2. Ansible的配置
2.1 显示颜色的配置
这个配置看似鸡肋,但在保留日志,以及日志处理的过程中,会非常必要。
我们知道,Ansible的默认输出结果是带颜色的,一方面,这个对我们快速分辨结果有很好的辅助作用;而另一方面,如果这些内容被记录进日志,会有很多的特殊符号:
^[[0;33m}^[[0m ... .. ... ... ... ^[[0m
这时候,这个no color的模式,对我们记录日志反而更加友好。
这个配置有两个修改方法。
一种是修改配置文件,全局生效,缺点就是只屏幕显示结果的时候,没有了颜色显示的辅助。
方法:修改配置文件,将nocolor = 1 的注释取消:
# set to 1 if you don't want colors, or export ANSIBLE_NOCOLOR=1
nocolor = 1
另一种是脚本临时生效,脚本中执行如下命令(建议使用这个方案):
export ANSIBLE_NOCOLOR=1
转载请注明:liutianfeng.com » Ansible常用技巧汇总