Ansible Playbook
Playbook 이란 ?
사용자가 원하는 작업을 미리 작성해 놓은 파일
각각의 동작을 커맨드로 수행했어야 하는데 playbook 을 작성해 놓으면 지정해논 타겟에 해당 내용을 한번에 실행할 수 있음
# 양식
# Yml 파일 작성
---
# playbook 이름
- name: Add an ansible hosts
# playbook 이 수행할 host
hosts: localhost
# 작업
tasks:
- name: Add an ansible hosts # task 의 이름
blockinfile: # 작업 지시
path: /etc/ansible/hosts # 작업할 경로
block: |
[mygroup]
172.17.0.5
위 내용은 하나의 예시 파일이다.
Tasks 에는 수행하고자 하는 동작을 기술하는데 파일에 특정 블럭을 만들고 내용을 추가하도록 작성되어 있다.
해당 예제 파일을 수행해보자.
- 수행 전 hosts 파일
# cat /etc/ansible/hosts
[devops]
172.17.0.3
172.17.0.4
- 수행 내용
# ansible-playbook first-playbook.yml
PLAY [Add an ansible hosts] ****************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Add an ansible hosts] ****************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-playbook command 를 이용해서 first-playbook.yml 파일을 수행했다.
playbook 의 이름이 출력된 후 task를 수행하는데 Add an ansible hosts 가 수행됨을 보여주고 hosts 파일이 변경되었기 때문에 changed=1 로 표시되고 있다.
- 수행 결과
# cat /etc/ansible/hosts
[devops]
172.17.0.3
172.17.0.4
# BEGIN ANSIBLE MANAGED BLOCK
[mygroup]
172.17.0.5
# END ANSIBLE MANAGED BLOCK
ANSIBLE MANAGED BLOCK 으로 표시되며 지정된 동작이 수행되었다.
이처럼 다양한 동작을 playbook 을 사용해서 작성할 수 있다.
playbook-sample1.yml
---
- name: Ansible Copy Example Local to Remote
hosts: devops
tasks:
- name: copying file with playbook
copy:
src: ~/sample.txt
dest: /tmp
owner: root
mode: 0644
파일을 복사해서 붙여넣는 copy task 예제이다.
# ansible-playbook playbook-sample1.yml
PLAY [Ansible Copy Example Local to Remote] ************************************
TASK [Gathering Facts] *********************************************************
ok: [172.17.0.4]
ok: [172.17.0.3]
TASK [copying file with playbook] **********************************************
changed: [172.17.0.4]
changed: [172.17.0.3]
PLAY RECAP *********************************************************************
172.17.0.3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.17.0.4 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
지정한 hosts 그룹들에서 동작이 수행되며, copying file with playbook TASK가 수행되었다.
현재 경로에 존재하는 sample.txt 파일이 /tmp 경로로 복사되었다.
playbook-sample2.yml
---
- name: Download Tomcat9 from tomcat.apache.org
hosts: devops
tasks:
- name: Create a Directory /opt/tomcat9
file:
path: /opt/tomcat9
state: directory
mode: 0755
- name: Download Tomcat using get_url
get_url:
url: https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
dest: /opt/tomcat9
mode: 0755
checksum: sha512:https://downloads.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz.sha512
/opt/tomcat9 디렉토리를 생성하고 해당 디렉토리에 tomcat 파일을 홈페이지에서 다운로드 받는 playbook 예제이다.
# ansible-playbook playbook-sample2.yml
PLAY [Download Tomcat9 from tomcat.apache.org] *********************************
TASK [Gathering Facts] *********************************************************
ok: [172.17.0.4]
ok: [172.17.0.3]
TASK [Create a Directory /opt/tomcat9] *****************************************
changed: [172.17.0.3]
changed: [172.17.0.4]
TASK [Download Tomcat using get_url] *******************************************
changed: [172.17.0.3]
changed: [172.17.0.4]
PLAY RECAP *********************************************************************
172.17.0.3 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.17.0.4 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Create a Directory TASK 와 Download Tomcat using get_url TASK 가 정상적으로 수행되었다.
이처럼 원하는 동작들을 playbook 으로 작성해놓으면 언제든 ansible 을 통해 수행하여 동작을 코드로써 관리할 수 있게 된다.
'⇥ DevOps Tech 🙋🏻♀️ > ✏️ Ansible' 카테고리의 다른 글
Ansible Role 을 이용한 노드 설치 자동화 (59) | 2023.10.20 |
---|---|
Ansible Role 작성 방법 (0) | 2023.10.18 |
Ansible Tower (AWX) 설치 방법 (0) | 2023.10.17 |
Ansible 사용 방법 (4) | 2022.09.26 |
Ansible 입문 (1) | 2022.09.26 |
댓글
이 글 공유하기
다른 글
-
Ansible Role 작성 방법
Ansible Role 작성 방법
2023.10.18 -
Ansible Tower (AWX) 설치 방법
Ansible Tower (AWX) 설치 방법
2023.10.17 -
Ansible 사용 방법
Ansible 사용 방법
2022.09.26 -
Ansible 입문
Ansible 입문
2022.09.26