ansible 不能使用变量

ansible cannot use variable

我创建了一个角色和一个名为 defaults/main.yml 的变量文件,其中包含以下内容:

level1:
  level2_1:
    level3_1: "value_3_1"
  level2_2:
    level3_2: "value_3_2"
    level3_3: "{{ level1.level2_1.level3_1 }} {{  level1.level2_2.level3_2  }}"

当我在任务文件中尝试 运行 时,它会抛出 An unhandled exception occurred while templating

我曾尝试更改 level3_3 行而不添加父母,但也抛出错误。

我发现唯一可行的方法是从 level3_3 中删除缩进,这不会使其成为结构的一部分。

如何在结构中编写一个类似于 level3_3 的变量而不引发错误?

设计上是不可能的。参见 Can't reference a dict key inside the same dict #50280。要么在字典外创建化合物,要么将重复值放入变量中。例如

val_A: value_3_1
val_B: value_3_2

level1:
  level2_1:
    level3_1: "{{ val_A }}"
  level2_2:
    level3_2: "{{ val_B }}"
    level3_3: "{{ val_A }} {{ val_B }}"

我更喜欢这种结构。越简单越少error-prone.