새소식

⇥ DevOps Tech 🙋🏻‍♀️/✏️ Ansible

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
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.