ansible-playbook

이재연·2022년 7월 19일
0

Ansible의 여러 개의 작업이나 명령을 스크립트로 구성한 파일을 Playbook이라고 한다.
Ansible 문법을 따르며 yaml 형식을 따른다.
Playbook 명령은 멱등성을 보장한다.

ansible-playbook 명령어

명령어 실행 방법

ansible-playbook -플레이북위치

주요 옵션

  • -i : 인벤토리(플레이북을 수행할 대상지/호스트) 지정
    ex) ansible-playbook -i hosts.yml playbook.yml

  • -e : 추가 변수를 지정 키=값 형태 또는 파일로 할당한다.
    ex) ansible-playbook -e "src=/src dest=/dest" copy.yml

Playbook

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

Ansible에서 제공하는 플러그인. 다양한 플러그인을 제공하고 있다.

아래는 그 중 사용하고 있는 몇 개 플러그인

unarchive

로컬에서 대상지로 파일을 복사하거나 압축을 해제한다.

주요 파라미터

  • remote_src (Optional, 기본값 : no)
    값 : yes / no
    압축을 풀 파일이 이미 대상지에 있다면 yes 값을 설정하여 압축을 해제한다.
  • src (Required)
    값 : String
    remote_src가 no인 경우 복사할 파일의 로컬 서버 경로
    remote_src가 yes인 경우 압축을 해제할 파일이 있는 대상지 경로
  • dest (Required)
    값 : String
    파일을 복사하거나 압축을 풀 대상지의 절대 경로

그외 파라미터

ex) 압축 해제

---
- name: unarchive
  gather_facts: no
  hosts: all
  tasks:        
    - name: Extract Files To Sub
      ansible.builtin.unarchive:
        src: "{{ src }}" 
        dest: "{{ dest }}"
        
...

systemd

systemd 유닛을 관리한다.

주요 파라미터

  • name (Optional)
    값 : String
    서비스의 이름을 설정한다.
    확장자를 명시하지 않으면 .service로 지정한다.
  • state(Optional)
    값 : reloaded / restarted / started / stopped
    변경할 서비스 상태를 지정한다.

그외 파라미터

ex) 서비스 등록

---
- name: Service Enable
  gather_facts: no
  become: true
  hosts: all

  tasks:
    - name: Enable Service
      ansible.builtin.systemd:
        name: my-process.service
        enabled: yes
...

출처
https://docs.ansible.com/ansible/latest/index.html

0개의 댓글