Ansible 역할을 사용한 Apache 웹 서버 배포 자동화 🚀
Source: Dev.to
프로젝트 개요
- Apache 설치 자동화
- 정적 웹사이트 배포
- 깔끔한 구조를 위한 Ansible Roles 사용
- 핸들러와 변수 구현
- OS 기반 조건 실행 보장
DevOps 초보자와 인프라 자동화 사용 사례에 이상적입니다.
사용된 도구 및 기술
- Ansible – 구성 관리
- Apache2 – 웹 서버
- Linux (Debian 기반)
- YAML – 자동화 언어
프로젝트 디렉터리 구조
sample_role/
├── tasks/
│ └── main.yml
├── handlers/
│ └── main.yml
├── vars/
│ └── main.yml
├── files/
│ └── index.html
├── meta/
└── README.md
레이아웃은 표준 ansible-galaxy 역할 구조를 따릅니다.
역할 구성 요소 설명
vars/main.yml
재사용 가능한 변수를 정의합니다:
pkg: apache2
destfile: /var/www/html/
tasks/main.yml
패키지 설치와 웹사이트 배포를 처리합니다:
- name: Install apache2
package:
name: "{{ pkg }}"
state: latest
when: ansible_os_family == "Debian"
- name: Deploy static website on apache2
copy:
src: "."
dest: "{{ destfile }}"
become: yes
notify:
- start apache2
handlers/main.yml
필요할 때만 Apache 서비스를 시작하도록 보장합니다:
- name: start apache2
service:
name: apache2
state: started
enabled: yes
files/
정적 웹사이트 자산(HTML, CSS, JavaScript, 이미지)이 포함됩니다.
이 파일들은 Apache의 웹 루트 디렉터리로 직접 복사됩니다.
역할을 실행하는 플레이북
- hosts: all
become: yes
roles:
- sample_role
실행 흐름
- 플레이북이 Ansible 역할을 호출합니다.
- 변수가 로드됩니다.
- Apache가 설치됩니다 (Debian 기반 OS).
- 정적 웹사이트가 배포됩니다.
- 핸들러가 트리거됩니다.
- Apache 서비스가 시작되고 활성화됩니다.
기대 결과
-
Apache 웹 서버가 성공적으로 설치됨

-
Apache 서비스가 실행 중이며 부팅 시 자동 시작됨

-
서버 IP를 사용해 브라우저에서 정적 웹사이트에 접근 가능

Ansible Roles 사용의 장점
- 재사용 가능한 자동화 코드
- 깔끔하고 조직적인 구조
- 쉬운 유지보수
- 빠른 배포
- 인간 오류 감소
결론
이 프로젝트는 Ansible Roles를 활용하여 확장 가능하고 재사용 가능한 인프라 자동화를 구축하는 방법을 보여줍니다. 작업, 핸들러, 변수, 파일을 분리함으로써 솔루션은 프로덕션 수준이 되며 실제 DevOps 관행에 부합합니다.