연재 시리즈

Ansible playbook 변수

악분 2024. 1. 20. 01:38
반응형

1. 변수 정의와 사용 방법

playbook에서 변수 정의는 vars필드로 합니다.

- name: Variables
  hosts: localhost
  vars:
    hello: world

 

그리고 정의한 변수는 “{{ 변수이름 }}”으로 사용합니다. 쌍따옴표가 있어야 합니다.

- name: Variables key value
  hosts: localhost
  vars:
    hello: world

  tasks:
    - name: Echo vars
      ansible.builtin.debug:
        msg: "{{ hello }}"

 

playbook 실행하면 변수 값이 출력됩니다.

ansible-playbook playbook.yaml

 

2. 변수 유형

2.1 key-value

key-value는 변수이름과 변수 값을 정의하는 유형입니다. 변수 사용방법은 변수이름만 참조하면 됩니다.

- name: Variables key value
  hosts: localhost
  vars:
    a: a1
    b: b1

  tasks:
    - name: Echo
      ansible.builtin.debug:
        msg: "{{ a }}"

    - name: Echo
      ansible.builtin.debug:
        msg: "{{ b }}"

 

2.2 dictonary

dictonary는 key(변수이름)를 중첩해서 사용하는 유형입니다. 변수 사용방법은 key를 “.”으로 나열하여 변수를 참조합니다.

- name: Variables key value
  hosts: localhost
  vars:
    dummy:
      a: a1
      b: b1

  tasks:
    - name: Echo a
      ansible.builtin.debug:
        msg: "{{ dummy.a }}"
    - name: Echo b
      ansible.builtin.debug:
        msg: "{{ dummy.b }}"

 

2.3 list

list 변수 값이 여러 개일때 사용하는 유형입니다. 변수 값은 대시(-) 사용하여 여러 정의합니다. 변수 사용방법은 변수이름[인덱스] 참조합니다.

- name: Variables list
  hosts: localhost
  vars:
    alphabets:
      - a
      - b
      - c

  tasks:
    - name: Echo index 0
      ansible.builtin.debug:
        msg: "{{ alphabets[0] }}"
    - name: Echo index 1
      ansible.builtin.debug:
        msg: "{{ alphabets[1] }}"
    - name: Echo index 2
      ansible.builtin.debug:
        msg: "{{ alphabets[2] }}"

 

3. 실행 시 변수 오버라이딩

playbook 변수는 실행할 변수값을 오버라이딩 있습니다. --extra-vars 또는 -e 변수값을 오버라이딩합니다. 만약 변수가 없다면 변수를 생성합니다.

 

아래 예제는 hello라는 변수가 있습니다.

- name: Variables key value
  hosts: localhost
  vars:
    hello: world

  tasks:
    - name: Echo vars
      ansible.builtin.debug:
        msg: "{{ hello }}"

 

playbook 실행할 -e인자를 사용하여 hello변수를 tttt 변경할 있습니다.

ansible-playbook playbook.yaml -e “hello=tttt”

반응형

'연재 시리즈' 카테고리의 다른 글

Ansible playbook task 결과를 변수로 저장  (0) 2024.01.20
Ansible playbook 파일을 사용하여 변수 정의  (0) 2024.01.20
Ansible playbook 실패 제어  (0) 2024.01.19
Ansible vault  (0) 2024.01.14
Ansible playbook  (0) 2024.01.14