将Ansible字典传递到模板时出现问题

将Ansible字典传递到模板时出现问题,ansible,Ansible,不知这里是否有人能帮我 我在host_vars中有一个数组,其结构是这样的,因此我希望将其传递到我的模板中 network: igb0: - address: x.x.x.x netmask: 255.255.255.0 - address: x.x.x.x netmask: 255.255.255.0 - address: x.x.x.x netmask: 255.255.255.0 我试着把它放在var

不知这里是否有人能帮我

我在host_vars中有一个数组,其结构是这样的,因此我希望将其传递到我的模板中

network:
  igb0:
      - address: x.x.x.x
        netmask: 255.255.255.0
      - address: x.x.x.x
        netmask: 255.255.255.0
      - address: x.x.x.x
        netmask: 255.255.255.0
我试着把它放在vars部分,但是我不能确定它在任务的vars部分需要什么格式

vars:
    network: "{{ network }}"
在模板中添加以下内容:

{% for net in network %}
{% endfor %}
导致错误:

失败!=>{“changed”:false,“msg”:“AnsibleError:在模板化“{{network}}”时发生未经处理的异常。错误为,原始消息:

提前感谢您的帮助。

用于“将字典转换为适合循环的项目列表”。例如,播放

  vars:
    network:
      igb0:
        - address: x.x.x.x
          netmask: 255.255.255.0
        - address: y.y.y.y
          netmask: 255.255.255.0
        - address: z.z.z.z
          netmask: 255.255.255.0
  tasks:
    - template:
        src: test.j2
        dest: test.txt
使用模板

$ cat test.j2
{% for ifc in network|dict2items %}
{{ ifc.key }}
{% for ip in ifc.value %}
{{ ip.address }} {{ ip.netmask }}
{% endfor %}
{% endfor %}
给予

用于“将字典转换为适合循环的项目列表”。例如剧本

  vars:
    network:
      igb0:
        - address: x.x.x.x
          netmask: 255.255.255.0
        - address: y.y.y.y
          netmask: 255.255.255.0
        - address: z.z.z.z
          netmask: 255.255.255.0
  tasks:
    - template:
        src: test.j2
        dest: test.txt
使用模板

$ cat test.j2
{% for ifc in network|dict2items %}
{{ ifc.key }}
{% for ip in ifc.value %}
{{ ip.address }} {{ ip.netmask }}
{% endfor %}
{% endfor %}
给予