Ansible에서 모듈 (Module) 이란?
- 모듈은 하나의 작은 프로그램으로, ansible에서 사용하는 명령어 프로그램으로 볼 수 있다.
- 모듈은 특정 명령, 소프트웨어 설치, API호출 등 여러가지 기능이 있다.
- ansible을 이용하여 managed node에 대해 구성관리를 수행하는 실질적인 동작 수행 프로그램
- 모듈은 namespace 단위로 관리된다.
Ansible Document 확인 명령
ansible-doc -l
ansible-doc <모듈명>
- 도움말 참고
- parameters : 해당 모듈을 사용할때 전달할 수 있는 파라미터에 대한 설명
- Attribute : 해당 모듈속성(상태), 모듈 동작시 적용
- return value : 해당 모듈이 실행된 후의 결과값
- Example : 해당 모듈 사용법
ansible-doc -s <모듈명>
멱등성
- 모듈은 기본적으로 멱등성(Idempotent)를 가지고 있다.
- 일부 모듈은 멱등성이 없다. command, shell, raw 모듈은 같은 명령을 입력해도 결과값이 달라질 수도 있다.
Command 모듈
ansible managed -m command -a "ls -ls" -i ./work-ansible/hosts
# ansible [host패턴] -m command -a "[명령어]" -i [hosts파일 경로]
- managed node들에 명령을 실행
- managed node의 쉘에서 실행되는것이 아니므로 쉘작업을 수행할 수 없다.
(리다이렉션이나 파이프 기능도 사용 불가능)
- managed node에 파이썬이 설치되어 있어야 실행 가능
Shell 모듈
ansible public -m shell -a "set | grep PWD" -i ./work-ansible/hosts
# ansible [host패턴] -m shell -a "[명령어]" -i [hosts파일 경로]
- managed node의 쉘을 통해 명령어 처리
- managed node의 쉘 환경변수에 접근할 수 있고, 리다이렉션이나 파이프기능 사용가능
- command와 마찬가지로 파이썬이 설치되어 있어야 실행가능
Raw 모듈
- 모듈 하위시스템을 거치지 않고 원격 쉘을 사용하여 직접 명령 실행
- 파이썬을 설치할 수 없는 시스템에서 유용한 모듈
- managed node에 파이썬을 설치할때나, Linux 기본 조건을 만족하지 못하거나 SSH가 없는 환경에서 유용하게 사용 할 수 있다.
User 모듈
ansible [host패턴] -m user -a "[name, state 파라미터]" --become -i [hosts파일 경로]
- 사용자 추가/삭제관리 모듈
- name 파라미터와 state 파라미터로 사용자를 추가하거나 삭제할 수 있다.
- name 파라미터 : 추가/삭제할 사용자 이름
- state 파라미터 : present - 생성(default값), absent - 소멸
Yum 모듈
ansible [host패턴] -m yum -a "[name, state 파라미터]" --become -i [hosts파일 경로]
- RedHat 배포판 패키지관리 명령인 yum에 대한 모듈
- 유사모듈로 apt, dnf 모듈이 있다.
- name 파라미터와 state 파라미터로 패키지를 설치/업그레이드/삭제할 수 있다.
- name 파라미터 : 설치/삭제할 패키지 이름
- state 파라미터 : present,installed - 설치. latest - 업그레이드, absent,remove - 삭제
Service모듈
ansible [host패턴] -m service -a "[name, state 파라미터]" --become -i [host파일 경로]
- 시스템 서비스(데몬 프로세스)에 대한 시작/종료/재시작 등의 기능제공 모듈
- 유사 모듈로 systemd 모듈이 있다.
- name 파라미터와 state 파라미터로 서비스를 시작/종료/재시작할 수 있다.
- name 파라미터 : 서비스 이름
- state 파라미터 : started - 시작 , stopped - 중지 , restarted - 재시작 , reloaded - 새로고침
Copy 모듈
ansible [host패턴] -m copy -a "[src, dest 파라미터]" --become -i [hosts파일 경로]
- control node에서 managed node로 파일복사 (전송)
- src 파라미터와 dest 파라미터로 파일을 전송할 수 있다.
- src 파라미터 : 복사 (전송)할 파일 이름 (경로 포함)
- dest 파라미터 : 복사 (전송)될 위치