Ansible-将变量指向库中变量的语法

时间:2019-04-04 14:27:23

标签: ansible ansible-vault

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

医生提到(强调我的):

  

接下来,将所有敏感变量复制到Vault文件中,并在这些变量前面加上Vault_。 您应使用jinja2语法调整vars文件中的变量,使其指向匹配的vault_变量,并确保该库文件已被库加密。

我创建了保管库,但是我对yml中的jinja2并不十分熟悉,无法为vars.yml文件找到正确的语法。

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

2 个答案:

答案 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