[Ansible] 기본값(default value)

by 스뎅(thDeng) on

Ansible에서 변수를 사용할 때, 변수가 선언되지 않은 경우 에러를 뱉는다. 이런 경우에 변수가 선언되지 않으면 default value를 사용하도록 할 수 있다. 변수 template 안에 |defualt(value)로 써주면 된다.

- debug:
    msg: "my value: {{ my_val | default(5) }}"
  # "msg": "my value: 5
- set_fact:
    my_val: 7
- debug:
    msg: "my value: {{ my_val | default(5) }}"
  # "msg": "my value: 7

변수가 선언되지 않은 경우 module의 parameter 자체를 무시하는 omit이라는 특수값(?)도 있다. default(omit)으로 사용하면 된다.

- name: touch files with an optional mode
  file: dest={{ item.path }} state=touch mode={{ item.mode|default(omit) }}
  with_items:
    - path: /home/leocat/foo
    - path: /home/leocat/bar
    - path: /home/leocat/baz
      mode: "0444"

file module을 사용해서 파일을 생성할 때 mode를 설정하지 않은 경우 시스템에 설정된 default mode로 생성하고 싶을 때 위와 같이 사용할 수 있다. with_itemsmode를 설정하지 않은 foobar 파일은 mode parameter가 없는 것처럼 file module이 실행된다.

참고

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