[ALL:children]
PROD
DEV
[PROD:children]
PROD-SERVICE-A
PROD-SERVICE-B
[PROD-SERVICE-A]
10.0.0.2
[PROD-SERVICE-B]
10.0.0.3
[DEV:children]
DEV-SERVICE-A
DEV-SERVICE-B
[DEV-SERVICE-A]
10.0.0.4
[DEV-SERVICE-B]
10.0.0.[5:7]
대괄호를 사용해서
0.0.0.5, 0.0.0.6, 0.0.0.7을
0.0.0. [5:7]으로 표현할 수 있다.
그룹 뒤에 :children을 붙여서 그룹의 그룹을 만들 수 있다.
PROD 그룹에는 PROD-SERVICE-A, PROD-SERVICE-B 그룹이 포함됐고,
PROD-SERVICE-A 그룹에는 10.0.0.2 호스트가
PROD-SERVICE-B 그룹에는 10.0.0.3 호스트가 포함됐다.
PROD 그룹으로 두 그룹의 포함된 호스트들을 모두 대상으로 사용할 수 있다.
$ ansible PROD-SERVICE-A -m ping
10.0.0.2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
$ ansible PROD -m ping
10.0.0.3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
10.0.0.2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
---
- hosts: PROD
tasks:
- yum:
name: nginx
state: latest
- service:
name: nginx
enabled: yes
인벤토리로 "어디"에 작업을 할지 대상 호스트들을 정의했다.
이제 그 호스트들한테 어떤 작업을 할지를 "모듈"이라는 걸로 나열한다.
즉, 플레이북은 대상(Inventory) + 작업(Module)을 정의한 파일이다.
결국 무슨 작업을 할 것이냐.
yum은 패키지 관리 모듈이다.
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/yum_module.html
nginx를 최신 버전으로 업데이트 혹은 설치했다.
service는 서비스 관리 모듈이다.
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html
nginx를 enabled 시켰다.
여기에서 모듈들의 리스트를 볼 수 있다.
https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
Ctrl + F로 찾는다고 해도 양이 상당하다...
그래서 자주 쓰는 모듈들은 외워두는 편이 정신건강에 좋다..
1. Ansible 제어 노드 설치 및 설정 - 패키지 설치 (0) | 2022.05.11 |
---|---|
Ansible Password 변경 Playbook (0) | 2022.02.15 |