[英]Ansible play runs on one group of hosts, but depends on facts from others
这是基本的用例:
我有一个要设置的NGINX反向代理,因此我专门介绍了仅在“ nginx”组上运行的播放。
但是,为了知道要反向代理的ip,我需要从“上游”组中收集事实。 由于该播放没有在“上游”上运行setup
,因此不会发生这种情况。
这个答案包含了我以前使用过的解决方案,但是我希望能够将所有这些内容独立地包含在一个主机游戏中,使我可以独立于其他主机运行。
使用Delegated Facts , pre_tasks
并将事实委托给它们所属的主机。
- hosts: nginx
become: yes
tags:
- nginx
vars:
listen_address: "x.x.x.x"
pre_tasks:
- name: 'gather upstream facts.'
setup:
delegate_to: "{{item}}"
delegate_facts: True
with_items: "{{groups['upstreams']}}"
roles:
- role: nginx
upstreams: "{{ groups['upstreams'] | map('extract', hostvars, ['ansible_all_ipv4_addresses']) | ipaddr('x.x.x.x') | first | list }}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.