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

时间:2017-07-10 13:32:13

标签: ansible ansible-inventory

以下是基本用例:

我有一个我要设置的NGINX反向代理,所以我特定一个只在" nginx"上运行的游戏。基。

然而,为了知道反向代理的ips,我需要从"上游"收集事实。组。这不会发生,因为游戏没有在"上游"上运行setup

This answer包含我之前使用过的解决方案,但我希望能够将其全部自包含在单个主机播放中,我可以独立于其他主机播放。

1 个答案:

答案 0 :(得分:1)

使用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 }}"