이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

클라우드/Ansible

04. Ansible Playbook

이쿠우우 2021. 12. 13. 16:49
반응형

 

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