Gdy przyczyna takiego zachowania jest doskonale przedstawione w odpowiedzi @flowerysong, istnieje obejście, które można wykorzystać do realizacji swoich wymagań.
Sztuczka polega na tym, że można określić dwa kawałki wewnątrz zbioru dramatów, a następnie użyć zmiennej, zainstalowany na hoście (- ach) pierwszej sztuki.
Tak więc to, co mamy zamiar zrobić, to:
- Uruchom sztukę na
localhost
i zainstaluj fakt, pochodzące z grupy przyjmującej, na który celujemy w drugiej grze
- Opcjonalnie: ja również określił
target_hosts
zmienna w pierwszej grze, aby być pewnym, że jeśli celem drugiej gry zostanie zmieniona, zmienna grupy hostów zawsze będzie tą, na którą nastawiona jest druga gra.
- Użyj tej zmiennej w drugiej grze, począwszy od
localhost
'zhostvars
Uwaga dodatkowa: brak ewidencji smaku, ale ja wolę wbudowane "jeśli" ternary
filtr, jednak nie są one ściśle równoważne.
Tak więc, biorąc pod uwagę scenariusz:
- hosts: localhost
gather_facts: no
tasks:
- set_fact:
target_hosts: nodes
- set_fact:
host_set: "{{ hostvars[groups[target_hosts].0].host_set }}"
- hosts: "{{ hostvars.localhost.target_hosts }}"
gather_facts: no
serial: "{{ '100%' if hostvars.localhost.host_set else '1' }}"
tasks:
- debug:
- Po uruchomieniu z
host_set: true
w nodes
Grupa:
PLAY [localhost] *******************************************************************************************************************
TASK [set_fact] ********************************************************************************************************************
ok: [localhost]
TASK [set_fact] ********************************************************************************************************************
ok: [localhost]
PLAY [nodes] ***********************************************************************************************************************
TASK [debug] ***********************************************************************************************************************
ok: [node1] =>
msg: Hello world!
ok: [node2] =>
msg: Hello world!
ok: [node3] =>
msg: Hello world!
PLAY RECAP *************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- Po uruchomieniu z
host_set: false
w nodes
Grupa:
PLAY [localhost] *******************************************************************************************************************
TASK [set_fact] ********************************************************************************************************************
ok: [localhost]
TASK [set_fact] ********************************************************************************************************************
ok: [localhost]
PLAY [nodes] ***********************************************************************************************************************
TASK [debug] ***********************************************************************************************************************
ok: [node1] =>
msg: Hello world!
PLAY [nodes] ***********************************************************************************************************************
TASK [debug] ***********************************************************************************************************************
ok: [node2] =>
msg: Hello world!
PLAY [nodes] ***********************************************************************************************************************
TASK [debug] ***********************************************************************************************************************
ok: [node3] =>
msg: Hello world!
PLAY RECAP *************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node1 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0