내 잡다한 노트

ansible 에서 자주 쓰이는 모듈 정리 본문

Infra/Ansible

ansible 에서 자주 쓰이는 모듈 정리

peanutwalnut 2024. 11. 12. 00:20

 

Ansible에서 ansible.builtin 접두사는 Ansible의 내장 모듈을 명확하게 지정하기 위해 도입된 네임스페이스입니다. 이는 Ansible 2.10 버전 이후부터 추가된 개념으로, 모듈의 출처나 종류를 명확히 구분하고, 추가적인 모듈 컬렉션을 쉽게 관리할 수 있도록 하기 위함입니다.

copy 모듈을 사용하려할 때, ansible.builtin을 접두사로 사용해도 되지만 내장 모듈이기 때문에 생략해도 상관없다. 

 

1. ping 모듈

서버와의 연결 상태를 확인하는 가장 기본적인 모듈입니다.

서버와의 연결을 테스트하고 응답이 있는지 확인하는 용도로 사용됩니다.

 
- name: Check connection
  ansible.builtin.ping:

2. apt 모듈

우분투나 데비안 기반 시스템에서 패키지를 설치하고 업데이트할 때 사용하는 모듈입니다.

yum 모듈은 레드햇 계열에서 비슷한 역할을 합니다.

 
- name: Install nginx
  ansible.builtin.apt:
     name: nginx
     state: present
     update_cache: yes

3. yum 모듈

레드햇 계열에서 패키지를 관리하는 모듈로, apt 모듈과 비슷한 기능을 합니다.

 
- name: Install nginx on CentOS
  ansible.builtin.yum:
     name: nginx
     state: present

4. copy 모듈

로컬에서 원격 서버로 파일을 복사할 때 사용됩니다. 경험상 디렉토리를 복사하려 할 때는 잘 안된다.

구글링을 하다가 찾은 팁인데 디렉토리를 복사하려고 한다면 command 모듈을 사용해 cp 를 하는것이 좋다. 

 
- name: Copy configuration file to server
  ansible.builtin.copy:
     src: /path/to/local/file.conf
     dest: /etc/nginx/nginx.conf

5. file 모듈

파일이나 디렉토리의 권한, 소유권, 존재 여부 등을 관리하는 모듈입니다.

 
- name: Ensure directory exists
  ansible.builtin.file:
     path: /etc/nginx/conf.d
     state: directory
     mode: '0755'

6. service 모듈

서비스를 시작, 정지, 재시작 또는 상태를 확인할 때 사용하는 모듈입니다.

 
- name: Restart nginx service
  ansible.builtin.service:
     name: nginx
     state: restarted

7. user 모듈

시스템 사용자 계정을 생성하거나 제거할 때 사용됩니다.

 
- name: Add new user
  ansible.builtin.user:
    name: example_user
    state: present
    groups: sudo

8. command 모듈

단순한 명령을 실행할 때 사용합니다.

shell 모듈과는 다르게 파이프와 같은 쉘 기능을 사용할 수 없다는 차이가 있습니다.

 
- name: Run uptime command
   ansible.builtin.command:
       cmd: /usr/bin/uptime

9. shell 모듈

쉘에서 파이프나 리다이렉션을 포함한 명령어를 실행할 수 있는 모듈입니다.

 
- name: Run custom shell command
  ansible.builtin.shell:
      cmd: "echo 'Hello, Ansible!' | tee /tmp/hello.txt"

10. git 모듈

Git 저장소를 클론하고, 업데이트하는 데 사용하는 모듈입니다.

 
- name: Clone a Git repository
   ansible.builtin.git:
      dest: /path/to/destination

 

11. cron 모듈

주기적인 작업을 스케줄링할 때 사용됩니다. 크론 작업을 추가, 삭제 또는 관리할 수 있습니다.

 
- name: Add a cron job to clean temp files
  ansible.builtin.cron:
     name: "Clean temp files"
     minute: "0"
     hour: "2"
     job: "/usr/bin/find /tmp -type f -delete"

12. debug 모듈

디버깅을 위해 사용되며, 변수의 값을 출력하거나 정보를 확인하는 데 사용됩니다.

 
- name: Print a message
  ansible.builtin.debug:
     msg: "This is a debug message!"

13. hostname 모듈

시스템의 호스트명을 설정하거나 변경하는 데 사용됩니다.

 
- name: Set the hostname
  ansible.builtin.hostname:
     name: new-hostname

14. lineinfile 모듈

파일 내 특정 라인을 추가하거나 수정할 때 사용됩니다. 설정 파일의 특정 옵션 값을 변경하거나 추가하는 데 유용합니다.

- name: Ensure a specific line exists in a configuration file
   ansible.builtin.lineinfile:
       path: /etc/sysctl.conf
       line: 'net.ipv4.ip_forward=1'
       state: present

15. systemd 모듈

systemd를 사용하는 시스템에서 서비스를 관리하는 데 사용됩니다. service 모듈과 비슷하지만 systemd를 명확히 지원합니다.

- name: Start and enable nginx service
  ansible.builtin.systemd:
      name: nginx
      enabled: yes
      state: started

16. uri 모듈

HTTP 요청을 수행할 때 사용됩니다. REST API 호출이나 HTTP 상태 코드 확인 등에 유용합니다.

 
- name: Check if a web server is responding
  ansible.builtin.uri:
     url: http://example.com
     return_content: yes

17. unarchive 모듈

압축 파일을 원격 서버에 풀 때 사용합니다. .zip, .tar.gz 등의 파일을 다운로드하고 압축을 해제하는 데 유용합니다.

- name: Unarchive a tar file
  ansible.builtin.unarchive:
     src: /path/to/file.tar.gz
     dest: /path/to/destination
     remote_src: yes

18. template 모듈

Jinja2 템플릿을 사용하여 동적으로 파일을 생성할 때 사용됩니다. 환경 설정 파일을 템플릿화하여 배포할 때 유용합니다.

- name: Deploy a configuration template
  ansible.builtin.template:
     src: /path/to/template.j2
     dest: /etc/config.conf

19. setup 모듈

호스트의 시스템 정보를 수집하는 모듈입니다. 이 모듈을 실행하면 운영 체제 정보, IP 주소, 네트워크 정보 등 다양한 데이터를 확인할 수 있습니다.

- name: Gather system information
  ansible.builtin.setup:

20. wait_for 모듈

특정 조건을 기다리는 데 사용합니다.

예를 들어, 포트가 열릴 때까지 기다리거나 파일이 존재할 때까지 기다리는 데 유용합니다.

- name: Wait for port 80 to become open
  ansible.builtin.wait_for:
     port: 80
     host: 127.0.0.1
     state: started
     delay: 10

'Infra > Ansible' 카테고리의 다른 글

ansible playbook 기본 구조  (0) 2024.08.27
Ansible 정리  (0) 2024.08.26
Ansible 특징  (0) 2024.06.02
Ansible 사용 후기  (1) 2024.06.02