플레이북 만들기
플레이북 만들기 (Creating a playbook)
플레이북은 YAML 형식의 자동화 청사진으로, Ansible이 관리 노드를 배포하고 구성하는 데 사용하는 파일이에요. 이 글에서는 호스트에 ping을 보내고 "Hello world" 메시지를 출력하는 플레이북을 직접 만들어 보고, 그 실행 결과를 해석해 볼게요.
출처: 문서
본문
먼저 기본 개념을 정리하면, 플레이북 관련 용어는 다음과 같아요.
- 플레이북 (Playbook) — 전체 목표를 달성하기 위해 Ansible이 수행할 작업의 순서(위에서 아래로)를 정의하는 플레이들의 목록이에요.
- 플레이 (Play) — 인벤토리의 관리 노드에 매핑되는 정렬된 작업 목록이에요.
- 작업 (Task) — Ansible이 수행하는 작업을 정의하는 단일 모듈에 대한 참조예요.
- 모듈 (Module) — Ansible이 관리 노드에서 실행하는 코드 또는 바이너리 단위예요. Ansible 모듈은 컬렉션으로 묶이며, 각 모듈에는 완전한 컬렉션 이름(FQCN, Fully Qualified Collection Name)이 붙어요.
호스트에 ping을 보내고 "Hello world" 메시지를 출력하는 플레이북을 만들어 볼게요:
- 이전에 만든
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
- 플레이북을 실행해요.
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키워드에 대해 배우기