Automation 如何使用Ansible注册远程主机的事实?
我想将远程主机的事实注册到var中,然后在下一个任务中迭代var。但我被困在第一个任务中,即用主机名[hostname:IP]注册事实。以下是我的代码: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
- 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