반응형
Ansible Playbook
Playbook 이란?
Inventory 파일에서 정의된 Server에서 무엇을 해야할지를 정의한 것이 Playbook임.
즉 자동화 절차를 기술한 코드 파일 코드 Set을 의미함.
YAML 포맷으로 표현되며 프로그래밍 언어나 스크립트가 아닌
설정이나 프로세스에 대한 모델에 대한 정의를 표현한 최소한의 문법으로 구성되어있음.
playbook의 목표는
호스트의 그룹을 잘 정의된 Ansible내에서 테스크로 불리는 역할(Role)에 매핑해주는 것.
Playbook 파일
파일명에 대한 규칙은 없음.
임의의 이름으로 playbook 파일을 생성해서
ansible-playbook 명령으로 실행하면 됨.
[명령어]
ansible-playbook "playbook 파일 이름"
Playbook 구조
Playbook - play- task 구조
Playbook - play- Roles 구조
Playbook - Hosts - Roles 구조
Playbook yaml 예제
---
- hosts: nginx
vars:
msg: "hello, world"
tasks:
- name: echo 테스트
command: echo {{ gw_ip }}
- name: echo 테스트2
command: echo {{ http_port }}
- name: echo 테스트3
command: echo "{{ msg }}"
- hosts: nginx2
vars:
msg: "hello, world2"
tasks:
- name: echo 테스트
command: echo {{ gw_ip }}
- name: echo 테스트2
command: echo {{ http_port }}
- name: echo 테스트3
command: echo "{{ msg }}"
|
hosts:
inventory에서 정의한 host.
task:
host에서 실행할 모듈
변수 정의 및 사용 방법
- name playbookTest
host: testInventory
vars:
test1: /home/temp/test1.txt
test2: /home/temp/test2.txt
tasks:
- name: fileTest1
debug: msg="{{test1}} file check"
debug: msg="{{test2}} file check"
|
"vars: " 항목에 변수를 입력함.
변수 사용 시 "{{ 변수명 }}" 형식으로 사용함.
playbook 예제
예제 script 과정 정리
1. directory 생성
-
Creates directory
2. control node에서 managed node로 파일 복사
-
store file to remote server
-
파일 권한 변경도 처리함.
3. test.sh shell script 실행
-
execute the script
4. 파일이 생성되었는지 확인
-
check file exists
5. managed node에서 control node로 파일 복사
-
file move to control node
6. directory 삭제
-
delete directory
playbook 예제
---
- hosts: all
remote_user: root
become: true
tasks:
- name: Creates directory
file:
path: /temp
state: directory
- name: store file to remote server
copy:
src: /root/ansible_test/temp/test.sh
dest: /temp/test.sh
mode: 0744
- name: execute the script
shell: ./test.sh
args:
chdir: /temp
executable: /bin/bash
- name: check file exists
wait_for:
path: /temp/sample.txt
- name: file move to control node
fetch:
src: /temp/sample.txt
dest: ./managedNodeFile.txt
flat: yes
- name: delete directory
file:
path: /temp/
state: absent
|
반응형
'클라우드 > Ansible' 카테고리의 다른 글
06. Ansible lookup (0) | 2022.01.09 |
---|---|
05. Ansible Role (0) | 2021.12.13 |
03. Ansible inventory (0) | 2021.12.13 |
02. Ansible 설치 (0) | 2021.12.12 |
01. Ansible 개념 (0) | 2021.12.12 |