Ansible jinja2循环复杂的结构

时间:2015-11-12 08:08:48

标签: jinja2 ansible

我有这个复杂的变量:

vars:
 - data_sources:
    - source1:
         - attrA: foo1
         - attrB: bar1
    - source2:
         - attrA: foo2
         - attrB: bar2

我想用jinja2循环结构化变量 生成一些xml:

{% for d in {{data_sources}} %}
    ...
{% endfor %}

但是我在for循环的第一行得到error: expected token ':', got '}'", 'failed': True}。知道为什么和解决方案?感谢

UPADTE 我对原始示例进行了一些更正。

1 个答案:

答案 0 :(得分:4)

您不能在jinja指令中使用花括号,而只能在正文中使用:

{% for d in data_sources %}
   {{ d['attrA'] }}
{% endfor %}

您的data_sources也不是它的意思:

vars:
  data_sources:
   - source1:
       attrA: foo1
       attrB: bar1
   - source2:
       attrA: foo2
       attrB: bar2