플레이북 만들기

플레이북 만들기 (Creating a playbook)

플레이북은 YAML 형식의 자동화 청사진으로, Ansible이 관리 노드를 배포하고 구성하는 데 사용하는 파일이에요. 이 글에서는 호스트에 ping을 보내고 "Hello world" 메시지를 출력하는 플레이북을 직접 만들어 보고, 그 실행 결과를 해석해 볼게요.

출처: 문서

본문

먼저 기본 개념을 정리하면, 플레이북 관련 용어는 다음과 같아요.

  • 플레이북 (Playbook) — 전체 목표를 달성하기 위해 Ansible이 수행할 작업의 순서(위에서 아래로)를 정의하는 플레이들의 목록이에요.
  • 플레이 (Play) — 인벤토리의 관리 노드에 매핑되는 정렬된 작업 목록이에요.
  • 작업 (Task) — Ansible이 수행하는 작업을 정의하는 단일 모듈에 대한 참조예요.
  • 모듈 (Module) — Ansible이 관리 노드에서 실행하는 코드 또는 바이너리 단위예요. Ansible 모듈은 컬렉션으로 묶이며, 각 모듈에는 완전한 컬렉션 이름(FQCN, Fully Qualified Collection Name)이 붙어요.

호스트에 ping을 보내고 "Hello world" 메시지를 출력하는 플레이북을 만들어 볼게요:

  1. 이전에 만든 ansible_quickstart 디렉터리에 playbook.yaml이라는 파일을 만들어 다음 내용을 넣어요.
- name: My first play
  hosts: myhosts
  tasks:
    - name: Ping my hosts
      ansible.builtin.ping:

    - name: Print message
      ansible.builtin.debug:
        msg: Hello world
  1. 플레이북을 실행해요.
ansible-playbook -i inventory.ini playbook.yaml

Ansible은 다음과 같은 출력을 반환해요.

PLAY [My first play] ****************************************************************************

TASK [Gathering Facts] **************************************************************************
ok: [192.0.2.50]
ok: [192.0.2.51]
ok: [192.0.2.52]

TASK [Ping my hosts] ****************************************************************************
ok: [192.0.2.50]
ok: [192.0.2.51]
ok: [192.0.2.52]

TASK [Print message] ****************************************************************************
ok: [192.0.2.50] => {
    "msg": "Hello world"
}
ok: [192.0.2.51] => {
    "msg": "Hello world"
}
ok: [192.0.2.52] => {
    "msg": "Hello world"
}

PLAY RECAP **************************************************************************************
192.0.2.50: ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.0.2.51: ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
192.0.2.52: ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

이 출력에서 확인할 수 있는 것들이 있어요:

  • 플레이와 각 작업에 붙인 이름 — 플레이북을 검증하고 문제를 해결하기 쉽게 하려면 항상 설명적인 이름을 사용하는 것이 좋아요.
  • "Gathering Facts" 작업 — 이 작업은 암시적으로(implicitly) 실행돼요. 기본적으로 Ansible은 플레이북에서 사용할 수 있도록 인벤토리에 대한 정보를 수집해요.
  • 각 작업의 상태 — 각 작업은 ok 상태를 가지며, 이는 성공적으로 실행되었음을 뜻해요.
  • 플레이 레캡(play recap) — 플레이북의 모든 작업 결과를 호스트별로 요약해 줘요. 이 예시에는 작업이 세 개이므로 ok=3은 각 작업이 성공적으로 실행되었음을 나타내요.

축하해요, Ansible 사용을 시작했어요!

더 알아보기 (Learn more)

  • Ansible playbooks — 실제 시나리오를 위한 플레이북 만들기 시작하기
  • Working with playbooks — Ansible 플레이북을 더 자세히 다루기
  • Ansible tips and tricks — 플레이북 사용을 위한 팁과 트릭
  • Discovering variables: facts and magic variables — 플레이북의 gather_facts 키워드에 대해 배우기