운영 Ansible 운영 - 2. Playbook 활용 및 예제
페이지 정보
본문
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 운영 - 3. Role 활용 및 예제 20.10.22
- 다음글Ansible 운영 - 1. 초기 설정 20.10.21
댓글목록
등록된 댓글이 없습니다.