728x90
플레이북이란
- 사용자가 원하는 내용을 미리 정의해둔 것
- 작업 내용을 파일로 만들어 반복 실행하기
- 멱등성 성질을 가짐 (멱등성: 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질)
- YAML 언어를 사용함 (권장 에디터 툴: ATOM, Sublime Text 3)
1) 멱등성이 적용되지 않은 경우
[root@Ansible-Server ~]# echo -e "[user01]\n172.30.1.13" >> /etc/ansible/hosts
[root@Ansible-Server ~]# echo -e "[user01]\n172.30.1.13" >> /etc/ansible/hosts
[root@Ansible-Server ~]# cat /etc/ansible/hosts
## db-[99:101]-node.example.com
...
[user01]
172.30.1.13
[user01]
172.30.1.13
# 실행한 만큼 적용됨
2) 멱등성이 적용된 경우: 플레이북 적용
플레이북 생성
vi jin.yml
---
- name: Ansible_vim # 파일 이름
hosts: localhost # 실행되는 곳
tasks: # 작업
- name: Add ansible hosts # 작업 이름
blockinfile: # 모듈 이름: 특정 블록을 파일이 기록
path: /etc/ansible/hosts # 기록할 위치
block: | # 블록을 기록할 시작 포인트
[user01]
172.30.1.13
플레이북 실행
[root@Ansible-Server ~]# ansible-playbook jin.yml
PLAY [Ansible_vim] ***********************************************************************
TASK [Gathering Facts] *******************************************************************
ok: [localhost]
TASK [Add ansible hosts] *****************************************************************
changed: [localhost]
PLAY RECAP *******************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
# 수정 사항이 없다는 내용
[root@Ansible-Server ~]# ansible-playbook jin.yml
PLAY [Ansible_vim] ***********************************************************************
TASK [Gathering Facts] *******************************************************************
ok: [localhost]
TASK [Add ansible hosts] *****************************************************************
ok: [localhost]
PLAY RECAP *******************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
멱등성 성질 확인: 여러 번 실행되더라도 같은 내용이라면 여러 번 기록되지 않음
[root@Ansible-Server ~]# cat /etc/ansible/hosts
...
## db-[99:101]-node.example.com
...
# BEGIN ANSIBLE MANAGED BLOCK
[user01]
172.30.1.13
# END ANSIBLE MANAGED BLOCK
플레이북 환경 설정
vim에 색 넣기
vim-plug 설치
웹 브라우저에서 ansible-vim 검색하여 접속 또는 아래 링크로 접속
https://github.com/pearofducks/ansible-vim
설치 안내 부분에서 vim-plug 클릭
해당 부분의 코드를 복사하여 실행
[root@Ansible-Server ~]# curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
> https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
ansible-vim 설치
~/.vimrc 생성
[root@Ansible-Server ~]# vi ~/.vimrc
call plug#begin()
Plug 'pearofducks/ansible-vim'
call plug#end()
패키지 설치
[root@Ansible-Server ~]# yum install -y vim-enhanced
[root@Ansible-Server ~]# yum install -y git
vim 설정
[root@Ansible-Server ~]# vim
# ansible-vim을 다운로드하여 설치 진행
:PlugInstall
# 설치가 완료되면 종료
:q
:q
vi 와 vim 모두 vim 호출되도록 설정
# bash 환경 파일 수정
[root@Ansible-Server ~]# vi ~/.bashrc
...
14 alias vi='vim'
# 수정한 bash 파일을 적용하기 위해 환경 설정을 다시 불러옴
[root@Ansible-Server ~]# su -
Last login: Thu Jun 2 02:38:42 EDT 2022 from 172.30.1.46 on pts/0
색으로 구분하기 편하게 설정된 것을 확인할 수 있음
에러를 읽기 편하게 설정
설정 전 에러 확인
설정 파일 수정
# 주석 제거 후 skippy를 debug로 값 변경
[root@Ansible-Server ~]# vi /etc/ansible/ansible.cfg
74 stdout_callback = debug
정렬된 에러 확인
플레이북 실습
플레이북을 통해 3대의 노드들에 웹 서비스 설치 및 실행
nginx.yml 플레이북 생성 및 실행
[root@Ansible-Server ~]# vi nginx.yml
---
- hosts: nginx
remote_user: root
tasks:
- name: install epel-release
yum: name=epel-release state=latest
- name: install nginx web server
yum: name=nginx state=present
- name: Start nginx web server
service: name=nginx state=started
[root@Ansible-Server ~]# ansible-playbook nginx.yml -k
SSH password:
방화벽 설정
- 플레이북 실행 후 서비스는 실행되고 있지만 방화벽 설정이 되어있지 않아 웹 브라우저에서 접속이 불가함
[root@Ansible-Server ~]# ansible nginx -m shell -a "systemctl stop firewalld" -k
SSH password:
172.30.1.13 | CHANGED | rc=0 >>
172.30.1.12 | CHANGED | rc=0 >>
172.30.1.11 | CHANGED | rc=0 >>
웹 브라우저에서 접속하여 nginx 기본 페이지 확인
172.30.1.11
172.30.1.12
172.30.1.13
nginx 기본 페이지 변경
1) index.html 파일 다운로드
# 변경할 index.html 파일 다운로드
[root@Ansible-Server ~]# curl -o index.html https://www.nginx.com
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 397k 0 397k 0 0 228k 0 --:--:-- 0:00:01 --:--:-- 228k
[root@Ansible-Server ~]# ls -rlt
total 408
-rw-------. 1 root root 1214 Jun 1 23:45 anaconda-ks.cfg
-rw-r--r--. 1 root root 271 Jun 2 05:00 nginx.yml
-rw-r--r--. 1 root root 406732 Jun 2 05:10 index.html
2) 플레이북 수정
[root@Ansible-Server ~]# vi nginx.yml
---
- hosts: nginx # nginx 대신 all 사용 가능 (all 사용 시 /etc/ansible/hosts의 호스트를 대상으로 함)
remote_user: root
tasks:
- name: install epel-release
yum: name=epel-release state=latest
- name: install nginx web server
yum: name=nginx state=present
- name: Upload default index.html for web server
copy: src=index.html dest=/usr/share/nginx/html/ mode=0644 # mode: 보안을 위한 설정
- name: Start nginx web server
service: name=nginx state=started
3) 플레이북 실행
[root@Ansible-Server ~]# ansible-playbook nginx.yml -k
변경된 nginx 페이지 확인
728x90
'Ansible' 카테고리의 다른 글
220603_2_앤서블_응용_Vagrantfile 수정 및 bootstrap.sh 생성 (0) | 2022.06.03 |
---|---|
220603_1_앤서블_응용_vagrant를 이용한 프로비저닝 (0) | 2022.06.03 |
220602_3_앤서블_기초_한 번의 명령어로 다수의 시스템에 작업하기 (0) | 2022.06.02 |
220602_2_앤서블_기초_앤서블 코어 설치 및 확인 (0) | 2022.06.02 |
220602_1_앤서블_기초_실습 환경 구성 (0) | 2022.06.02 |