文章

ansible安全之加密主机清单

ansible安全之加密主机清单

本文档介绍如何使用 Ansible Vault 加密主机清单文件,保护敏感信息(如密码)的安全。

主机清单源文件

原始的主机清单文件内容(包含明文密码):

[root@master ansible]# cat /etc/ansible/hosts2 [node1] 192.168.77.129 ansible_ssh_pass=123456 [node2] 192.168.77.130 ansible_ssh_pass=123456 [node3] 192.168.77.131 ansible_ssh_pass=123456

使用 ansible-vault 加密主机清单

使用 ansible-vault encrypt 命令加密主机清单文件:

[root@master ansible]# ansible-vault encrypt /etc/ansible/hosts2 New Vault password: YOUR_PASSWORD New Vault password: YOUR_PASSWORD successful

再次查看 hosts2 的文件内容时,内容已经是加密过的了:

[root@master ansible]# cat /etc/ansible/hosts2
点击展开:加密后的内容(很长) ```yaml $ANSIBLE_VAULT;1.1;AES256 39623561303563343739653030366332363466353462363632336433346537376263326331643338 6531636436633334633533363664663266393939613938650a656261396661633732353536353339 61663162323861613032376463326566393034653963633038303162626135303463303233373130 3437363561323131320a376665383735613961616537333266353565386237373433393162386332 35313265303137616438353964316662646136623665633132393566333465333563383438643431 36376366633735366564383735656434373436326238343363383132373931353839333139333131 31323437393232306437363563366662613139386635356161396630376439343832346662393136 65353537643761376230653965393864643333356338386537343061306166396137343664346561 65663630306134623362383065316134353062323636326231396630313761326631373862653836 65623161633837306536616432646236646261656232626135396631666166636632643465383663 653832366630616363336566626432353164 ```

编辑加密后的主机清单文件

使用 ansible-vault edit 命令编辑加密的文件:

[root@master ~]# ansible-vault edit /etc/ansible/hosts2 --ask-vault-pass Vault password: YOUR_PASSWORD 编辑完成后,文件会自动重新加密保存。 ## 使用加密文件运行任务 ### 错误示例 如果不提供 Vault 密码,运行 ansible 时会提示解密错误: ```bash [root@master ansible]# ansible -i /etc/ansible/hosts2 node1 -m ping ERROR! Attempted to read "/etc/ansible/hosts2" as YAML: Decryption failed on /etc/ansible/hosts2 Attempted to read "/etc/ansible/hosts2" as ini file: Decryption failed on /etc/ansible/hosts2

正确使用方法

使用 --ask-vault-pass 参数,系统会提示输入加密密码:

YOUR_PASSWORD

使用 ansible 命令

[root@master ansible]# ansible -i /etc/ansible/hosts2 node1 -m ping –ask-vault-pass Vault password:

YOUR_PASSWORD | SUCCESS => { “changed”: false, “ping”: “pong” }

使用 ansible-playbook 命令

[root@master ansible]# ansible-playbook -i /etc/ansible/hosts2 test.yml –ask-vault-pass Vault password:

YOUR_PASSWORD [node1] ***************************************

TASK [command] ***************************************** changed: [192.168.77.129]

RUNNING HANDLER [test1] ************************************ ok: [192.168.77.129] => { “changed”: false, “msg”: “456” }

PLAY RECAP *****************************************

192.168.77.129 : ok=2 changed=1 unreachable=0 failed=0

```

提示:也可以使用 --vault-password-file 参数指定密码文件,避免每次手动输入密码。

本文由作者按照 CC BY 4.0 进行授权