You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选并打印Ansible模块community.vmware.vmware_host_disk_info的指定属性

解决方法

原Playbook存在两处关键问题:

  • 变量引用错误:不应直接调用模块名community.vmware.vmware_host_disk_info,需使用注册的结果变量host_vmhbas
  • 结构遍历错误:模块返回的current是磁盘对象列表,需遍历每个对象提取属性,而非直接取索引[0]

以下是两种修正后的实现方式:

方式一:用json_query批量提取格式化为字典列表

- name: 收集ESXi主机磁盘信息
  community.vmware.vmware_host_disk_info:
    hostname: '{{ vhostname }}'
    username: '{{ vusername }}'
    password: '{{ vpassword }}'
    validate_certs: false
  delegate_to: localhost
  register: host_disks

- name: 提取canonical_name与device_ctd_list
  debug:
    msg: "{{ host_disks.results[0].current | json_query('[].{canonical_name: canonical_name, device_ctd_list: device_ctd_list}') }}"

方式二:用loop逐个输出指定格式字符串

- name: 收集ESXi主机磁盘信息
  community.vmware.vmware_host_disk_info:
    hostname: '{{ vhostname }}'
    username: '{{ vusername }}'
    password: '{{ vpassword }}'
    validate_certs: false
  delegate_to: localhost
  register: host_disks

- name: 打印每个磁盘的canonical_name和device_ctd_list
  debug:
    msg: "'device_ctd_list': {{ item.device_ctd_list }}, 'canonical_name': '{{ item.canonical_name }}'"
  loop: "{{ host_disks.results[0].current }}"

说明

  • 两种方式都能输出你期望的格式,方式一返回结构化的字典列表,方便后续处理;方式二直接输出指定格式的字符串
  • 模块返回的results[0].current是当前主机的所有磁盘列表,每个磁盘对象直接包含canonical_name和device_ctd_list属性,无需额外层级

内容的提问来源于stack exchange,提问作者Amaresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:32:20