[Ansible] 특정 조건에만 실행하기 (when statement)

by 스뎅(thDeng) on

Ansible로 복잡한 로직을 만들기는 어렵지만, 특정 상황에만 실행하는 간단한 로직은 when을 사용하면 쉽게 만들 수 있다.

변수 설정(defined) 여부

변수가 설정된 경우만 실행하도록 하려면 when: 변수명 is defined라고 쓰면 된다. 선언되지 않은 경우는 is undefinedis not defined로 사용하면 된다.

- name: system_name 변수가 설정되지 않아 실행 안 됨
  debug:
    msg: "System: {{ system_name }}"
  when: system_name is defined
- name: system_name 변수 설정
  set_fact:
    system_name: "my system"
- name: system_name을 사용할 수 있음
  debug:
    msg: "System: {{ system_name }}"
  when: system_name is defined

변수 값 체크

또 많이 사용할 조건이 변수의 값이 특정 값인 경우에만 실행하도록 하는 것이다.

- set_fact:
    os_family: Debian
- name: Debian 이나 CentOS인 경우만 실행
  debug:
    msg: "OKOK {{ os_family }}"
  when: os_family == "Debian" or os_family == "CentOS"
- name: 5 이상인 경우만 출력
  command: echo {{ item }}
  with_items: [ 0, 2, 4, 6, 8, 10 ]
  when: item > 5

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License