Jinja2 For循环遍历YAML词典列表

时间:2019-03-20 02:43:23

标签: templates ansible jinja2 nexus

我对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

1 个答案:

答案 0 :(得分:1)

看起来不错。下面的游戏

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

给予

# 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 

带有模板

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