[ansible] 호스트가 그룹에 속하지 않는 경우에만 작업 실행

현재 플레이 북의 호스트가 특정 그룹에 속하지 않는 경우에만 ansible 작업을 실행하고 싶습니다 . 반 의사 코드에서 :

- name: my command
  command: echo stuff
  when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}"

어떻게해야합니까?



답변

이를 수행하는 또 다른 방법은 다음과 같습니다.

- name: my command
  command: echo stuff
  when: "'groupname' not in group_names"

group_nameshttps://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables에 설명 된 매직 변수입니다 .

group_names는 현재 호스트가 속한 모든 그룹의 목록 (배열)입니다.


답변

다음 group_vars/과 같이 호스트 파일 에있는 vars 파일에서 제어 변수를 직접 설정할 수 있습니다 .

[vagrant:vars]
test_var=true

[location-1]
192.168.33.10 hostname=apollo

[location-2]
192.168.33.20 hostname=zeus

[vagrant:children]
location-1
location-2

그리고 다음과 같은 작업을 실행하십시오.

- name: "test"
  command: "echo {{test_var}}"
  when: test_var is defined and test_var


답변