Ansible常用技巧汇总

运维高级 Liemer_Lius 1099℃

运维工作中,经常用到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常用技巧汇总

喜欢 (2)

评论已关闭。