카이도스의 Tech Blog
Ansible 기본2(변수) 본문
728x90
반응형
2024.03.11 - [Ansible] - Ansible 기본1(설치 후 기본 활용)
2024.03.26 - [Ansible] - Ansible 기본3(Ansible Vault)
Ansible 실무에 활용 전 vm 통해 테스트하는 방법 안내하도록 하겠습니다.
관련하여 Ansible 사용하실분들은 참고하여 실무에 적용하시면 좋을 것 같습니다.
무작정 따라하시기보다, 내용 변경해가며 따라하시는걸 추천드립니다.
서버 정보
ansible-control | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.123 |
ansible1 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.124 |
ansible2 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.125 |
ansible3 | Ubuntu 22.04 | 4vcore | 8GB | 80GB | 10.10.x.126 |
설정파일 수정이 많다보니 vscode로 진행했습니다.
DevOps 업무하게 되면 vscode에 익숙해져야 할 것 같네요.
https://code.visualstudio.com/
변수의 종류와 사용법
ansible.builtin.user 모듈
- 그룹 변수 : 인벤토리에 정의된 호스트 그룹에 적용하는 변수
- ansible/inventory
[web]
ansible1
ansible2
[db]
ansible3
[all:children]
web
db
[all:vars]
user=ansible
- ansible/create-user.ym
---
- hosts: all
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
- 실행
# 실행
ansible-playbook create-user.yml
...
TASK [Create User ansible] *********
...
# 한번 더 실행 : 멱등성 확인
ansible-playbook create-user.yml
# ansible1~3에서 ansible 사용자 생성 확인
#ssh ansible1~3 tail -n 3 /etc/passwd
#ssh ansible1~3 ls -l /home
for i in {1..3}; do echo ">> tnode$i <<"; ssh root@ansible$i tail -n 3 /etc/passwd; echo; done
for i in {1..3}; do echo ">> tnode$i <<"; ssh root@ansible$i ls -l /home; echo; done
# ansible 에 ansible 사용자 삭제 후 확인
ssh ansible1 userdel -r ansible
ssh ansible1 tail -n 2 /etc/passwd
# 실행
ansible-playbook create-user.yml
- 호스트 변수 : 말 그대로 해당 호스트에서만 사용할 수 있음
- ansible/inventory
[web]
ansible1
ansible2
[db]
ansible3 user=ansible1
[all:children]
web
db
[all:vars]
user=ansible
- ansible/create-user1.yml
cp create-user.yml create-user1.yml
# create-user1.yml 파일 편집
---
- hosts: db
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
- 실행
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 실행
ansible-playbook create-user1.yml
...
TASK [Create User ansible1] *********
...
- 플레이 변수 : 플레이북 내에서 선언되는 변수, 별도 파일 분리
- ansible/create-user2.yml
cp create-user1.yml create-user2.yml
# create-user2.yml 파일 편집
---
- hosts: all
vars:
user: ansible2
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
- 실행
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 인벤토리에 선언한 그룹 변수와 호스트 변수 확인
cat inventory
# 실행
ansible-playbook create-user2.yml
...
TASK [Create User ansible2] *********
...
- ansible/vars/users.yml
mkdir vars
echo "user: ansible3" > vars/users.yml
- ansible/create-user3.yml
cp create-user2.yml create-user3.yml
# create-user3.yml 파일 편집
---
- hosts: all
vars_files:
- vars/users.yml
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
- 실행
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 플레이 변수 파일 확인
cat vars/users.yml
# 실행
ansible-playbook create-user3.yml
...
TASK [Create User ansible3] *********
...
- 추가 변수 : 외부에서 ansible-playbook를 실행 할 때 함께 파라미터로 넘겨주는 변수를 의미. 앞에 변수 중 우선순위가 가장 높음.
→ 실행 시 -e(extra_vars 약자) 옵션으로 추가 변수 선언
- ansible/create-user3.yml
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 실행
ansible-playbook -e user=ansible4 create-user3.yml
...
TASK [Create User ansible4] *********
...
변수 우선 순위 : 추가변수(실행 시 파라미터) > 플레이 변수 > 호스트 변수 > 그룹 변수
ansible.builtin.debug 모듈
- 작업 변수 : 플레이북의 태스트 수행 결과를 저장. 특정 작업 수행 후 그 결과를 후속 작업에서 사용할 때 주로 사용됨.
- ansible/create-user4.yml
cp create-user3.yml create-user4.yml
# create-user4.yml 파일 편집
---
- hosts: db
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
register: result
- ansible.builtin.debug:
var: result
- 실행
# (터미널2) 모니터링
watch -d "ssh ansible3 tail -n 3 /etc/passwd"
# 실행 : ok=3의 의미는?
ansible-playbook -e user=ansible5 create-user4.yml
PLAY [db] ***********************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************
ok: [ansible3]
TASK [Create User ansible5] *****************************************************************************************************************************************************************************************************************
changed: [ansible3]
TASK [ansible.builtin.debug] ****************************************************************************************************************************************************************************************************************
ok: [ansible3] => {
"result": {
"changed": true,
"comment": "",
"create_home": true,
"failed": false,
"group": 1005,
"home": "/home/ansible5",
"name": "ansible5",
"shell": "/bin/sh",
"state": "present",
"system": false,
"uid": 1005
}
}
PLAY RECAP **********************************************************************************************************************************************************************************************************************************
ansible3 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
도전과제1 생성된 user를 ansible.builtin.user 모듈을 통해서 제거해보자
cp create-user4.yml delete-user.yml
# delete-user.yml 파일 편집
---
- hosts: all
tasks:
- name: Delete User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: absent
remove: yes
register: result
- ansible.builtin.debug:
var: result
# 실행
ansible-playbook -e user=ansible5 delete-user.yml
ansible-playbook -e user=ansible4 delete-user.yml
도전과제2 관리 대상에 uptime을 ansible.builtin.debug 모듈을 통해서 확인해보자
# uptime.yml 파일 생성
---
- hosts: all
tasks:
- name: Get uptime information
ansible.builtin.shell: /usr/bin/uptime
register: result
- ansible.builtin.debug:
var: result
# 실행
ansible-playbook uptime.yml
728x90
반응형
'Ansible' 카테고리의 다른 글
Ansible 기본4(Facts) (0) | 2024.03.26 |
---|---|
Ansible 기본3(Ansible Vault) (0) | 2024.03.26 |
Ansible 기본1(설치 후 기본 활용) (0) | 2024.03.11 |
Comments