有没有办法使用 Ansible 获取 vSphere 清单树?
Is there a way to get the vSphere Inventory Tree using Ansible?
我已经阅读了很多关于 VMWare 模块和插件的 Ansible 文档,但我仍然找不到一种方法来做我认为应该相对简单的事情。我正在寻找一个 vCenter 并提取清单树,所以我知道 vCenter 中的所有数据中心,每个数据中心中有哪些集群以及每个集群中有哪些虚拟机,但我似乎找不到办法这个。
我希望收集和整理有关 vCenter 上每个 VM 的信息,我几乎可以使用动态清单插件 community.vmware.vmware_vm_inventory 来做到这一点。但是,none 它收集的关于每个 VM 的数据似乎包括每个 VM 所在的数据中心和集群。
一些 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"
]
我已经阅读了很多关于 VMWare 模块和插件的 Ansible 文档,但我仍然找不到一种方法来做我认为应该相对简单的事情。我正在寻找一个 vCenter 并提取清单树,所以我知道 vCenter 中的所有数据中心,每个数据中心中有哪些集群以及每个集群中有哪些虚拟机,但我似乎找不到办法这个。
我希望收集和整理有关 vCenter 上每个 VM 的信息,我几乎可以使用动态清单插件 community.vmware.vmware_vm_inventory 来做到这一点。但是,none 它收集的关于每个 VM 的数据似乎包括每个 VM 所在的数据中心和集群。
一些 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"
]