Ansible-如何将两个单独的列表合并成词典列表

时间:2018-08-17 15:06:16

标签: ansible

我有两个单独的列表。第一个是Ansible收集的网络接口列表:

"ansible_interfaces": [
        "ens32",
        "ens34"
    ],

第二个是我在清单中手动定义的IP地址列表:

host_ipv4_list:
  - "192.168.0.1"
  - "192.168.1.1"

我的目的是将这两个列表结合起来,以获得具有如下键和值的字典:

host_network_info:
  - { "interface": "ens32", "ip": "192.168.0.1" }
  - { "interface": "ens34", "ip": "192.168.1.1" }

什么是最好的方法?

1 个答案:

答案 0 :(得分:5)

Zip这两个列表,并将结果列表元素用于create dictionaries。将字典组合成一个循环:

set_fact:
  host_network_info: "{{ host_network_info | default([]) + [dict(interface=item[0], ip=item[1])] }}"
loop: "{{ ansible_interfaces | zip(host_ipv4_list) | list }}"