728x90

1. 변수

1-1. 변수의 정의

 

앤서블은 변수를 통해서 사용자, 설치하고자 하는 패키지, 재시작서비스, 생성 또는 삭제할 파일명 등 시스템 작업 시 사용되는 다양한 값을 저장할 수 있습니다.

 

변수를 통해 서비스를 재시작할 수도, 사용자로부터 받은 값도 쉽게 적용할 수 있습니다.

앤서블에서 사용되는 변수는 그룹 변수, 호스트 변수, 플레이 변수, 추가 변수가 있으며 플레이 결과를 저장하기 위한 작업 변수도 있습니다.

 

1) 그룹 변수

[web]
tnode1
tnode2

[db]
tnode3

[all:children]
web
db

[all:vars]
user=ansible

 

그룹 변수는 다음과 같이 [all:vars] k:v로 선언되며 해당 내용 적용 시 모든 관리 노드에 적용됩니다.

 

다음과 같이, 유저 생성 파일을 만들어 보겠습니다.

my-ansible/create-user.yml

---

- hosts: all
  tasks:
  - name: Create User **{{ user }}**
    ansible.builtin.**user**:
      name: **"{{ user }}"**
      state: present

 

다른 터미널에서 tail 로그를 확인합니다. 
watch -d "ssh **tnode1** tail -n 3 /etc/passwd"

 

터미널 1에서는 ansible-playbook create-user.yml로 유저를 생성하고,
생성된 유저 정보를 확인합니다.

 

다시, 대상 노드 1에서 ansible이라는 유저를 삭제합니다.

 

확인하면, tnode1에서 ansible이 삭제된 것을 확인하실 수 있습니다.

 

이후 다시 생성 후, 적용된 내용을 확인합니다.

 

2) 호스트 변수

 

인벤토리를 다음과 같이 변경합니다.

tnode3에 user=ansible1이라는 내용으로 변경합니다.

[web]
tnode1
tnode2

[db]
tnode3 user=ansible1

[all:children]
web
db

[all:vars]
user=ansible

 

 

이 변수는 말 그대로 호스트에 적용되는 변수입니다.


다음과 같이 플레이북을 만들어 보겠습니다.

my-ansible/create-user1.yml

---

- hosts: db
  tasks:
  - name: Create User {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present

 

적용 시 다음과 같이 변경되는데,

 

대상 노드 3에서 확인하면, ansible1이 생성된 것을 알 수 있습니다.

 

3) 플레이 변수

 

다음은 플레이북 내에서 적용되는 변수인 플레이 변수입니다.

my-ansible/create-user2.yml

 

 
 
---

- hosts: all
  vars:
    user: ansible2

  tasks:
  - name: Create User {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present

 

마찬가지로 상기 내용을 적용하면, ansible2라는 유저가 모든 대상 노드에 생성되는 것을 확인할 수 있습니다.

 

 

4) 추가 변수

추가 변수는 외부에서 ansible-playbook를 실행할 때 함께 파라미터로 넘겨주는 변수를 의미합니다.

 

my-ansible/create-user3.yml
 
---

- hosts: all
  vars_files:
    - vars/users.yml

  tasks:
  - name: Create User {{ user }}
    ansible.builtin.user:
      name: "{{ user }}"
      state: present

 

위의 플레이북을 다음과 같이 적용하면,

 

ansible-playbook -e user=ansible4 create-user3.yml

 

유저4가 모든 노드에 걸쳐 적용되는 것을 볼 수 있습니다.

 

위의 변수들을 살펴보면, 변수는 다음의 우선순위를 갖습니다.

 

추가변수(실행 시 파라미터) > 플레이 변수 > 호스트 변수 > 그룹 변수

728x90
반응형