Automation 如何使用Ansible注册远程主机的事实?

Automation 如何使用Ansible注册远程主机的事实?,automation,ansible,ansible-2.x,Automation,Ansible,Ansible 2.x,我想将远程主机的事实注册到var中,然后在下一个任务中迭代var。但我被困在第一个任务中,即用主机名[hostname:IP]注册事实。以下是我的代码: - name: get facts setup: delegate_to: "{{item}}" delegate_facts: True with_items: "{{ groups['hadoop'] }}" register: hadoop_ips tags: - etc-hosts - debug: m

我想将远程主机的事实注册到var中,然后在下一个任务中迭代var。但我被困在第一个任务中,即用主机名[hostname:IP]注册事实。以下是我的代码:

- name: get facts
  setup:
  delegate_to: "{{item}}"
  delegate_facts: True
  with_items: "{{ groups['hadoop'] }}"
  register: hadoop_ips
  tags:
    - etc-hosts

- debug: msg={{ hadoop_ips }}
  tags:
    - etc-hosts

如果要获取有关主机的可用事实,则应在收集主机上的事实后使用这些事实来访问它们

如果您的playbook已经收集了您感兴趣或正在使用的主机的事实,并且缓存保存了有关主机的事实,那么您可以直接使用
hostvars
。如果没有,那么您将需要像在您的问题中一样使用委托任务

因此,如果您想获取当前playbook未针对的另一组中某些主机的默认IP地址,您可能会有以下内容:

- name: get facts
  setup:
  delegate_to: "{{item}}"
  delegate_facts: True
  with_items: "{{ groups['hadoop'] }}"
  tags:
    - etc-hosts

- debug: var={{ hostvars[item]['ansible_eth0']['ipv4']['address'] }}
  with_items: "{{ groups['hadoop'] }}"
  tags:
    - etc-hosts

您到底遇到了什么错误?我尝试了您建议的更改,但失败了!=>{“failed”:true,“msg”:“'dict object'没有属性'ansible_eth0'”}。我确实在ansible设置中看到ansible_eth0