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
...