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