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

Ansible - Syntax to point a variable to a variable in a vault

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

doc 提到(强调我的):

Next, copy all of the sensitive variables over to the vault file and prefix these variables with vault_. You should adjust the variables in the vars file to point to the matching vault_ variables using jinja2 syntax, and ensure that the vault file is vault encrypted.

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

任何人都可以帮助了解如何在剧本中指向变量 'X' 以获取保险库文件中变量 "vault_X" 的值的语法?

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

--ask-vault-pass

当运行你的剧本时。

这是一个较老的问题,但我对同一件事很好奇。我在 Ansible 文档中找不到它,所以我按照这个 tutorial 找到了一个解决方案,它比文档提供了更多信息。

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

vault.yml 文件的内容为:

---
#vault.yml
vault_ex_pw: password

与您的 vars.yml 文件位于同一目录中,语法为:

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

这应该会给你想要的结果,我相信这是 "best practice" 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