Ansible - 循环遍历嵌套字典列表

时间:2017-11-27 11:56:49

标签: loops nested ansible nested-loops

我在创建适用于以下嵌套结构的循环时遇到了一些问题:

第一级:

DeviceList = [Device1, Device2, Device3, etc..]

第二级:每个设备都是一个字典结构如下:

Device1 = {
    "description" : "string",
    "Id": "Value",
    "DeviceIPs": Dictionary
}

第3级:DeviceIPs是一个字典,其中密钥是分配给转换为字符串的设备的IP之一。

"DeviceIPs" = {
    "IP1": { "description": "string1", "interface": "eth0", "mask":"subnet_mask1" },
    "IP2": { "description": "string2", "interface": "eth1", "mask":"subnet_mask2" },
    "IP3": { "description": "string3", "interface": "eth2", "mask":"subnet_mask3" },
    etc..
}

理想情况下,我需要为“DeviceIPs”的键创建一个循环,这样: “IP1” “IP2” “IP3” 可能基于内部值(例如匹配诸如interface ==“eth1”之类的条件)

我尝试了不同的方法,但我真的无法提出任何有用的东西......任何想法?

1 个答案:

答案 0 :(得分:0)

只是为了更广泛的受众,我最终使用json_query过滤器设法做了我想要的。 我将第一级结构从列表(DeviceList)更改为Dictionary(DeviceDict)并使用以下json_query @

tasks:
  - debug: msg: "IP: {{ item }}" 
    with_items: "{{ DeviceDict | json_query('*.DeviceIPs.keys(@)') }}

这将遍历DeviceDict中的所有可能的设备记录,并获取DeviceIP中的密钥,这些密钥确实是IP。

谢谢大家!