一、简介
在编写playbook时,可能会涉及到一些敏感数据,如ip地址、账号密码等。这些数据是以明文显示的,这在生产场景中可能是不会允许的。我们可以使用ansible-vault命令,对敏感数据进行加密。
ansible可以加密任何部署相关的文件数据,如下所示:
1、主机或主机组变量等所有的变量文件
2、tasks、hanlders等所有的playbook文件
3、命令行导入的文件(如:-e @file.yaml ,-e @file.json)
4、copy,template的模块里src参数所使用的文件,甚至是二进制文件。
5、playbook里用到的某个字符串参数也可以加密(Ansible>=2.3)
二、常用操作
1、字符串加密
[root@www ~]# ansible-vault encrypt_string 123456
2、创建加密文件
[root@www ~]# ansible-vault create foo.ym
3、使用密码文件创建
[root@www ~]# ansible-vault create --vault-password-file=vault-pass secret.yml
4、给现有文件加密
[root@www ~]# ansible-vault encrypt foo.yml bar.yml baz.ym
5、编辑加密文件
[root@www ~]# ansible-vault edit secret.yml
6、查看加密文件
[root@www ~]# ansible-vault view foo.yml bar.yml baz.yml
7、加密文件更改密码
[root@www ~]# ansible-vault rekey foo.yml bar.yml baz.yml
8、取消加密文件密码
[root@www ~]# ansible-vault decrypt foo.yml bar.yml baz.yml
三、playbook与ansible vault
ansible执行playbook时,可以通过交互式或指定密码文件的方式来解密文件。
方法一:执行playbook时在终端以交互式的形式输入密码,如下所示:
[root@www ~]# ansible-playbook --ask-vault-pass site.yaml
方法二:指定密码文件
[root@www ~]# ansible-playbook --vault-password-file=password site.yaml
从ansible2.4版本开始,官方不再推荐使用”–vault-password-file”选项,官方开始推荐使用”–vault-id”选项代替”–vault-password-file”选项指定密码文件,也就是说,如下两条命令的效果是一样的。(推荐使用,不代表不能使用。_)
[root@www ~]# ansible-vault decrypt --vault-id passwordfile site.yaml
[root@www ~]# ansible-vault decrypt --vault-password-file passwordfile site.yaml
如下图所示:
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》