Ansible使用jmesquery筛选嵌套JSON中符合VLAN条件的接口名称
你当前的查询写法先提取了value字段,直接丢失了存储接口名的key字段,因此无法获取接口名称。正确的查询逻辑是先筛选符合条件的列表项,再提取对应key字段即可。
调整后的完整代码如下:
- name: PRINT debug: msg: "{{ jsondata.interfaces | dict2items | json_query( query ) }}" vars: query: >- [?value.vlan=='1'].key
查询逻辑说明
[?value.vlan=='1']:过滤dict2items生成的列表,仅保留value下vlan字段等于"1"的元素.key:提取所有符合条件元素的key字段值(即接口名称),最终输出结果就是你期望的列表格式['GigabitEthernet0/0', 'GigabitEthernet0/1']
内容的提问来源于stack exchange,提问作者sTz
相关产品推荐
相关产品推荐

