Ansible管理密码库文件

	ansible可能需要访问密码或API密钥等敏感数据,以便能配置受管主机。通常,此信息可能以纯文本形式存储在清单变量或其他Ansible文件中。但若如此,任何有权访问Ansible文件的用户或存储,这些Ansible文件的版本控制系统都能够访问此敏感数据。这存在安全风险。

	使用Ansible随附的Ansible Vault可以加密和解密任何由Ansible使用的结构化数据文件。若要使用AnsibleVault,可通过一个名为ansible-vault 的命令行工具创建、编辑、加密、解密和查看文件。Ansible Vault可以加密任何由Ansible使用的结构化数据文件。这可能包括清单变量、playbook中含有的变量文件、在执行playbook时作为参数传遇的变量文件,或者Anslble 角色中定义的变量。

环境:

受控主机清单文件:

[dev]

192.168.10.129

[all:vars]

ansible_ssh_user=root

ansible_ssh_pass=123

基本配置:

定义一个存放变量的文件:

yml文件:

调用变量

运行结果:

存在安全风险!!

创建加密文件:

要创建新的加密文件,可使用ansible-vault create filename命令。该命令

将提示输入新的Vaul密码,然后利用默认编辑器vi打开文件。可以使用vault

密码文件来存储vault密码,而不是通过标准输入途径输入vault密码。您可能

需要用文件权限和其他方式来严密保护该文件。

使用ansible-vault create vars.txt 命令,会要求输入密码进入vim编辑器进行编辑

pkg_name: httpd 加密的数据

使用cat命令查看文件时,会显示加密后的数据,保证了数据的安全性

修改yml文件,调用加密后的存放变量的文件

要运行可访问通过Ansible Vault加密的文件的playbook,需要ansible-playbook命令提供加密密码。如果不提供密码,playbook将返回错误,要为playbook提供vault密码,可使用--vault-id选项。例如,要以交互方式提供vault密码,请使用--vault-id @prompt。敏感的playbook变量可以放在单独的文件中,此文件通过AnsibleVault加密,并通过vars_files指令包含在该playbook中。

习惯使用ansible-playbook file.yml --ask-vault-pass这种方式,然后输入密码

也可以在ansible.cfg配置文件中使用vault_password_file指定密码文件,避免多次输入密码,后续可以直接执行ansible-playbook file.tml运行剧本。

vault_password_file=用于存放密码文件的路径

后续运行剧本,涉及到调用加密文件时,不再重复输入密码认证。

posted @ 2024-07-29 17:36  NETYZreal  阅读(27)  评论(1编辑  收藏  举报