상세 컨텐츠

본문 제목

0. Ansible의 핵심 구성 요소 이해 - 인벤토리, 모듈, 플레이북

엔지니어일기/RHCE준비

by jaws99 2022. 5. 24. 00:10

본문

반응형

1. Inventory - When?

[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]

 

1. [5:7]

대괄호를 사용해서

0.0.0.5, 0.0.0.6, 0.0.0.7을

0.0.0. [5:7]으로 표현할 수 있다.

 

2. children

그룹 뒤에 :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"
}


Playbook - What?

---
- hosts: PROD
  tasks:
    - yum:
        name: nginx
        state: latest
    - service:
        name: nginx
        enabled: yes

 

인벤토리로 "어디"에 작업을 할지 대상 호스트들을 정의했다.

 

이제 그 호스트들한테 어떤 작업을 할지를 "모듈"이라는 걸로 나열한다.

 

즉, 플레이북은 대상(Inventory) + 작업(Module)을 정의한 파일이다.

 

Module - How?

결국 무슨 작업을 할 것이냐.

 

yum은 패키지 관리 모듈이다.

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/yum_module.html

 

ansible.builtin.yum module – Manages packages with the yum package manager — Ansible Documentation

This module supports yum (as it always has), this is known as yum3/YUM3/yum-deprecated by upstream yum developers. As of Ansible 2.7+, this module also supports YUM4, which is the “new yum” and it has an dnf backend. By default, this module will select

docs.ansible.com

nginx를 최신 버전으로 업데이트 혹은 설치했다.



service는 서비스 관리 모듈이다.

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/service_module.html

 

ansible.builtin.service module – Manage services — Ansible Documentation

Note This module is part of ansible-core and included in all Ansible installations. In most cases, you can use the short module name service even without specifying the collections: keyword. However, we recommend you use the FQCN for easy linking to the mo

docs.ansible.com

nginx를 enabled 시켰다.

 

여기에서 모듈들의 리스트를 볼 수 있다.

https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html

 

All modules — Ansible Documentation

 

docs.ansible.com

 

Ctrl + F로 찾는다고 해도 양이 상당하다...

 

그래서 자주 쓰는 모듈들은 외워두는 편이 정신건강에 좋다..

반응형

관련글 더보기