Ansible模块vmware\u主机\u事实仅返回一台主机

Ansible模块vmware\u主机\u事实仅返回一台主机,ansible,Ansible,我正在使用Ansible VMWare模块,并尝试从vCenter获取ESXi主机的所有信息 使用模块vmware\u host\u facts应该是可能的 但是,当我使用以下配置运行Playbook时,我只返回一个主机的信息,而不是所有主机的信息。此vCenter中大约有20台主机 剧本: - name: Gather vmware host facts vmware_host_facts: hostname: vCenter_IP username: username

我正在使用Ansible VMWare模块,并尝试从vCenter获取ESXi主机的所有信息

使用模块vmware\u host\u facts应该是可能的

但是,当我使用以下配置运行Playbook时,我只返回一个主机的信息,而不是所有主机的信息。此vCenter中大约有20台主机

剧本:

- name: Gather vmware host facts
  vmware_host_facts:
    hostname: vCenter_IP
    username: username
    password: password
  register: host_facts
  delegate_to: localhost
在文档中,它告诉我,主机名也可以是vCenter IP

资源:

该模块不是从vCenter收集所有主机信息的正确模块吗?还是有一个“隐藏的把戏”,而我却错过了

非常感谢

亲切问候,,
M

我将此模块与这些选项一起使用,到目前为止,如果我输入vcenter地址,它只会给我第一个Esxi输出,我会遇到一个问题

- name: Somethign.
  vmware_host_facts:
    hostname: '{{ vcenter_hostname }}'
    username: '{{ vcenter_user }}'
    password: '{{ vcenter_pass }}'
    validate_certs: no
  register: all_cluster_hosts_facts
  delegate_to: localhost
- debug: var=all_cluster_hosts_facts

我得到了另一个资源的答案。

基本上,您必须将主机名作为列表添加到任务中

例如:

       - name: Gather vmware host facts
         vmware_host_facts:
         hostname: "{{ item.esxi_hostname }}"
         username: "{{ item.esxi_user }}"
         password: "{{ item.esxi_pass }}"
         validate_certs: no
      register: host_facts
      delegate_to: localhost
      with_items:
         - {esxi_hostname: hostname_1, esxi_user: username_host_1, esxi_pass: pass_host_1}
         - {esxi_hostname: hostname_2, esxi_user: username_host_2, esxi_pass: pass_host_2}
您可以使用另一个模块收集这些主机名—vmware_vm_facts。在这里您可以从中获取主机名。在不久的将来,我将用一个示例剧本来更新它