Ansible 운영 - 2. Playbook 활용 및 예제 > Ansible 자료실

본문 바로가기

사이트 내 전체검색

뒤로가기 Ansible 자료실

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

페이지 정보

작성자 AnsibleM 작성일 20-10-21 16:35 조회 19,545 댓글 0

본문

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 수행

댓글목록 0

등록된 댓글이 없습니다.

Copyright © 소유하신 도메인. All rights reserved.

사이트 정보

회사명 : (주)리눅스데이타시스템 / 대표 : 정정모
서울본사 : 서울특별시 강남구 봉은사로 114길 40 홍선빌딩 2층 / tel : 02-6207-1160
대전지사 : 대전광역시 유성구 노은로174 도원프라자 5층 / tel : 042-331-1161

PC 버전으로 보기