试图使用ansible-vault来保存敏感密码,但我找不到在剧本中检索该密码的正确语法。
医生提到(强调我的):
接下来,将所有敏感变量复制到Vault文件中,并在这些变量前面加上Vault_。 您应使用jinja2语法调整vars文件中的变量,使其指向匹配的vault_变量,并确保该库文件已被库加密。
我创建了保管库,但是我对yml中的jinja2并不十分熟悉,无法为vars.yml文件找到正确的语法。
任何人都可以在语法上帮助如何在剧本中指向变量“ X”以获取文件库文件中的变量“ vault_X”的值?
答案 0 :(得分:0)
您是否可以尝试使用import_vars模块将存储在加密文件中的vars导入到您的剧本中?然后,在剧本本身中像平常一样引用它们。您只需要添加
-询问保险库通行证
运行剧本时。
答案 1 :(得分:0)
这是一个比较老的问题,但我对同一件事感到好奇。我在Ansible文档中找不到它,因此我遵循此tutorial制定了一个解决方案,该解决方案的信息比文档更多。
jinja2语法为:"{{ [var_name] }}"
(带引号)。在实践中看起来像什么:
对于具有内容的vault.yml文件:
---
#vault.yml
vault_ex_pw: password
与vars.yml文件位于同一目录中,语法为:
---
#vars.yml
ex_pw: "{{ vault_ex_pw }}"
这应该为您提供所需的结果,我认为这是Ansible文档所引用的“最佳实践”。请注意,您将需要在剧本中的某些地方引用这些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