Ansible의 여러 개의 작업이나 명령을 스크립트로 구성한 파일을 Playbook이라고 한다.
Ansible 문법을 따르며 yaml 형식을 따른다.
Playbook 명령은 멱등성을 보장한다.
명령어 실행 방법
ansible-playbook -플레이북위치
주요 옵션
-i : 인벤토리(플레이북을 수행할 대상지/호스트) 지정
ex) ansible-playbook -i hosts.yml playbook.yml
-e : 추가 변수를 지정 키=값 형태 또는 파일로 할당한다.
ex) ansible-playbook -e "src=/src dest=/dest" copy.yml
playbook의 구조는 yaml 형식을 사용한다.
문서 시작은 ---으로 표시하고 종료는 ...로 표시한다.
주요 모듈
name : 작업명(생략 가능)gather_facts : 작업 시작 전 대상지의 자원 정보 수집 여부become : 권한을 변경한다. hosts : 해당 모듈을 적용할 인벤토리 지정debug : 변수를 콘솔에 출력할 수 있다.register: 플레이북에서의 결과를 변수로 정하기 위해 사용when : 작업 수행 조건, 특정 조건에서만 실행 할 때 사용shell : shell script를 실행한다.stat : 파일이나 시스템의 상태를 확인한다.file : 파일 관련 작업을 수행한다.ex) 디렉토리 생성
---
- name: mkdir
gather_facts: no
hosts: all
tasks:
- name: make dir
file:
path: /home/dir
state: directory
...
ex) 파일 복사
---
- name: copy
gather_facts: no
become: true
hosts: all
tasks:
- name: Checking Service File
stat: path=./src/my-process
register: stat_service
- debug: msg="File Exist"
when: stat_service.stat.exists
- name: Copy Service File
shell: cp ./src/my-process ./dest
when: stat_service.stat.exists
...
Ansible에서 제공하는 플러그인. 다양한 플러그인을 제공하고 있다.
아래는 그 중 사용하고 있는 몇 개 플러그인
로컬에서 대상지로 파일을 복사하거나 압축을 해제한다.
주요 파라미터
remote_src (Optional, 기본값 : no)src (Required)dest (Required)ex) 압축 해제
---
- name: unarchive
gather_facts: no
hosts: all
tasks:
- name: Extract Files To Sub
ansible.builtin.unarchive:
src: "{{ src }}"
dest: "{{ dest }}"
...
systemd 유닛을 관리한다.
주요 파라미터
name (Optional)state(Optional)ex) 서비스 등록
---
- name: Service Enable
gather_facts: no
become: true
hosts: all
tasks:
- name: Enable Service
ansible.builtin.systemd:
name: my-process.service
enabled: yes
...