如果没有明确表达,请随意建议或直接编辑我的问题。
我在Ansible中声明了一些嵌套变量,如下所示:
# vars/main.yml
parent_key:
child_key1: "child_value1"
child_key2: "Resolving: {{ child_key1 }}"
但Ansible说:child_key1 not defined
或类似的东西。
但是,这也不起作用:
# vars/main.yml
parent_key:
child_key1: "child_value1"
child_key2: "Resolving: {{ parent_key.child_key1 }}"
Ansible说Could not template ...
。
Ansible 1.9.4和Ansible 2.0.0.2的结果几乎相同。
当child_key1
嵌套在child_key2
下时,如何在parent_key
中使用# vars/main.yml (without nesting at all)
child_key1: "child_value1"
child_key2: "Resolving: {{ child_key1 }}"
的值?
请注意,没有嵌套键的相同概念可以正常工作:
{{1}}
答案 0 :(得分:3)
你不能。这确实在早期的Ansible版本中有效,但Ansible现在可以防止这种情况。
问题是你是否试图引用一个以某种方式正在定义的对象。
在this bug report on Github中,一些用户正在讨论这个话题。
至于解决方案......如何将两者结合起来。像这样:
key1: &key1 "child_value1"
parent_key:
child_key1: *key1
child_key2: "Resolving: {{ key1 }}"
是的,这很难看,但至少会阻止你重复这些值。