Cloud Engineering/Ansible

[Ansible] Playbook (플레이북) 이란?

minjiwoo 2023. 2. 28. 11:06
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