앤서블은 다음과 같이 구성되어 있다.

  • 앤서블 소프트웨어
  • 인벤토리
  • 모듈
  • 플레이북

 

1. 인벤토리 (Inventory)

 

조작할 호스트 주소를 담아두는 파일

 

예)

[web]
node01.example.com
node02.example.com

[db]
node03.example.com

[testgroup:children] # [web]과 [db]를 자녀로 하는 부모그룹 [testgroup], 사용할 땐 testgroup만 적으면 된다.
web
db

 

2. 모듈 (Module)

- name: 파일 복사 예제
  hosts: examplehost
  tasks:
    - name: apple에서 banana로 파일 복사하기
      ansible.builtin.copy:
        src: /etc/apple/file.txt # source : 출발지
        dest: /etc/banana/file.txt # destination : 목적지

 

위의 yaml 파일 예제에서 ansible.builtin.copy를 모듈이라 한다. copy는 기본 내장되어 있는 모듈이며 이외에도 다양한 모듈이 있지만 실행하고 싶은 작업이 없다면 직접 만들어 모듈화(Python으로 작성) 할 수 있다.

 

3. 플레이북 (Playbook)

플레이북은 앤서블에서 스크립트라고 볼 수 있다. yaml으로 작성되기에 띄어쓰기에 유의해야한다.

 

예)

- name: file 모듈의 touch를 통한 test.txt 파일 생성하기 예제
  hosts: all
  tasks:
    - name: 예제
      ansible.builtin.file:
       path: /root/file-module-test.txt
       mode: "0600"
       owner: root
       group: root
       state: touch

 

주석설명 예제)

- name: # 로그에 표시되는 플레이북의 이름
  hosts: all # 인벤토리에서 해당되는 호스트를 가져옴, all은 인벤토리 내의 전 호스트.
  tasks: # 아래에 실행되는 작업들을 나열
    - name: # 테스크 이름
      ansible.builtin.file: # 사용하고자 하는 모듈
       path: /root/file-module-test.txt # 만들고자 하는 파일의 디렉토리와 이름, 존재하지 않으면 새로 생성
       mode: "0600" # 각종 권한들 지정
       owner: root # 해당 파일 주인
       group: root # 해당 파일이 속해있는 그룹
       state: touch # 모듈 file의 작업 중 touch, 작동은 bash의 touch 명령과 같음.
반응형

+ Recent posts