[英]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.