본문 바로가기

DevOps/Ansible

[A101] 3. Ansible 기본사용(2)

cloudNet@ 팀의 가시다 님이 진행하는 앤서블 스터디 1주차 정리입니다.

지난번 포스팅 까지 앤서블의 인벤토리,플레이북을 실습을 통해서 알아봤습니다.

이번 게시물에서는  변수에 대해서 알아보겠습니다.

 

  variable

  • 앤서블은 변수를 사용하여 사용자, 설치하고자 하는 패키지, 재시작할 서비스, 생성 또는 삭제할 파일명 등 시스템 작업 시 사용되는 다양한 값을 저장할 수 있습니다
  • 앤서블에서 사용되는 변수는 그룹 변수, 호스트 변수, 플레이 변수, 추가 변수가 있습니다.
  • 플레이 결과를 저장하기 위한 작업 변수도 있습니다.

 

✔️ 그룹 변수 : 인벤토리에 정의된 호스트 그룹에 적용하는 변수

 

❖ 인벤토리에 선언해야 하고, 선언하고자 하는 그룹명과 함께 :vars 라는 문자열을 추가해 변수를 선언

 [ansible-server]my-ansible 디렉터리에 있는 inventory 파일 생성

❖ [all:vars]  해당 섹션 아래에 user=ansible이라는 변수와 값을 선언합니다.

 

my-ansible/inventory 

# 그룹변수: 인벤토리에 정의된 호스트 그룹에 적용하는 변수
[web]
tnode1
tnode2

[db]
tnode3

[all:children]
web
db

[all:vars]
user=ansible

 

my-ansible/create-user.yml

---

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

❖ 터미널 2개 띄운뒤 1개로는 모니터링 하면서 user 생성되는것 확인

❖ 앤서블 멱등성 특징으로 인해 두번 실행시 에러 발생 안하고 정상적으로 실행 되었다고 표시됨

저는 ansible1,2,3,4 만들어봤어요! 재밌어요!

 

 


 

 

✔️ 호스트 변수 :  해당 호스트에서만 사용 가능한 변수

 

 

my-ansible/inventory 

 

 

[web]
tnode1
tnode2

[db]
tnode3 user=ansible1

[all:children]
web
db

[all:vars]
user=ansible

❖ [db]  해당 섹션 아래에 user=ansible1이라는 변수와 값을 선언합니다.

해당 db호스트에서만 변수값을 다르게 적용함

 

 

my-ansible/create-user1.yml

---

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

 

 create-user1을 실행하면 db 호스트에서만 ansible1이라는 유저를 생성하는것을 확인할수 있습니다! 

 

 

✅  variable 도전과제  1

  • Delete User 예제를 만들어본다.

찾았다!

  • 나는 너무 재밌는 나머지 유저를 굉장히 많이 생성해버렸다. 책에서 반복문 부분을 좀 읽어보니 루프를 쓰면 될것 같다.
  • 다 지워버리겠다.
---

- hosts: all
  tasks:
  - name: Remove the user {{ user }}
    ansible.builtin.user:
      name: "{{ item }}"
      state: absent
      remove: yes
    loop:
      - ansible
      - ansible1
      - ansible2

 

 

 

 

 


✔️ 플레이북 변수 :  playbook에서 선언한 변수

my-ansible/create-user3.yml

---

- hosts: all
  vars:
    user: ansible2

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

 


✔️ 작업 변수 :  명령어에서 대놓고 받는 변수

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

 

 

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

 

'DevOps > Ansible' 카테고리의 다른 글

[A101] 5. Ansible Kubespray 분석  (0) 2024.01.19
[A101] 4. Ansible 반복문, 조건문  (0) 2024.01.18
[A101] 2. Ansible 기본사용(1)  (1) 2024.01.07
[A101] 1.Ansible 설치  (0) 2024.01.07
[Ansible] 9. ansible Module (systemd, service)  (0) 2021.07.27