728x90
Playbook 이란
여러 호스트들을 대상으로 반복해야 하는 작업, 재사용이 필요한 작업, 구성 관리 등이 필요할 때 Playbook을 정의해서 사용할 수 있다.
Playbook 은 멱등성이라는 특징을 가진다. 멱등성이란 Ansible이 작업을 할 때 작업 상태가 원하는 최종 상태로 만들어진 경우 작업을 더 이상 반복하지 않는 특성이다. 그러나 멱등성이 적용되지 않는 몇몇 모듈들이 존재한다.
멱등성 예외 모듈 : command, shell, raw 같은 명령 모듈 또는 service 재시작 모듈은 해당하지 않는다.
Playbook 의 구성
- Playbook : 하나 이상의 Play를 가진다.
- Play: 하나 이상의 Task로 이루어져있다.
- Task : 하나의 Module과 Module의 옵션 및 arugment 포함한다.
즉, 플레이북은 여러 플레이를 정의하여 다중 작업을 처리하는데 사용될 수 있다.
Playbook 파일 작성하기
playbook 은 yaml 파일로 정의한다. yaml 은 쉽게 이해하자면 JSON 형식처럼 데이터를 정의하는데 쓰이는 언어이다.
hosts 와 tasks 항목은 반드시 들어가야 한다.
test-playbook.yaml 예시
- name: test-play1
hosts: ansi-node1
gather_facts: no
tasks:
- name: test-task1
debug:
msg: "hello ansible ansi-node1"
- name: test-play2
hosts: ansi-node2
gather_facts: yes
tasks:
- name: test-task2
debug:
msg: "hello ansible ansi-node2"
Playbook 실행하기
실행 전 YAML 문법 체크
$ ansible-playbook FILENAME --syntax-check
시뮬레이션을 해볼 수 있다. 그러나 주의할점은 순차적으로 작업되어야 하는 경우 play들이 올바르게 정의되었음에도 불구하고 에러가 날 수 있다. 따라서 check 명령어를 100% 믿고 의존하면 안된다
ansible-playbook FILENAME --check
Playbook 실행
ansible-playbook FILENAME
-v 옵션을 지정하여 각 작업마다 자세한 실행내용을 확인할 수 있다.
$ ansible-playbook intranet.yaml -v
728x90
'Cloud Engineering > Ansible' 카테고리의 다른 글
[Ansible] Fact (팩트 변수) 란? (0) | 2023.03.02 |
---|---|
[Ansible] Playbook 변수 사용하기 / vars_prompt / filter (필터) / lookup (조회) (0) | 2023.02.28 |
[Ansible] Ansible 설정 파일 ansible.cfg (0) | 2023.02.27 |
[Ansible] Ad-Hoc 명령 (0) | 2023.02.27 |
[Ansible] Inventory (인벤토리) 란? (1) - 정적 인벤토리 (0) | 2023.02.27 |