繁体   English   中英

Ansible游戏在一组主机上运行,​​但取决于其他主机的事实

[英]Ansible play runs on one group of hosts, but depends on facts from others

这是基本的用例:

我有一个要设置的NGINX反向代理,因此我专门介绍了仅在“ nginx”组上运行的播放。

但是,为了知道要反向代理的ip,我需要从“上游”组中收集事实。 由于该播放没有在“上游”上运行setup ,因此不会发生这种情况。

这个答案包含了我以前使用过的解决方案,但是我希望能够将所有这些内容独立地包含在一个主机游戏中,使我可以独立于其他主机运行。

使用Delegated Factspre_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM