是否有一种方法可以使用Ansible获取vSphere资源清册树



我读了很多关于VMWare模块和插件的Ansible文档,但我仍然找不到一种方法来做我认为应该相对简单的事情。我想使用vCenter并提取资源清册树,这样我就知道vCenter中的所有数据中心,每个数据中心中有哪些集群,每个集群中有哪些虚拟机,但我似乎找不到实现这一点的方法。

我希望收集和整理vCenter上每个虚拟机的信息,这几乎可以通过动态清单插件community.vmwware.vmware_VM_inventory来完成。然而,它收集的每个虚拟机数据似乎都不包括每个虚拟机所在的数据中心和集群。

某些VMWare模块要求您指定VM所在的数据中心或群集,因此如果没有这些信息,就无法完全管理vCenter。仍然需要外部信息源,以便能够将整个vCenter转换为所需状态。

我是不是错过了什么?是否有某种方法可以使用Ansible中的VMWare模块和插件获得vSphere web客户端提供的清单树结构?

使用vmware_vm_info模块怎么样
vmware_vm_info可以获取每个vm的归属信息。

---
- name: Example Playbook
hosts: localhost
gather_facts: false
tasks:
- name: Gather all vm info
vmware_vm_info:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: false
register: gather_all_vm_info_result
- debug:
msg:
- "VM Name{% raw %}:{% endraw %} {{ item.guest_name }}"
- "Datacenter Name{% raw %}:{% endraw %} {{ item.datacenter }}"
- "Cluster Name{% raw %}:{% endraw %}: {{ item.cluster }}"
- "ESXi Name{% raw %}:{% endraw %} {{ item.esxi_hostname }}"
- "Folder Name{% raw %}:{% endraw %} {{ item.folder }}"
loop: "{{ gather_all_vm_info_result.virtual_machines }}"

输出示例

"msg": [
"VM Name: test_vm1",
"Datacenter Name: DC",
"Cluster Name:: Cluster",
"ESXi Name: esxi-host.example.com",
"Folder Name: /DC/vm"
]