[Ansible] #2.2 Ansible 용어 2
![[Ansible] #2.2 Ansible 용어 2](/assets/img/study_Ansible/2022-11-22-%5BAnsible%5D_2.2_Ansible_%EC%9A%A9%EC%96%B4_2/logo.png)
Ansible 의 용어에 대해서 알아보자.
모듈(Module) , 작업(Task) , Ad-hoc 명령 , 플레이북(Playbook), 플레이(Play) .

Ansible 아키텍쳐
5. 모듈(Module)
Ansible 의 작업을 실행하는 Python 코드 조각으로 Ansible 의 핵심이라고 할 수 있다.
총 7~8천개 정도가 존재한다.
모듈 의 목록은 아래 명령어로 조회할 수 있다.
ansible-doc -t module -l
https://docs.ansible.com/ansible/latest/collections/index_module.html
위 링크에서도 확인 가능하다.
우리가 필요한 대부분의 기능이 이미 모듈로 구현되어 있다.
Ansible 은 구성 관리 도구 이지만 프로비저닝 기능도 가지고 있다.
이 프로비저닝 기능이 모듈 에 포함되어 있는 것이다.
Windows 에 대한 모듈도 존재한다.
Windows 는 Unix 게열이 아니기 때문에 제어 노드 는 될 수 없지만, 관리 노드 는 될 수 있기 때문에 관리 노드 용으로 모듈 이 존재한다.
6. 작업(Task)
Ansible 의 작업 실행 단위이다.
모듈 을 실행하면 하나의 작업 이 실행되며,
Ad-hoc 명령(ansible) 을 통해 하나의 모듈 을 정의해 하나의 작업 을 실행한다.
Playbook을 통해 여러 모듈 을 정의해 여러 작업 을 한번에 실행하는 것이 가능하다.
즉 하나의 모듈 은 하나의 Task 로 이어지므로, 하나의 모듈 은 하나의 작업 만 실행할 수 있다.
약간 쓰레드 와도 비슷한 개념이다.
Playbook 은 절차형이기 때문에 순서에 따라 여러 모듈 을 정의해서 여러 개의 작업을 실행하는 것이다.
7. Ad-hoc 명령
ansible 명령으로 단일 모듈을 이용해 단일 작업을 실행할 수 있다.
예시를 보자.
ansible -m apt -a "name=apache2 state=present"
ansible -m service -a "name=apache2 state=started enabled=true"
ansible -m copy -a "src=my.cnf.tmpl dest=/etc/my.cnf"
모든 모듈은 ansible 로 시작하며, 뒤로 오는것은 분류, 그 다음이 모듈 이름이다.
세번째 파라미터인 모듈 이름만 써도 되고, 풀 네임으로 써도 된다.
-a 뒤에는 argument가 온다.
모듈 하나만 지정할 수 있음에 주의하자.
8. 플레이북(Playbook), 플레이(Play)
플레이북 :
- 하나 이상의 플레이를 가지고 있는
YAML파일 ansible-playbook명령으로 실행됨
플레이 :
- 하나 이상의 순서가 있는 모듈이 지정된 작업 목록
즉 플레이북에는 여러개의 플레이가 속할 수 있다.
서로 다른 노드, 서로 다른 시스템(웹서버, DB서버) 등에 대한 서로 다른 작업을 포함하여 구성할 수 있다.
예시를 보자.

플레이북 및 플레이 예시
위 YAML 파일을 플레이북 이라고 한다.
hosts 는 플레이 ,
apt , service 는 모듈 이다.
하나의 모듈 은 하나의 작업(Task) 이므로, hosts 플레이는 여러 개의 모듈 이자 작업 을 포함한다.
플레이에서는 순서가 있다는 것이 중요하다.
플레이북 - 파일
플레이 - 하나 이상의 모듈이 존재
개념을 확실히 알고 가자.
또한 어원으로는 Ansible 의 개발자인 마이클 드한이 야구 광인데, 야구 시작할 때 플레이라고 외치는게 어원이라고 한다.
다음 글로 이어진다.