https://holywat2r.tistory.com/162
[Linux] Ansible 실습 - AD-HOC와 모듈 사용법
https://docs.ansible.com/ansible/2.9/user_guide/intro_adhoc.html Introduction to ad-hoc commands — Ansible Documentation An Ansible ad-hoc command uses the /usr/bin/ansible command-line tool to aut..
holywat2r.tistory.com
# 앞선 실습으로 모듈사용법까지 알아보았다
# 이번 게시물에서는 playbook에 대해서 알아보자
PLAYBOOK 개념
- 명령어를 하나씩 입력하며 대상별로 작업을 실행할 수 있다. 그런데 한계가 있기에 복잡한 작업(여러작업)을 반복하는데 있어서 어렵다. 할 수는 있지만 불편하고 어렵다.
- 이러한 단점을 완화할 수 있게 일반적으로 플레이북이라는 작업내용을 파일 형태로 만들어서 저장하여 사용하는 방식을 사용한다.
- 필요할 때 값만 수정하면 되기에 재사용성에 유리하고 여러개의 작업을 나열할 수 있으니 한번에 복잡한 작업을 수행하기 좋은 방식. 실행할 때에는 작업제어 부분에서 동기식, 비동기식 방식으로 실행을 할 수 있다.
- YAML 언어를 사용하고 플레이라는 단위를 사용한다
- 문서의 시작과 끝을 악속 ---(시작) ... (끝) . 사용하지 않아도 무방하다
- 리스트 형식으로 플레이북을 작성할텐데 리스트마다 대시와 공백으로 한다 (- name)
- 즉, 대시기호와 공백이 함께 나오면 하나의 작업(플레이)라고 생각하면 된다.
YAML 언어를 사용하기 위한 세팅
- 홈 디렉토리에서 .vimrc 수정
ls -a ~
- 자동 세팅을 위한 설정이다.
vim ~/.vimrc
syntax on
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autoindent
# yaml 형식의 파일을 사용할 때만 값을 자동으로 세팅하겠다 (확장자)
# ts 들여쓰기를 스페이스바 2번으로 수정
# sts 줄바꿈을 했을대도 스페이스바 2번인것처럼 바꿔주면서 줄을 맞춰준다
# sw는 삭제시 2개씩 삭제
- 이후 연습을 해보자
vim test.yml
# yml 파일 = yaml파일 . 잘 적용이 되었다.
플레이북 테스트
- 테스트 디렉토리를 생성하고 내용을 추가해보자
mkdir playbook_test
cd playbook_test
vim playbook.yaml
---
- name: test playbook 1st
hosts: all
tests:
- name:
command:
copy:
src
dest
...
# hosts 나 tasks 는 하나일수도 있지만 여러개일 수 있기 때문에 s가 붙는다.
# name은 어떤일이 있어도 하나이기 때문에 name이다
# name : 작업에 대한 명칭이기에 아무거나 써도 무방
# hosts : 인벤토리 파일에서 어떤 대상을 지정할 것인가? <패턴>
# tasks : 모듈을 작성할 것. 바로 뒤에 쓰지 않고 줄을 바꿔 모듈을 여러개 나열할 것이다. 여러개의 모듈이 나올거기때문에 들여쓰기 후 대시 기호를 사용
# command 와 copy는 모듈이다.
플레이북 실습 1 Copy
- Copy 모듈을 사용하여 컨트롤러의 /etc/hosts 파일을 host2번으로 옮겨보자.
---
- name: test playbook 1st
hosts: host2
tasks:
- name:
copy:
src: /etc/hosts
dest: /etc/hosts
...
# Controller 노드의 /etc/hosts 파일이 host2번의 /etc/hosts로 옮겨짐으 볼 수 있다.
플레이북 실습 2 lineinfile
- 파일에 한줄을 추가하는 lineinfile을 실행해보자
- host3로 접속하여 /etc/hosts 파일을 확인해보자
---
- name: line in file test
hosts: host3
task:
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.10 controller
...
# host의 /etc/hosts 파일에 한줄 추가됨을 볼 수 있다.
# 나머지도 기입해보자
---
- name: line in file test
hosts: host1
task:
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.21 host1
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.21 host1
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.22 host2
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.23 host3
- name: lineinfile modules
lineinfile:
path: /etc/hosts
line: 10.0.2.24 host4
...
# module에서 ok 1개 change 4개다. controller 정보는 앞서 기입했으므로 ok가 뜬것이도. 나머지는 새롭게 기입이 되었기 때문에 changed가 뜬다.
# 이처럼 Lineinfile 모듈은 파일에 한 줄씩 추가를 할 수 있다.
플레이북 실습 3 blockinfile
- block단위로 라인을 추가하는 blockinfile 모듈을 실습해보자
- ssh host4를 통해 /etc/hosts 파일을 확인해보자
- 컨트롤러 노드에서 아래와같이 플레이북을 작성
---
- name: block test
hosts: host1
tasks:
- name: blockinfile modules
blockinfile:
path: /etc/hosts
block: |
10.0.2.10 controller
10.0.2.21 host1
10.0.2.22 host2
10.0.2.23 host3
10.0.2.24 host4
'DevOps > Ansible' 카테고리의 다른 글
[Ansible] Ansible 실습 - Playbook에 변수사용하기 (0) | 2021.09.10 |
---|---|
[Ansible] Ansible 실습 - AD-HOC, Playbook예제 풀어보기 (0) | 2021.09.10 |
[Ansible] Ansible 실습 - AD-HOC와 모듈 사용법 (0) | 2021.09.07 |
[Ansible] Ansible 실습 - 구성파일 설정 (0) | 2021.09.07 |
[Ansible] Ansible 실습 - 시스템 구성 및 인벤토리 설정 (0) | 2021.09.07 |