1

尝试使用 ansible-vault 来保存敏感密码,但我在剧本中找不到正确的语法来检索它。

文档提到(强调我的):

接下来,将所有敏感变量复制到 Vault 文件中,并为这些变量添加前缀 vault_。您应该使用 jinja2 语法调整 vars 文件中的变量以指向匹配的 vault_ 变量,并确保 vault 文件是 vault 加密的。

我创建了 Vault,但我对 yml 中的 jinja2 真的不够熟悉,无法为 vars.yml 文件找到正确的语法。

任何人都可以提供有关如何在剧本中指向变量“X”以获取保险库文件中变量“vault_X”的值的语法帮助?

4

2 回答 2

1

这是一个较老的问题,但我对同一件事感到好奇。我在 Ansible 文档中找不到它,所以我按照本教程制定了一个解决方案,该教程比文档有更多信息。

jinja2 语法是:("{{ [var_name] }}"带引号)。这在实践中是什么样的:

对于包含内容的 vault.yml 文件:

---
#vault.yml
vault_ex_pw: password

在与 vars.yml 文件相同的目录中,语法为:

---
#vars.yml
ex_pw: "{{ vault_ex_pw }}"

这应该会给您想要的结果,我相信这是 Ansible 文档引用的“最佳实践”。请注意,您需要在 playbook 中的某处引用这些 var 文件,以便 jinja2 变量指向工作(否则您将收到错误:)The error was: 'vault_ex_pw' is undefined。一种方法是:

#ex_playbook.yml
[your code here]
  vars_files:
    - /path/to/ansible/directory/group_vars/vars.yml
    - /path/to/ansible/directory/group_vars/vault.yml
于 2019-12-11T14:18:08.387 回答
0

您可以不尝试使用 import_vars 模块将存储在加密文件中的变量导入您的剧本吗?然后在剧本本身中,您可以像往常一样引用它们。你只需要添加

--询问保险库通行证

运行你的剧本时。

于 2019-04-04T15:51:53.940 回答