Ansible模块vmware_host_facts仅返回一个主机

时间:2018-04-17 07:11:48

标签: ansible

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

使用模块 vmware_host_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。

资源: http://docs.ansible.com/ansible/latest/modules/vmware_host_facts_module.html#vmware-host-facts

该模块不是从vCenter收集所有主机信息的正确模块吗?或者是否有一个"隐藏的技巧",我错过了?

非常感谢!

亲切的问候, 中号

2 个答案:

答案 0 :(得分:1)

我在另一个资源上得到了答案。 https://github.com/ansible/ansible/issues/43187

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

示例:

       - 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收集的这些主机名。在这里,您可以从中获取主机名。我将在不久的将来用示例剧本进行更新。

答案 1 :(得分:0)

我将这些模块与这些选项一起使用,到目前为止,如果我仅将vcenter地址放在第一个Esxi输出上,我将遇到一个问题。

registration.pushManager.subscribe(subscribeOptions);