Information Security Study

엔서블 모듈 사용하기 본문

네트워크 캠퍼스

엔서블 모듈 사용하기

gayeon_ 2024. 8. 26. 16:42

엔서블 모듈 사용하기

  • Ansible 모듈은 Ansible의 핵심 구성 요소 중 하나로 관리할 대상 서버(호스트)에 수행할 작업을 정의한 작은 코드 단위다.
  • 모듈은 다양한 작업을 자동화하는 데 사용되며 시스템 관리, 애플리케이션 배포, 클라우드 서비스 관리 등 다양한 목적에 맞게 설계되었다.
  • Ansible 모듈은 단일 작업을 수행하는 데 필요한 로직을 포함하고 있으며 작업 실행 시 Ansible은 모듈을 원격 호스트에서 실행한 후 결과를 수집해 반환한다.

 

 

Ansible 모듈의 종류

1) 기본 모듈

  • Ansible 설치 시 기본적으로 포함된 모듈로 운영 체제 관리, 파일 처리, 패키지 설치 등 일반적인 작업을 수행하는 데 사용된다.
  • 예시
    • file: 파일 및 디렉토리의 속성 관리 (예: 소유권 변경, 파일 생성 등)
    • copy: 로컬에서 원격 호스트로 파일 복사
    • yum, apt: 패키지 설치 및 관리
    • service: 서비스 관리 (예: 시작, 중지, 재시작)

 

2) 클라우드 모듈

  • AWS, GCP, Azure 등의 클라우드 플랫폼을 관리하기 위한 모듈이다.
  • 예시
    • ec2, s3: AWS 자원 관리
    • gcp_compute_instance: Google Cloud 인스턴스 관리

 

3) 네트워크 모듈

  • 네트워크 장치와의 상호작용을 위한 모듈이다. Cisco, Juniper, Arista 등의 네트워크 장비와 통신할 수 있다.
  • 예시
    • ios_config, nxos_config: Cisco 장비의 설정 변경
    • junos_config: Juniper 장비 관리

 

4) 데이터베이스 모듈

  • MySQL, PostgreSQL, MongoDB 등의 데이터베이스 시스템을 관리하기 위한 모듈이다.
  • 예시
    • mysql_db: MySQL 데이터베이스 관리
    • postgresql_user: PostgreSQL 사용자 관리

 

5) 사용자 정의 모듈

  • 필요에 따라 직접 Ansible 모듈을 작성할 수도 있다. Python 등의 언어로 작성할 수 있다.

 

Ansible 모듈 사용 예시

Ansible 모듈은 주로 플레이북에서 사용되며 각 모듈은 작업(task)로 정의된다.

 

ex) yum 모듈을 사용하여 Apache 웹 서버를 설치하는 작업

- name: Install Apache
  yum:
    name: httpd
    state: present

 

yum 모듈을 사용하여 Apache 웹 서버 패키지(httpd)를 설치한다.

 

 

모듈의 작동 방식

  • Ansible은 모듈을 원격 서버에 전송하고 그곳에서 실행한 후 결과를 다시 컨트롤러(Ansible을 실행한 시스템)로 가져온다.
  • 대부분의 모듈은 파이썬으로 작성되어 있으며 일부는 쉘 스크립트 또는 다른 언어로 작성될 수 있다.
  • 모듈은 "상태 기반"으로 설계되어 있다. 이는 모듈이 실행된 후 시스템의 상태를 보고 예상한 대로 변경되었는지 확인하는 것을 의미한다.

 

 

 

/etc/ansible/hosts 파일에 잘 등록되었다면 두 서버 모두 핑이 잘 보내질 것이다.

 

 

 

타겟 tmp 디렉터리를 만들고

 

 

 

master 서버에서 hello.txt를 생성한다.

 

 

 

앤서블 명령어로 파일을 전송할 수 있다.

 

 

 

target 서버의 tmp 디렉터리를 확인하면 hello.txt 파일이 생긴 것을 볼 수 있다.

 

 

 

이번에는 파일 전송이 아닌 패키지 설치를 해 볼 것이다.

먼저 nano 패키지를 삭제한다.

 

 

$ ansible target -m apt -a "name=nano state=present" --become

 

위 명령어로 target 서버에 nano 패키지를 설치할 것이다.

 

 

 

두 타겟 서버에 정상적으로 설치가 되었다.