如何在Ansible中使用嵌套变量(字典键)?

时间:2016-02-12 16:54:51

标签: ansible

如果没有明确表达,请随意建议或直接编辑我的问题。

我在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}}

1 个答案:

答案 0 :(得分:3)

你不能。这确实在早期的Ansible版本中有效,但Ansible现在可以防止这种情况。

问题是你是否试图引用一个以某种方式正在定义的对象。

this bug report on Github中,一些用户正在讨论这个话题。

至于解决方案......如何将两者结合起来。像这样:

key1: &key1 "child_value1"

parent_key:
  child_key1: *key1
  child_key2: "Resolving: {{ key1 }}"

是的,这很难看,但至少会阻止你重复这些值。