Ansible을 사용해 웹 앱을 10분 안에 배포하는 방법
Source: Dev.to
Ansible란?
Ansible은 서버 구성에 사용되는 강력한 자동화 도구입니다. SSH를 통해 동작하고 에이전트가 필요 없으며, YAML 플레이북을 사용해 작업을 자동화합니다.
이 가이드에서 배울 내용
- Ansible 설치 방법
- 프로젝트 구조 설정 방법
- SSH 키 추가 방법
- SSH 연결 테스트 방법
- 정적 콘텐츠 파일 생성 방법
- 샘플 플레이북 작성 방법
- 인벤토리 파일 구성 방법
- 플레이북 실행 방법
- 배포 확인 방법
Step 1 – Ubuntu에 Ansible 설치
sudo apt update
sudo apt install ansible -y
ansible --version
Step 2 – Ansible 프로젝트 구조 만들기
# 프로젝트 폴더 생성
mkdir ansible_demo
cd ansible_demo
# inventory와 playbooks 디렉터리 생성
mkdir inventory playbooks
Inventory 파일
cd inventory
touch hosts.ini
Playbook 파일
cd ../playbooks
touch web_prac.yml
Step 3 – 프로젝트에 SSH 키 추가
cd ..
mkdir ssh
cd ssh
touch nagios.pem
nagios.pem에 PEM 키 내용을 붙여넣고, 적절한 권한을 설정합니다:
chmod 600 nagios.pem
Step 4 – PEM으로 SSH 연결 테스트
ssh -i ssh/nagios.pem ubuntu@
정상적으로 로그인되면 연결이 정상적인 것입니다.
Step 5 – 정적 콘텐츠용 Files 폴더 만들기
cd ../playbooks
mkdir files
cd files
touch index.html
index.html 안에 HTML 콘텐츠를 추가합니다.
Step 6 – 샘플 플레이북 (web_prac.yml)
---
- name: Setup Web Server
hosts: webserver
become: yes
tasks:
- name: Install NGINX
apt:
name: nginx
state: present
update_cache: yes
- name: Copy index.html to web server
copy:
src: files/index.html
dest: /var/www/html/index.html
owner: www-data
group: www-data
mode: '0644'
- name: Start and enable NGINX
service:
name: nginx
state: started
enabled: yes
Step 7 – 인벤토리 파일 (hosts.ini)
[webserver]
13.201.29.244
ansible_user=ubuntu
ansible_ssh_private_key_file=../ssh/nagios.pem
Step 8 – Ansible 플레이북 실행
ansible_demo 디렉터리에서:
ansible-playbook -i inventory/hosts.ini playbooks/web_prac.yml
오류 없이 실행이 완료되면 배포가 성공한 것입니다.
Step 9 – 브라우저에서 확인
브라우저를 열고 다음 주소로 이동합니다:
http://
NGINX가 제공하는 index.html 내용이 표시되어야 합니다.
최종 결과
이 가이드를 마치면 다음을 수행할 수 있습니다:
- Ansible 설치
- 전문적인 프로젝트 구조 생성
- 인벤토리 파일 생성
- YAML 플레이북 작성
- 인증을 위한 SSH 키 추가
- Ansible을 이용한 웹 페이지 자동 배포