IT/CLOUD(AWS,Azure,GCP,Docker)

Ansible 운영 - 2. Playbook 활용 및 예제

알콩달콩아빠 2023. 11. 19. 20:33
728x90
반응형
1. Playbook


Ansible은 Playbook을 활용하여 원격 서버들에 대한 설정과 배포를 관리함.
YAML 포맷으로 표현되며 각각의 playbook은 한 개 이상의 play로 구성됨.
단독으로 사용되는 것이 아닌 inventory와 playbook의 조합으로 수행.

즉, inventory 파일에서 정의한 대상 서버들이 무엇을 수행할 것인지 playbook을 통해 정의함.

* playbook 작성 시 주의 사항 *
● YAML 파일 작성 시 들여쓰기는 TAB 키가 아닌 Space Bar 키로 할 것
● {{ 변수 } }가 있는 곳은 " "로 감쌀 것 > "{{ 변수 }}"
● 계층 구조상 동일한 수준의 요소들은 들여쓰기 동일하게, 하위 항목은 상위 항목보다 들여 써야 함


2. 예제

 

1) Ping Test

 

1
2
3
4
5
6
7
8
9
$ cat ping_test.yml
---
-  name: ping test
   hosts: all
   gather_facts: false
   tasks:
   - name: ping
     ping:
...
cs



- name : 작업을 설명하는 식별자(생략 가능)
- hosts : 작업 대상 hosts(inventory 내 hosts 지정)
- gather_facts : 작업 시작 전 host의 자원 정보 facts 수집 여부.
default로 동작하지만 대상 서버 수가 많을수록 수집 시간이 오래 걸리는 단점 등으로 인해 false로 설정하기도 함.
- tasks : 작업 목록. 하나의 play는 여러 task로 구성되며 순차적으로 하나씩 실행됨.
각 task는 하나의 모듈만 실행 가능(모든 task는 name을 가지고 있어야 함)


1
2
3
4
5
6
7
8
9
10
$ ansible-playbook -i inventory ping_test.yml
PLAY [ping test] ********************************************************************************************************************************************
 
TASK [ping] *************************************************************************************************************************************************
ok: [serverA]
ok: [serverB]
 
PLAY RECAP **************************************************************************************************************************************************
serverA                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
serverB                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
cs



2) File Module Test

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cat file_module_test.yml
---
- name: touch files test
  hosts: all
  gather_facts: false
  tasks:
  - name: create directory
    file:
      path: /home/ansible/test
      state: directory
 
  - name: touch file
    file:
      path: /home/ansible/test/test.txt
      state: touch
...
cs


> file 모듈 활용하여 지정된 경로에 디렉토리와 파일 생성

3) Conditional Test

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ cat conditional test
---
- name: test
  hosts: all
  tasks:
  - name: create directory
    file:
      path: /home/ansible/rhel7
      state: directory
 
  - name: touch file
    file:
      path: /home/ansible/rhel7/test.txt
      state: touch
    when:
    - ansible_distribution == "RedHat"
    - ansible_distribution_major_version == "7"
...
cs


> when 옵션을 활용하여 해당 조건을 만족하는 경우에 task 수행

 

출처 : Ansible 운영 - 2. Playbook 활용 및 예제 > Ansible 자료실 | LinuxDataSystem Community

728x90
반응형