Bro*_*oke 4 variables yaml reference ansible
我有一个变量文件,其中包含如下格式的列表:
VAR:
- a: 1
b: 2
c: 3
- a: 4
b: 5
c: 6
Run Code Online (Sandbox Code Playgroud)
在这里,我想添加另一个引用列表中子变量的变量,例如:
VAR:
- a: 1
b: 2
c: 3
d: "{{ VAR.0.a }}"
- a: 4
b: 5
c: 6
d: "{{ VAR.1.a }}"
Run Code Online (Sandbox Code Playgroud)
但他们没有工作。
我尝试了 {{ VAR[0].a }} {{ VAR[a] }} {{ VAR.0.a }} 等,但没有一个起作用。
如何引用列表中的子元素?
我认为正确的方法是{{ VAR[0]["a"] }}。但你想做的事情很有可能行不通。
原因是“胡须不堆积”。如果您在代码中的某个位置使用“VAR.d”,它将扩展为字符串“VAR[0][“a”]”(不是表达式,而是文字字符串)。Ansible 使用惰性模板化,将模板扩展延迟到最后可能的时刻。它可以被set_fact模块部分覆盖,但我怀疑它在这种情况下会有帮助。
我的建议是避免此类引用。
但这里有一个 YAML 技巧可以解决这个问题。它与 Ansible 无关,但它可以在 Ansible 中运行。
YAML 允许使用对旧值的引用。
VAR:
- a: &refname 1
b: 2
c: 3
d: *refname
- a: &ref2 4
b: 5
c: 6
d: *ref2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2177 次 |
| 最近记录: |