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 생성되는것 확인
❖ 앤서블 멱등성 특징으로 인해 두번 실행시 에러 발생 안하고 정상적으로 실행 되었다고 표시됨
✔️ 호스트 변수 : 해당 호스트에서만 사용 가능한 변수
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 |