ansible不能使用变量

ansible不能使用变量,ansible,roles,Ansible,Roles,我创建了一个名为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 }}" 当我尝试在任务文件中运

我创建了一个名为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  }}"
当我尝试在任务文件中运行时,它会抛出一个在模板化时发生的未处理异常

我尝试在不添加参数的情况下更改level3_3行,但也会抛出一个错误

我发现唯一可行的方法是从level3_3中移除压痕,这不会使其成为结构的一部分


如何在结构内部合成类似于level3_3的变量而不抛出错误?

设计上是不可能的。看见要么在字典之外创建复合词,要么将重复值放入变量中。比如说

值A:值3\u 1 值B:值3\u 2 第1级: 2级1: 级别3_1:{{val_A}} 二级(二级): 级别3_2:{{val_B} 第三级:{{val_A}{{val_B}}
我更喜欢这种结构。它更简单,也更不容易出错。

这在设计上是不可能的。看见要么在字典之外创建复合词,要么将重复值放入变量中。比如说

值A:值3\u 1 值B:值3\u 2 第1级: 2级1: 级别3_1:{{val_A}} 二级(二级): 级别3_2:{{val_B} 第三级:{{val_A}{{val_B}}
我更喜欢这种结构。它更简单,更不容易出错。

这是设计上不可能做到的。看见在字典之外创建复合词。@VladimirBotka很抱歉发现这一点。farWell的命名和结构会更好,我认为问题会更小。我在答案中加了一个例子。50280中还建议了其他解决方案。如果您有任何其他用例,请随时发布它。我相信会有一个温和的解决方案。这是不可能的设计。看见在字典之外创建复合词。@VladimirBotka很抱歉发现这一点。farWell的命名和结构会更好,我认为问题会更小。我在答案中加了一个例子。50280中还建议了其他解决方案。如果您有任何其他用例,请随时发布它。我相信会有一个温和的解决方案。