[Ansible] #3.4.1 Ansible 기본 - 모듈
Ansible
의 기본 구성 요소인 모듈
에 대해서 알아보자.
- 1. 모듈 - 목록 및 상세 정보
- 2. 모듈 - 옵션
- 3. 자주 사용하는 모듈 - 명령 관련
- 4. 자주 사용하는 모듈 - 파일 관련
- 5. 자주 사용하는 모듈 - 네트워크 도구
- 6. 자주 사용하는 모듈 - 패키지 관련
- 7. 자주 사용하는 모듈 - 소스 제어 관련
- 8. 자주 사용하는 모듈 - 소스 제어 관련
- 9. 자주 사용하는 모듈 - 도커 관련
1. 모듈 - 목록 및 상세 정보
Ansible Docs - Indexes of all Modules
위 링크는 Ansible
공식 문서에서 안내하는 모든 모듈
의 목록이다.
명령어로는 다음으로 확인할 수 있다.
ansible-doc -t module -l
ansible-doc -l
위 명령어를 실행하면 경고문이 엄청 올라오는데, 이는 버전이 올라감에 따라 deprecated 되는 모듈들에 대한 것이므로 무시해도 된다.
특정 모듈
의 상세 정보 확인 :
ansible-doc <MODULE>
apt
모듈의 상세 정보를 확인해보자.
ansible-doc apt
경로 끝에 apt.py
에 주목.
Python
파일임을 알 수 있다.
모든 모듈
은 ansible
로 시작하며, 뒤로 오는것은 분류, 그 다음이 모듈
이름이다.
세번째 파라미터인 모듈
이름만 써도 되고, 풀 네임으로 써도 된다.
2. 모듈 - 옵션
모듈
을 어떻게 실행시킬 것인지를 지정한다.
옵션, 파라미터, 아규먼트 등의 이름으로 불린다.
모듈
마다 들어가는 옵션은 다 다르기 때문에, 어떤 모율
에 어떤 옵션이 있는지 알면 좋다.
3. 자주 사용하는 모듈 - 명령 관련
command
: 명령 실행, 내부적으로쉘
을 사용하지 않음 (쉘 기능 사용 불가)shell
: 명령 실행, 쉘 사용raw
: 명령 실행,Python
및쉘
을 사용하지 않음 (레거시 네트워크 장비)script
: 스크립트 실행
command
, shell
, raw
이 세 개는 모두 명령어를 실행하는 모듈
이고, 이렇게 할 거면 굳이 Ansible
을 사용할 필요가 없다.
웬만하면 사용하지 말도록 하자.
우리가 원하는 모듈이 없는 경우, 즉 최악의 상황에서만 최후의 방법으로 사용해야한다.
ps -ef | more
위 결과로 TTY
라는 칼럼이 있다. TTY(teletypewriter)
는 터미널을 의미하는데, 콘솔에 tty
를 입력하면 현재 현재 터미널을 볼 수 있다.
pts
는 Pseudo Terminal(가상 터미널)
을 의미한다.
터미널이라는 프로그램이 있고, 이 프로그램에서 실행하는것이 쉘
이다.
쉘
은 반드시 터미널이라는 프로그램이 있어야한다.
TTY
가 ?
인 것은 터미널을 사용하지 않는다는 뜻이다.
기존 systemctl
로 실행하던 apache, MySQL
등은 쉘
을 사용하여 실행하지 않는다.
즉, 모든 프로그램이 쉘을 사용하는 것은 아니고, command
, raw
도 쉘을 사용하지 않는다.
참고로 우리가 기존에 사용하던 |
, >
, >>
, >
, alias
등은 Bash 쉘
의 기능이다.
raw
는 특이한 모듈인데, Python
과 쉘
을 둘 다 사용하지 않는다.
command
와 shell
은 모두 Python
을 사용하는 Python
모듈이다.
기본적으로 제어 노드
든 관리 노드
든 Python
을 사용한다.
그럼 raw
는 둘 다 사용하지 않는데 무엇을 위해서 사용하느냐하면, 레거시 네트워크 장비를 제어하기 위해 만들어졌다.
해당 장비들은 Unix
긴 한데 패키지를 설치하지 못하기 때문에, Python
도 설치하지 못한다.
따라서 이러한 장비들을 제어하기 위해 사용한다.
4. 자주 사용하는 모듈 - 파일 관련
archive
,unarchive
: 아카이브replace
,lineinfile
,blockinfile
: 텍스트 파일 수정copy
,fetch
: 파일 복사, 가져오기synchromize
: rsynctemplate
: Jinja2 템플릿file
: 파일 및 속성 관리
텍스트 파일 수정의 경우, vim
등을 통해서 물론 편집할 수 있으나, 이러한 대화 형식은 배제되어야 한다.
sed
와 같은 명령 형식으로 Last line mode
에서 파일을 수정할 수 있다(vi의 명령 형식). 매우 중요.
: s/<OLD>/<NEW>/g
copy
는 control
-> mgmt
, fetch
는 mgmt
-> control
방향으로 복사를 의미한다.
5. 자주 사용하는 모듈 - 네트워크 도구
get_url
: http, https, ftp 등 파일 다운로드(wget
과 동일한 기능)uri
: 웹 서비스와 상호작용(curl
과 동일한 기능)ping
: 실제ICMP
를 사용하지 않음,TCP
사용
6. 자주 사용하는 모듈 - 패키지 관련
gem
: Ruby Gemsnpm
,yarn
: Node.js 패키지pip
: Python 패키지apt
: Ubuntu APT 패키지 <- 우리가 사용할 것yum
,dnf
: RedHat YUM, DNF 패키지package
: 일반적인 OS 패키지maven_artifact
: Maven 아티팩트
7. 자주 사용하는 모듈 - 소스 제어 관련
git
: Git 관리github_*
: GitHub 관련gitlab_*
: GitLab 관련bitbucket_*
: BitBucket 관련
8. 자주 사용하는 모듈 - 소스 제어 관련
cron
: crontab 관리iptables
,firewalld
,ufw
: 방화벽 관리parted
,filesystem
,mount
: 파티션, 파일시스템 및 마운트 관리lvg
,lvol
: LVM 관리reboot
: 재부팅service
: 서비스 관리
9. 자주 사용하는 모듈 - 도커 관련
docker_container
: 컨테이너 관리docker_image
: 이미지 관리docker_network
: 네트워크 관리docker_volume
: 볼륨 관리docker_login
: 레지스트리 로그인/아웃