[Ansible] #3.4.1 Ansible 기본 - 모듈

[Ansible] #3.4.1 Ansible 기본 - 모듈

Ansible 의 기본 구성 요소인 모듈 에 대해서 알아보자.


1. 모듈 - 목록 및 상세 정보


Ansible Docs - Indexes of all Modules

위 링크는 Ansible 공식 문서에서 안내하는 모든 모듈 의 목록이다.

명령어로는 다음으로 확인할 수 있다.

ansible-doc -t module -l
ansible-doc -l

위 명령어를 실행하면 경고문이 엄청 올라오는데, 이는 버전이 올라감에 따라 deprecated 되는 모듈들에 대한 것이므로 무시해도 된다.

특정 모듈 의 상세 정보 확인 :

ansible-doc <MODULE>

apt 모듈의 상세 정보를 확인해보자.

ansible-doc apt

3

경로 끝에 apt.py 에 주목.
Python 파일임을 알 수 있다.

모든 모듈ansible 로 시작하며, 뒤로 오는것은 분류, 그 다음이 모듈 이름이다.
세번째 파라미터인 모듈 이름만 써도 되고, 풀 네임으로 써도 된다.

2. 모듈 - 옵션


모듈 을 어떻게 실행시킬 것인지를 지정한다.
옵션, 파라미터, 아규먼트 등의 이름으로 불린다.

모듈 마다 들어가는 옵션은 다 다르기 때문에, 어떤 모율 에 어떤 옵션이 있는지 알면 좋다.

3. 자주 사용하는 모듈 - 명령 관련


  • command : 명령 실행, 내부적으로 을 사용하지 않음 (쉘 기능 사용 불가)
  • shell : 명령 실행, 쉘 사용
  • raw : 명령 실행, Python 을 사용하지 않음 (레거시 네트워크 장비)
  • script : 스크립트 실행

command , shell , raw 이 세 개는 모두 명령어를 실행하는 모듈 이고, 이렇게 할 거면 굳이 Ansible 을 사용할 필요가 없다.
웬만하면 사용하지 말도록 하자.
우리가 원하는 모듈이 없는 경우, 즉 최악의 상황에서만 최후의 방법으로 사용해야한다.

ps -ef | more

1

위 결과로 TTY 라는 칼럼이 있다. TTY(teletypewriter) 는 터미널을 의미하는데, 콘솔에 tty 를 입력하면 현재 현재 터미널을 볼 수 있다.

2

ptsPseudo Terminal(가상 터미널) 을 의미한다.

터미널이라는 프로그램이 있고, 이 프로그램에서 실행하는것이 이다.
은 반드시 터미널이라는 프로그램이 있어야한다.

TTY? 인 것은 터미널을 사용하지 않는다는 뜻이다.
기존 systemctl 로 실행하던 apache, MySQL 등은 을 사용하여 실행하지 않는다.
즉, 모든 프로그램이 쉘을 사용하는 것은 아니고, command , raw 도 쉘을 사용하지 않는다.

참고로 우리가 기존에 사용하던 | , > , >> , > , alias 등은 Bash 쉘 의 기능이다.

raw 는 특이한 모듈인데, Python 을 둘 다 사용하지 않는다.
commandshell 은 모두 Python 을 사용하는 Python 모듈이다.
기본적으로 제어 노드관리 노드Python 을 사용한다.
그럼 raw 는 둘 다 사용하지 않는데 무엇을 위해서 사용하느냐하면, 레거시 네트워크 장비를 제어하기 위해 만들어졌다.
해당 장비들은 Unix긴 한데 패키지를 설치하지 못하기 때문에, Python 도 설치하지 못한다.
따라서 이러한 장비들을 제어하기 위해 사용한다.

4. 자주 사용하는 모듈 - 파일 관련


  • archive , unarchive : 아카이브
  • replace , lineinfile , blockinfile : 텍스트 파일 수정
  • copy , fetch : 파일 복사, 가져오기
  • synchromize : rsync
  • template : Jinja2 템플릿
  • file : 파일 및 속성 관리

텍스트 파일 수정의 경우, vim 등을 통해서 물론 편집할 수 있으나, 이러한 대화 형식은 배제되어야 한다.

sed 와 같은 명령 형식으로 Last line mode 에서 파일을 수정할 수 있다(vi의 명령 형식). 매우 중요.

: s/<OLD>/<NEW>/g

copycontrol -> mgmt , fetchmgmt -> control 방향으로 복사를 의미한다.

5. 자주 사용하는 모듈 - 네트워크 도구


  • get_url : http, https, ftp 등 파일 다운로드(wget 과 동일한 기능)
  • uri : 웹 서비스와 상호작용(curl 과 동일한 기능)
  • ping : 실제 ICMP 를 사용하지 않음, TCP 사용

6. 자주 사용하는 모듈 - 패키지 관련


  • gem : Ruby Gems
  • npm , 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 : 레지스트리 로그인/아웃

© 2022. All rights reserved.