앤서블은 다음과 같이 구성되어 있다.
- 앤서블 소프트웨어
- 인벤토리
- 모듈
- 플레이북
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 명령과 같음.
반응형