[무료] [기초] 처음부터 설치하며 배우는 앤서블(Ansible) - 인프런 | 강의 (inflearn.com)
Playbook이란?
- 각본, 작전, 계획
- Playbook은 오케스트레이터 언어로 호스트 서버에서 시행할 정책, 시스템 프로세스 단계의 설정 자동화를 위해 사용된다.
- Ansible playbook은 반복, 재사용, 간단한 구성 관리 및 다중 시스템 배포, 복잡한 애플리케이션 배포 사용에 적합하다.
사용 예시)
대량의 서버에 웹 서비스를 설치 및 가동해야 할 때 서버 패키지 설치, 파일 전송, 서비스 재시작을 ansible playbook에 작성하여 한 번에 모든 과정을 진행할 수 있다.
멱등성이란?
연산을 여러번 적용해도 결과가 달라지지 않는 성질이다.
이와 같이 echo 명령어를 이용하여 내용을 추가하게 되면 똑같은 결과값이 3번 중복되어 입력된다.
따라서 멱등성을 위해 아래와 같이 Ansible Playbook을 작성하여 사용하게 된다.
R vi joon.yml
---
- name: Ansible_vim
hosts: localhost
tasks:
- name: Add ansible hosts
blockinfile:
path: /etc/ansible/hosts
block: |
[joon]
172.16.0.200
ansible playbook 명령어를 사용하여 yml 파일을 실행한다. 'changed =1'을 통해 내용이 수정되었음을 알 수 있다.
다시 joon.yml을 ansible-playbook 명령어로 실행하면 changed=0으로 출력된다.
/etc/ansible/hosts를 다시 한 번 확인하여도 내용이 바뀌지 않은 것을 볼 수 있다.
Playbook을 사용한 3대의 노드에 웹서비스 설치 및 기동
1. nginx 설치 및 데몬 실행
# vi nginx.yml
---
- hosts: nginx
remote_user: root
tasks:
- name: install epel-release
yum: name=epel-release state=latest
- name: install web server
yum: name=nginx state=present
- name: Start nginx web server
service: name=nginx state=started
nginx 설치 및 데몬 실행 yml을 작성하여 playbook을 실행하면 nginx가 설치된다.
# ansible nginx -m shell -a "systemctl status nginx
ansible 명령어로 nginx 데몬이 정상적으로 동작중인지 확인한다.
2. nginx를 서비스하기 위한 방화벽 포트 개방
# vi firewall.yml
---
- name: firewall
hosts: nginx
tasks:
- name: firewall register
shell: firewall-cmd --permanent --add-port=80/tcp
- name: firewall reload
shell: firewall-cmd --reload
방화벽 포트를 열어주기 위한 playbook을 작성하여 실행시켜준다.
다음과 같이 접속이 가능해진다.
3. 메인 페이지 교체하기
# curl -o index.html https://www.nginx.com
www.nginx.com의 주소에서 html 파일을 내려받아 index.html파일로 저장한다.
# vi nginx.yml
---
- hosts: nginx
remote_user: root
tasks:
- name: install epel-release
yum: name=epel-release state=latest
- name: install web server
yum: name=nginx state=present
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/ mode=0644
- name: Start nginx web server
service: name=nginx state=started
수정한 nginx.yml 플레이북을 실행시켜준다.
위와 같이 세 개의 서버의 메인페이지가 변경되어 출력된 것을 볼 수 있다.
4. nginx.yml 코드 분석하기
# vi nginx.yml
---
- hosts: nginx # /etc/ansible/hosts에 설정된 nginx 그룹에게 적용
remote_user: root # root 사용자가 아닐 때 root 권한이 필요하면 사용한다.
tasks:
- name: install epel-release
yum: name=epel-release state=latest # nginx 설치를 위한 확장 패키지 설치
- name: install web server
yum: name=nginx state=present # nginx 패키지 설치
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/ mode=0644 # index.html 복사
- name: Start nginx web server
service: name=nginx state=started # nginx 설치
'Ansible' 카테고리의 다른 글
Ansible과 사용할 Vagrant 설치 및 알아보기 (0) | 2021.07.12 |
---|---|
Ansible Playbook 작성 시 꿀팁 (0) | 2021.07.12 |
Ansible 모듈 사용하기 (0) | 2021.07.12 |
Ansible의 구성 파일, 명령어 옵션 (0) | 2021.07.12 |
Ansible 인벤토리 생성 및 모듈 활용 (0) | 2021.07.11 |