Jinja2 For 遍历 YAML 字典列表

Jinja2 For Loop over a YAML List of Dictionaries

我是 Jinja2 的新手,我有一个问题,无论我尝试什么都无法解决。我正在尝试使用 Jinja2 模板和我创建的一些变量文件为设备创建配置文件。当我为我的 YAML 变量文件指定字典列表时,我似乎根本无法让它工作。

模板:

{% for id in VLANS %}
vlan {{ id.id }}
  name {{ id.name }}
  vn-segment {{ id.vni }}
{% endfor %}

可变文件:

VLANS:
  - id: 9
    name: "VLAN9"
    vni: 109
  - id: 10
    name: "VLAN10"
    vni: 110
  - id: 11
    name: "VLAN11"
    vni: 111
  - id: 12
    name: "VLAN12"
    vni: 112

看起来不错。下面的戏

    - name: Template
      template:
        src: template.j2
        dest: test.txt

给予

    shell> cat test.txt 
    vlan 9
      name VLAN9
      vn-segment 109
    vlan 10
      name VLAN10
      vn-segment 110
    vlan 11
      name VLAN11
      vn-segment 111
    vlan 12
      name VLAN12
      vn-segment 112 

使用模板

    shell> cat template.j2
    {% for item in VLANS %}
    vlan {{ item.id }}
      name {{ item.name }}
      vn-segment {{ item.vni }}
    {% endfor %}