第 3 章 Ansible vault
有时,您的 playbook 需要使用敏感数据,如密码、API 密钥和其他 secret 来配置受管主机。将此信息以纯文本形式存储在变量或其他与 Ansible 兼容的文件中存在安全风险,因为有权访问这些文件的任何用户都可以读取敏感数据。
使用 Ansible vault,您可以加密、解密、查看和编辑敏感信息。它们可以包括:
- 在 Ansible Playbook 中插入的变量文件
- 主机和组变量
- 执行 playbook 时作为参数传递的变量文件
- Ansible 角色中定义的变量
您可以使用 Ansible vault 安全地管理单个变量、整个文件,甚至像 YAML 文件这样的结构化数据。然后,这些数据可以安全地存储在版本控制系统中,或者与团队成员共享,而无需公开敏感信息。
文件使用高级加密标准(AES256)的对称加密进行了保护,其中单个密码或密码短语用于加密和解密数据。请注意,这一操作方式尚未被第三方正式审核。
要简化管理,设置您的 Ansible 项目,以便敏感变量和所有其他变量都保存在单独的文件或目录中是有意义的。然后,您可以使用 ansible-vault
命令保护包含敏感变量的文件。
- 创建一个加密的文件
以下命令提示您输入新的 vault 密码。然后,它使用默认编辑器打开一个文件以存储敏感变量。
ansible-vault create vault.yml
# ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 查看一个加密的文件
以下命令提示您输入现有的 vault 密码。然后,它显示已加密的文件的敏感内容。
ansible-vault view vault.yml
# ansible-vault view vault.yml Vault password: <vault_password> my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 编辑一个加密的文件
以下命令提示您输入现有的 vault 密码。然后,它使用默认编辑器打开已加密的文件,以便您更新敏感变量。
ansible-vault edit vault.yml
# ansible-vault edit vault.yml Vault password: <vault_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 加密一个现有文件
以下命令提示您输入新的 vault 密码。然后,它会加密一个现有的未加密的文件。
ansible-vault encrypt vault.yml
# ansible-vault encrypt vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password> Encryption successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 解密一个现有文件
以下命令提示您输入现有的 vault 密码。然后,它解密一个现有的加密文件。
ansible-vault decrypt vault.yml
# ansible-vault decrypt vault.yml Vault password: <vault_password> Decryption successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更改加密文件的密码
以下命令提示您输入原始 vault 密码,然后提示输入新的 vault 密码。
ansible-vault rekey vault.yml
# ansible-vault rekey vault.yml Vault password: <vault_password> New Vault password: <vault_password> Confirm New Vault password: <vault_password> Rekey successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - playbook 中 Ansible vault 变量的基本应用
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您在 Ansible Playbook 的
vars_files
部分中使用变量(vault.yml
)读取文件,并使用与使用普通变量相同的方式使用花括号。然后,您可以使用ansible-playbook --ask-vault-pass
命令运行 playbook,并手动输入密码。或者,您可以将密码保存到单独的文件中,并使用ansible-playbook --vault-password-file /path/to/my/vault-password-file
命令运行 playbook。