Ansible 변수(variables) 관리
변수 명
- Python 키워드와 playbook 키워드는 사용하면 안됩니다.
변수의 종류 및 우선순위
변수의 종류를 우선순위가 낮은 것 부터 높은 것 순으로 나열하면 다음과 같습니다. 변수의 우선순위가 같다면 나중에 정의된 변수가 우선순위가 높습니다. 디렉토리 내의 파일을 읽어오는 경우 알파벳 순으로 읽어옵니다.
Command Line 옵션 값
- 명령어를 실행할 때 사용되는 옵션은 playbook 키워드의 값으로 사용됩니다. playbook 키워드는 inventory 파라미터 등의 기본 값으로 사용됩니다.
Role의 defaults
<role>/defaults/main.yaml
inventory 파일의 그룹 변수
<inventory>/hosts.yaml
<inventory>/hosts.yaml
<group>:
vars:
<key>: <value>
inventory의 group_vars/all
<inventory>/group_vars/all.yaml
<inventory>/group_vars/all/*.yaml
playbook의 group_vars/all
<playbook>/group_vars/all.yaml
<playbook>/group_vars/all/*.yaml
inventory의 group_vars/<group>
<inventory>/group_vars/<group>.yaml
<inventory>/group_vars/<group>/*.yaml
playbook의 group_vars/<group>
<playbook>/group_vars/<group>.yaml
<playbook>/group_vars/<group>/*.yaml
inventory 파일의 호스트 변수
<inventory>/hosts.yaml
<inventory>/hosts.yaml
<group>:
hosts:
<host>:
<key>: <value>
inventory의 host_vars/<host>
<inventory>/host_vars/<host>.yaml
<inventory>/host_vars/<host>/*.yaml
playbook의 host_vars/<host>
<playbook>/host_vars/<host>.yaml
<playbook>/host_vars/<host>/*.yaml
host facts 와 캐싱된 set_facts
play의 vars
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
vars:
<key>: <value>
play의 vars_prompt
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
vars_prompt:
- name: <key>
prompt: "<prompt>"
private: true
play의 vars_files
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
vars_files:
- <file>
role의 vars
<role>/vars/main.yaml
block의 vars
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- block: []
vars:
<key>: <value>
정보
block내의 task에게만 적용되는 변수입니다.
task의 vars
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
vars:
<key>: <value>
정보
해당 task에게만 적용되는 변수입니다.
include_vars
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
ansible.builtin.include_vars:
set_fact와 register
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
ansible.builtin.set_fact:
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
register: <key>
role 매개 변수
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
roles:
- role: <role>
vars:
<key>: <value>
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
ansible.builtin.include_role:
name: <role>
vars:
<key>: <value>
include_tasks 매개 변수
<playbook>/<purpose>.yaml
<playbook>/<purpose>.yaml
- hosts: <host|group>
tasks:
- name: <task>
ansible.builtin.include_tasks:
file: <file>
vars:
<key>: <value>
extra_vars
명령어 실행시 -e | --extra-vars
옵션으로 전달되는 변수입니다.
-e <key>=<value>
-e "<key>=<value> <key>=<value>"
-e '{"<key>": "<value>"}'
-e "@<path>/<file>.yaml"
-e "@<path>/<file>.json"