Playbook?
Playbook은 앤서블에서 제공하는 변수와 모듈을 활용하여 수행할 정의한 작업을 실행하기 위한 스크립트이다. Playbook에서 실행되는 작업의 단위를 play라고 지칭한다.
Playbook은 YAML 형식으로 작성되며, 정의된 작업을 순차적으로 실행한다.
YAML
yaml 파일은 .yml 혹은 .yaml의 확장자를 가진다. yaml 포맷은 들여쓰기로 계층 구조를 표현한다. 이때 들여쓰기는 띄어쓰기 두칸을 권장한다. 탭 문자는 허용되지 않는다.
vim을 사용한다면, .vimrc 에 아래 옵션들을 추가해보자.
set expandtab
set tabstop=2
탭을 입력했을때 탭이 아닌 설정한 수 만큼의 스페이스가 입력된다.
yaml 파일에서 3개의 하이픈(-)은 문서의 시작을 의미하고, 문서의 마지막은 3개의 점(.)으로 마무리한다(일반적으로 생략한다).
'|'와 '>'를 사용하여 가시성을 향상 시킨 playbook을 작성할 수 있다.
include_newlines: |
exactly as you see
will appear these three
lines of poetry
fold_newlines: >
this is really a
single line of text
despite appearances
Playbook 작성하기
- Playbook 문법 체크
[root@Ansible-Controller ch05]# cat Hello-world.yml
---
- hosts: all
tasks:
- name: Print msg
debug:
msg: Hello World!
debug 모듈을 이용해여 Hello World! 라는 문자열을 출력하는 간단한 플레이북을 작성했다.
ansible-playbook --syntax-check 명령어를 통해 작성한 playbook에 문법 오류가 없는지 확인할 수 있다.
특별한 오류가 없는 경우 위 이미지와 같은 결과가 표출된다. 오류가 있는 경우에는 붉은 글씨로 오류를 야기한 행을 지적한다.
- Playbook 실행
ansible-playbook 명령을 통해 작성한 playbook을 실행하고 결과를 살펴보자.
위 결과를 보면 playbook에서 지정했던 대상 호스트를 명시하고, 각 Task 별 실행 결과를 출력한다. Gathering Facts는 playbook에서 따로 선언해주지 않았지만, ansible.cfg를 참조하여 반환되어 실행되었다. 이후 마지막에 playbook 실행의 최종 결과를 표출한다.
아래 Playbook 예시와 같이 하나의 playbook 내에서 다중 플레이를 구현할 수도 있다.
[root@Ansible-Controller ch05]# cat Hello-world.yml
---
- hosts: node1
tasks:
- name: Print msg
ansible.builtin.debug:
msg: Hello World!
- hosts: node2
tasks:
- name: Second Print msg
ansible.builtin.debug:
msg: Second Hello World!
'Engineering > Ansible' 카테고리의 다른 글
[Ansible] 6. Ansible Vault (0) | 2024.08.29 |
---|---|
[Ansible] 5. 변수 (1) | 2024.08.28 |
[Ansible] 3. Ansible.cfg, Generating SSH key (0) | 2024.08.26 |
[Ansible] 2. Ansible Inventory File (0) | 2024.08.21 |
[Ansible] 1. Ansible 시작하기 (0) | 2024.08.20 |