这个问题通常出现在使用jinja2模板时,将set_fact语句放在了循环中的if语句中。
例如,下面的playbook希望在循环中设置一个变量“my_var”,如果循环变量“my_list”等于“some_value”。
tasks:
然而,上述代码并不会按照预期工作,因为循环中的if语句并不会计算set_fact语句。为了解决这个问题,我们需要将循环中的if语句移动到set_fact语句外面,如下所示:
tasks:
这里,我们将条件判断移到了vars字段中,并且在when条件语句中使用了变量“some_value”的值。这样,就可以正确的设置“my_var”变量了。