Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在第二个var文件中使用一个Ansible var文件中的变量_Ansible_Ansible Vault - Fatal编程技术网

在第二个var文件中使用一个Ansible var文件中的变量

在第二个var文件中使用一个Ansible var文件中的变量,ansible,ansible-vault,Ansible,Ansible Vault,在使用Ansible时,我尝试使用Vault中的vars文件来存储私有变量,然后在另一个vars文件中以相同的角色使用这些变量。(来自“Vault伪叶加密”的想法。) e、 g.我有一个标准的vars文件,roles/myrole/vars/main.yml: --- my_variable: '{{ my_variable_vaulted }}' --- my_variable_vaulted: 'SECRET!' 然后是一个加密的,roles/myrole/vars/vaulted_va

在使用Ansible时,我尝试使用Vault中的vars文件来存储私有变量,然后在另一个vars文件中以相同的角色使用这些变量。(来自“Vault伪叶加密”的想法。)

e、 g.我有一个标准的vars文件,
roles/myrole/vars/main.yml

---
my_variable: '{{ my_variable_vaulted }}'
---
my_variable_vaulted: 'SECRET!'
然后是一个加密的,
roles/myrole/vars/vaulted_vars.yml

---
my_variable: '{{ my_variable_vaulted }}'
---
my_variable_vaulted: 'SECRET!'
但是当我运行剧本时,我总是得到“ERROR!ERROR!”我的“变量”未定义


我在没有加密第二个文件的情况下尝试了它,以确保它不是加密问题,我得到了相同的错误。

这不是在ansibles中处理vault的最佳方法。中概述了更好的方法。因此,您可以在
组中为环境创建基本变量\u vars/all.yml
,如下所示:

my_variable: {{ vault_my_variable }}
然后在
inventory/main
中,决定哪些主机应加载哪个vault文件以满足此变量。例如,您可以在
库存/main
中使用:

[production:children]
myhost1

[development:children]
myhost2

[production_vault:children]
production

[development_vault:children]
development

然后ansible将分别从
组变量
自动获取
生产_vault.yml
开发_vault.yml
,具体取决于所属的环境框。然后,您可以像以前一样在角色/剧本中使用
my_变量
,而不必担心从正确的位置获取它

之所以
my_variable\u vault
不可用,是因为我没有包含变量文件。我假设角色的
vars/
目录中的所有文件都是自动拾取的,但我认为只有
vars/main.yml
才是这种情况

因此,为了使Vault中的变量可用于角色中的所有任务,在
roles/myrole/tasks/main.yml
中,我在所有任务之前添加了以下内容:

- include_vars: vars/vaulted_vars.yml

这听起来与我正在做的类似,只是文件在
组中而不是在角色中。我目前没有任何组,因此我将尝试解决如何更改这些组。@PhilGyford组是组织变量的一种很好的方法,因为要更改值,您必须到一个地方,并且可以在不同的角色/剧本之间安全地重复使用它们。然后,它将释放您的角色
vars
defaults
,用于只与该范围相关而不与其他内容相关的内容。谢谢。这些VAR肯定只在一个角色中使用,这就是为什么我把它们放在那里。奇怪。。。我不知道为什么将这两个var文件从
roles/myrole/vars/
移动到
group\u vars/webserver/
可以让事情顺利进行,但确实如此!这似乎不是我设置的最佳地点,但如果它起作用,它就会起作用。我可能说得太快了。。。我不认为该角色的任务现在正在接受这些变量中的任何一个。过几天我得再谈这个问题。是的,这是真的。对于所有类型的角色文件夹,只有main.yml被加载:变量、默认值、任务、元、处理程序。