Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 带循环的可解析vmware\u主机\u事实_Ansible_Jinja2 - Fatal编程技术网

Ansible 带循环的可解析vmware\u主机\u事实

Ansible 带循环的可解析vmware\u主机\u事实,ansible,jinja2,Ansible,Jinja2,我正在尝试获取跨多个ESXi主机的所有数据存储的列表(它们都位于不同的vCenter中,因此我必须使用带字典的循环来获取ESXi主机的正确vCenter,否则主机不会出现) 我的问题是试图理解输出。我读过文档,但似乎找不到一个明确的方法来获得我想要的输出。从下面的文档中作为一个工作示例来考虑以下问题:在一个ESXI主机上。 - name: Gather vmware host facts from vCenter vmware_host_facts: hostname: "{{ vc

我正在尝试获取跨多个ESXi主机的所有数据存储的列表(它们都位于不同的vCenter中,因此我必须使用带字典的循环来获取ESXi主机的正确vCenter,否则主机不会出现)

我的问题是试图理解输出。我读过文档,但似乎找不到一个明确的方法来获得我想要的输出。从下面的文档中作为一个工作示例来考虑以下问题:在一个ESXI主机上。
- name: Gather vmware host facts from vCenter
  vmware_host_facts:
    hostname: "{{ vcenter_server }}"
    username: "{{ vcenter_user }}"
    password: "{{ vcenter_pass }}"
    esxi_hostname: "{{ esxi_hostname }}"
  register: host_facts
  delegate_to: localhost
- debug:
    var: host_facts['ansible_facts']['ansible_datastore']
在我的示例中,我添加了一个循环以获得正确的组合:

- name: Gather vmware host facts from vCenter
  vmware_host_facts:
    hostname: "{{ item.vcs }}"
    username: "{{ vcenter_user }}"
    password: "{{ vcenter_pass }}"
    esxi_hostname: "{{ item.host }}"
  register: host_facts
  delegate_to: localhost
  loop:
     - { host: 'mtboskt1bl07.oam.eeint.co.uk', vcs: 'vmtvcsakt01.oam.eeint.co.uk' }
     - { host: 'mtaoskt1bl10.oam.eeint.co.uk', vcs: 'vmtvcsakt01.oam.eeint.co.uk' }
var‘host_facts’是一个包含三个条目的字典:msg、changed和result

如果我访问结果-它是一个字典列表,但我似乎无法访问任何条目

我看过“子元素”文档,但看不出如何在这里应用它。有人能进一步帮助我吗

编辑: 以下是我如何做到这一点的:

- debug:
      msg: "{{ item['ansible_facts']['ansible_datastore'] }}"
    loop: "{{ host_facts['results'] }}"

只需在循环上一个循环的结果的每个项目中获得完全相同的变量:

- debug:
    var: item.ansible_facts.ansible_datastore
  with_items: "{{ host_facts.results }}"

谢谢,这太好了。我更改了它,添加了循环模块,并将var参数更改为msg,以确保只输出数据存储信息。