Ansible은 Playbook을 활용하여 원격 서버들에 대한 설정과 배포를 관리함.
YAML 포맷으로 표현되며 각각의 playbook은 한 개 이상의 play로 구성됨.
단독으로 사용되는 것이 아닌 inventory와 playbook의 조합으로 수행.
즉, inventory 파일에서 정의한 대상 서버들이 무엇을 수행할 것인지 playbook을 통해 정의함.
* playbook 작성 시 주의 사항 *
● YAML 파일 작성 시 들여쓰기는 TAB 키가 아닌 Space Bar 키로 할 것
● {{ 변수 } }가 있는 곳은 " "로 감쌀 것 > "{{ 변수 }}"
● 계층 구조상 동일한 수준의 요소들은 들여쓰기 동일하게, 하위 항목은 상위 항목보다 들여 써야 함
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 |
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 모듈 활용하여 지정된 경로에 디렉토리와 파일 생성
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
'IT > CLOUD(AWS,Azure,GCP,Docker)' 카테고리의 다른 글
ansible 에러 Failed to connect to the host via ssh: Permission denied (0) | 2023.11.19 |
---|---|
[Ansible] 4 . Ansible Playbook 에서 hosts 인벤토리 파일 지정 (0) | 2023.11.19 |
[Ansible] 구성 파일 ansible.cfg (0) | 2023.11.11 |
앤서블 Ansible 구성파일 / 관리노드 연결 (0) | 2023.11.11 |
CentOS 7에 Ansible AWX를 설치하는 방법 (0) | 2023.11.11 |