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

Ansible查询VMware指定集群ESX主机列表报错及解决方案咨询

报错原因

你遇到的报错是Ansible 2.9版本vmware_host_facts模块的固有设计导致的:

  • 该模块的定位是查询单台ESXi主机的详细信息,对接vCenter使用时必须传入esxi_hostname参数指定目标主机,2.9版本的官方文档漏标了该参数在对接vCenter场景下的必填要求,高版本文档已补充该说明。
  • 你使用的pyvmomi 7.0与Ansible 2.9的兼容性正常,报错和环境依赖无关。
替代实现方法

有两种成熟方案可以直接获取指定集群下的ESX主机列表,无需指定单台主机名:

方案1:复用已可用的vmware_cluster_info模块

该模块返回的集群信息中自带关联主机列表,示例用法:

- name: 获取指定集群的配置信息
  vmware_cluster_info:
    hostname: "{{ vcenter_server }}"
    username: "{{ vcenter_user }}"
    password: "{{ vcenter_pass }}"
    validate_certs: false
    datacenter: "{{ 目标数据中心变量 }}"
    cluster_name: "{{ 目标ESX集群变量 }}"
  register: cluster_result

你需要的可用主机列表存储在cluster_result.clusters[你的集群名称].hosts字段中,可直接过滤维护模式、离线状态的主机。

方案2:使用vmware_host_info模块批量查询

Ansible 2.9版本已内置vmware_host_info模块,支持按集群批量拉取所有主机的完整信息,示例用法:

- name: 批量获取指定集群下所有ESXi主机信息
  vmware_host_info:
    hostname: "{{ vcenter_server }}"
    username: "{{ vcenter_user }}"
    password: "{{ vcenter_pass }}"
    validate_certs: false
    datacenter: "{{ 目标数据中心变量 }}"
    cluster: "{{ 目标ESX集群变量 }}"
  register: host_list_result

返回的host_list_result.hosts为结构化的主机信息集合,包含主机状态、硬件配置、网络配置等全量数据。
注:2.9版本调用该模块时如果出现标签相关异常,可添加show_tag: no参数规避。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:57:01