Ansible 역할을 사용한 Apache 웹 서버 배포 자동화 🚀

발행: (2026년 1월 14일 오후 04:48 GMT+9)
4 min read
원문: Dev.to

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

실행 흐름

  1. 플레이북이 Ansible 역할을 호출합니다.
  2. 변수가 로드됩니다.
  3. Apache가 설치됩니다 (Debian 기반 OS).
  4. 정적 웹사이트가 배포됩니다.
  5. 핸들러가 트리거됩니다.
  6. Apache 서비스가 시작되고 활성화됩니다.

기대 결과

  • Apache 웹 서버가 성공적으로 설치됨

    Apache installed

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

    Service running

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

    Website view

Ansible Roles 사용의 장점

  • 재사용 가능한 자동화 코드
  • 깔끔하고 조직적인 구조
  • 쉬운 유지보수
  • 빠른 배포
  • 인간 오류 감소

결론

이 프로젝트는 Ansible Roles를 활용하여 확장 가능하고 재사용 가능한 인프라 자동화를 구축하는 방법을 보여줍니다. 작업, 핸들러, 변수, 파일을 분리함으로써 솔루션은 프로덕션 수준이 되며 실제 DevOps 관행에 부합합니다.

Back to Blog

관련 글

더 보기 »