Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Variables 如何在Ansible中引用var文件列表中的变量?_Variables_Reference_Ansible_Yaml - Fatal编程技术网

Variables 如何在Ansible中引用var文件列表中的变量?

Variables 如何在Ansible中引用var文件列表中的变量?,variables,reference,ansible,yaml,Variables,Reference,Ansible,Yaml,我有一个变量文件,其中包含如下格式的列表: VAR: - a: 1 b: 2 c: 3 - a: 4 b: 5 c: 6 在这里,我想添加另一个引用列表中的子变量的变量,例如: VAR: - a: 1 b: 2 c: 3 d: "{{ VAR.0.a }}" - a: 4 b: 5 c: 6 d: "{{ VAR.1.a }}" 但它们没有起作用 我试过{VAR[0].a}{{VAR[a]}{

我有一个变量文件,其中包含如下格式的列表:

VAR:
  - a: 1
    b: 2
    c: 3
  - a: 4 
    b: 5
    c: 6
在这里,我想添加另一个引用列表中的子变量的变量,例如:

VAR:
  - a: 1
    b: 2
    c: 3
    d: "{{ VAR.0.a }}"
  - a: 4 
    b: 5
    c: 6
    d: "{{ VAR.1.a }}"
但它们没有起作用

我试过{VAR[0].a}{{VAR[a]}{{VAR.0.a}}等等, 但没有一个成功


如何引用列表中的子元素?

我认为适当的方法是
{{VAR[0][“a”]}
。但你想做的事情很有可能行不通

原因是“胡子不叠”。如果在代码“VAR.d”的某个地方使用,它将被扩展为字符串“VAR[0][“a”]”(不是表达式,而是文字字符串)。Ansible使用惰性模板化,将模板扩展延迟到最后一刻。它可以被
set\u fact
模块部分覆盖,但我怀疑它在这种情况下是否有用

我的建议是避免这样的提及

但这里有一个YAML的解救技巧。它与Ansible无关,但是它在Ansible中工作

YAML允许使用对旧值的引用

VAR:
  - a: &refname 1
    b: 2
    c: 3
    d: *refname
  - a: &ref2 4 
    b: 5
    c: 6
    d: *ref2