在使用Ansible时,我'm trying to use a vaulted vars file to store private variables, and then using those in another vars file, in the same role. (The idea from ' Vault伪叶加密'here . )
例如我有一个标准的vars文件, roles/myrole/vars/main.yml
:
---
my_variable: '{{ my_variable_vaulted }}'
然后加密一个, roles/myrole/vars/vaulted_vars.yml
:
---
my_variable_vaulted: 'SECRET!'
但是当我运行剧本时,我总是得到“错误!错误!”my_variable_vaulted'未定义“' .
我试过没有加密第二个文件,以确保它不是加密的问题,我得到相同的错误 .
2 回答
my_variable_vaulted
wasn 't available was because I hadn' t包含变量文件的原因 . 我自动选择了'd assumed that all files in a role' svars/
目录,但我认为这只是vars/main.yml
的情况 .因此,为了使拱形变量可用于角色中的所有任务,我在
roles/myrole/tasks/main.yml
之前在所有任务之前添加了这个:这不是在ansibles中处理保险库的最佳方式 . 在vault documentation for ansible中概述了更好的方法 . 所以你会在_2658276中为环境创建你的基本变量:
然后在您的
inventories/main
中,您决定哪些主机应加载哪个保险库文件以满足此变量 . 例如,你可以在你的_2658279中拥有它:然后ansible将自动从
group_vars
分别获取production_vault.yml
或development_vault.yml
,具体取决于哪个环境框所属 . 然后你可以像以前一样在你的角色/剧本中使用my_variable
,而不必担心从正确的位置获取它 .