때 이곳의 행동은 완벽하게 잘 명시 @flowerysong 의 대답이이 문제를 해결할 수 있는 방법이 사용할 수 있습을 달성하기 위해 요구 사항입니다.
트릭은 사용할 수 있다는 사실로 정의 역 내에서 각본과,다음 사용하십 변수 설정 호스트에서(s)의 첫 번째 재생합니다.
그래서,우리가 무엇을 할 것입니다:
- 실행에서 재생
localhost
고 설정을 사실을 오는 호스트 그룹에서는 우리 대상으로하는 것을 목표로서 두 번째 재생
- 선택적으로:또한 정의
target_hosts
변수에서 처음으로 재생하는 경우 두번째 플레이의 대상은 수정한 호스트 그룹 가변은 항상 하나 플레이가 대상입니다.
- 이 변수를 사용하여 두 번째 플레이터
localhost
ko hostvars
추가 참고:없는 맛에 대한 회계이지만,내가 선호하는 인라인하는 경우 를 ternary
필터,여전히,그들은 엄격히 동일합니다.
주어진,그래서 각본:
- 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:
- 을 때 실행
host_set: true
에 nodes
그룹:
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
- 을 때 실행
host_set: false
에 nodes
그룹:
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