如何通过动态键遍历Ansible中VMware DVPG结果获取portgroup_name
Ansible批量获取DVPG所有portgroup_name的方法
针对community.vmware.vmware_dvs_portgroup_info模块返回的dvs_portgroup_info字典(含动态键),可以用两种方法批量提取所有portgroup_name:
方法一:通过loop遍历字典值合并列表
利用loop遍历字典的所有值(每个值对应包含portgroup信息的数组),逐个提取portgroup_name并合并到统一列表:
- name: 批量提取所有DVPG的portgroup_name set_fact: all_portgroup_names: "{{ all_portgroup_names | default([]) + item | map(attribute='portgroup_name') | list }}" loop: "{{ dvpg_var.dvs_portgroup_info.values() }}"
方法二:用json_query一次性提取(更简洁)
先通过dict2items把字典转成键值对列表,再用json_query直接筛选出所有portgroup_name:
- name: 用json_query批量提取portgroup_name set_fact: all_portgroup_names: "{{ dvpg_var.dvs_portgroup_info | dict2items | json_query('[].value[].portgroup_name') }}"
验证结果
可以用debug模块查看提取到的所有portgroup名称:
- name: 打印所有portgroup_name debug: var: all_portgroup_names
内容的提问来源于stack exchange,提问作者Bizargorri
相关产品推荐
相关产品推荐

