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.
我创建了一个角色和一个名为 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.