首页 > 解决方案 > Ansible:如何将多个密码文件传递给剧本

问题描述

当我运行 Ansible playbook 时,如何在命令行上传递多个密码文件?

我想运行这个:

ansible-playbook --vault-password-file /path/to/vault-password-file my_playbook.yml

但我想传递多个密码文件,因为我在剧本中使用了多个变量,这些变量使用存储在不同密码文件中的不同密码。

我怎么做?

(我使用的是 Ansible 2.9.16,但如果有帮助可以升级到 2.10.x,我不受任何特定版本的约束)

标签: ansible

解决方案


您可以利用 vault-ids 概念(在 Ansible v2.4 中引入)来解决您的问题。下面的示例命令,

ansible-playbook --vault-id dev@dev-password --vault-id prod@prompt site.yml

dev-> 是保管库 ID

dev-password-> 指向要使用的密码

prod-> 另一个保管库 ID

prompt-> 提示输入密码

用于完整工作流程和设置的 Ansible 文档:https ://docs.ansible.com/ansible/2.6/user_guide/vault.html#vault-ids-and-multiple-vault-passwords

使用现有密码文件设置保险柜 ID

  1. Ansible 配置文件设置

vault_identity_list = vaultid1@~/path_to_pass1_file/.pass1 , vaultid2@~/path_to_pass2_file/.pass2

  1. 使用相应的 Vaultid 加密文件

ansible-vault encrypt --encrypt-vault-id vaultid1 file_to_be_encrypted_1 ansible-vault encrypt --encrypt-vault-id vaultid2 file_to_be_encrypted_2

  1. 运行你的剧本,它会自动从中选择配置ansible.cfg并解密内容。

推荐阅读