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