모듈 소개 — 플레이북의 기본 실행 단위
모듈 소개 — 플레이북의 기본 실행 단위
모듈(module)은 '태스크 플러그인' 또는 '라이브러리 플러그인'이라고도 불리는, 커맨드라인이나 플레이북 태스크에서 사용할 수 있는 코드 단위예요. Ansible은 각 모듈을, 보통은 원격 관리 노드에서 실행하고 반환 값을 수집해요. Ansible 2.10 이상에서는 대부분의 모듈이 컬렉션(collection)에 호스팅돼요.
이 글에서는 모듈을 커맨드라인과 플레이북에서 어떻게 실행하는지, 그리고 모듈이 지켜야 하는 성질(멱등성, JSON 반환)을 살펴볼게요.
출처: 공식문서
커맨드라인에서 모듈 실행하기
커맨드라인에서 모듈을 실행할 수 있어요.
ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"
각 모듈은 인자(argument)를 지원해요. 거의 모든 모듈은 공백으로 구분된 key=value 인자를 받아요. 일부 모듈은 인자를 받지 않고, command/shell 모듈은 실행하려는 명령 문자열만 받아요.
플레이북에서 모듈 실행하기
플레이북에서도 Ansible 모듈은 아주 비슷하게 실행돼요.
- name: reboot the servers
command: /sbin/reboot -t now
모듈에 인자를 넘기는 또 다른 방법은 YAML 문법이에요. '복잡한 인자(complex args)'라고도 불러요.
- name: restart webserver
service:
name: httpd
state: restarted
모든 모듈은 JSON 형식 데이터를 반환해요. 그래서 모듈은 어떤 프로그래밍 언어로도 작성할 수 있어요. 모듈은 멱등적이어야 하고, 현재 상태가 원하는 최종 상태와 일치한다고 감지하면 어떤 변경도 하지 않아야 해요. 플레이북에서 모듈은 핸들러(handlers)에게 추가 태스크를 실행하라고 통지하는 '변경 이벤트(change events)'를 트리거할 수 있어요.
모듈 문서 확인하기
각 모듈의 문서는 ansible-doc 도구로 커맨드라인에서 볼 수 있어요.
ansible-doc yum
사용 가능한 모든 모듈 목록은 컬렉션 문서를 보거나, 명령 프롬프트에서 다음을 실행해요.
ansible-doc -l
부울 변수(Boolean variables)
Ansible은 모듈 인자의 bool에 광범위한 값을 받아들여요: true/false, 1/0, yes/no, True/False 등. 유효 문자열 매칭은 대소문자를 가리지 않아요. 문서 예시는 ansible-lint 기본 설정과의 호환을 위해 true/false에 초점을 맞추지만, 다음 중 아무거나 사용할 수 있어요.
| Valid values | Description |
|---|---|
True, 'true', 't', 'yes', 'y', 'on', '1', 1, 1.0 |
Truthy values |
False, 'false', 'f', 'no', 'n', 'off', '0', 0, 0.0 |
Falsy values |
더 알아보기
- 핸들러(Handlers): 변경 이벤트를 통지받아 실행되는 추가 태스크
- 플레이북 기초: 태스크에서 모듈을 사용하는 방법
- ansible-doc: 모듈별 문서 확인 도구
- 자체 모듈 작성: Ansible 모듈을 직접 개발하는 방법