我在创建适用于以下嵌套结构的循环时遇到了一些问题:
第一级:
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”之类的条件)
我尝试了不同的方法,但我真的无法提出任何有用的东西......任何想法?
答案 0 :(得分:0)
只是为了更广泛的受众,我最终使用json_query过滤器设法做了我想要的。 我将第一级结构从列表(DeviceList)更改为Dictionary(DeviceDict)并使用以下json_query @
tasks:
- debug: msg: "IP: {{ item }}"
with_items: "{{ DeviceDict | json_query('*.DeviceIPs.keys(@)') }}
这将遍历DeviceDict中的所有可能的设备记录,并获取DeviceIP中的密钥,这些密钥确实是IP。
谢谢大家!