【问题标题】:Is there a way to get the vSphere Inventory Tree using Ansible?有没有办法使用 Ansible 获取 vSphere 清单树?
【发布时间】:2021-02-16 11:44:04
【问题描述】:

我已经阅读了大量关于 VMWare 模块和插件的 Ansible 文档,但我仍然找不到一种方法来做我认为应该相对简单的事情。我正在寻找一个 vCenter 并提取清单树,所以我知道 vCenter 中的所有数据中心,每个数据中心中有哪些集群以及每个集群中有哪些虚拟机,但我似乎找不到办法这个。

我希望收集和整理有关 vCenter 上每个 VM 的信息,我几乎可以使用动态清单插件 community.vmware.vmware_vm_inventory 来完成。但是,它收集的有关每台虚拟机的数据似乎都不包括每台虚拟机所在的数据中心和集群。

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

我错过了什么吗?有没有办法使用 Ansible 中的 VMWare 模块和插件来获取 vSphere Web 客户端提供的清单树结构?

【问题讨论】:

    标签: ansible vmware vsphere


    【解决方案1】:

    使用 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"
        ]
    

    【讨论】:

    • 我不确定我之前没有看到这个模块如何获取数据中心、集群和 ESXI 主机名,但它确实给了我想要的东西。非常感谢!
    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2017-12-10
    • 1970-01-01
    相关资源
    最近更新 更多