Docker & Ansible: DevOps 인프라 자동화 설정 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Docker + Ansible: 인프라 자동화를 위한 체계적인 설정 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- 개발자 및 DevOps 엔지니어: 복잡한 서버 관리와 배포 프로세스를 체계적으로 자동화하고 싶은 사람들

- 난이도: 중간(Ansible 기본 지식 필요)

핵심 요약

  • 모듈화된 Ansible 구조로 인프라 자동화를 간결하게 구현
  • ansible_facts로 OS별 패키지 설치, tags로 특정 작업 실행, handlers로 서비스 재시작 관리
  • roles/ 디렉터리 내 defaults/main.yml, tasks/, handlers/main.yml 등 핵심 구성 요소 포함

섹션별 세부 요약

1. 구조 설계

  • ansible/ 디렉터리에 README.md, ansible.cfg, hosts.ini, requirements.yml 등 기본 파일 구성
  • roles/ 디렉터리 내 server-tools/ 역할을 통해 defaults/main.yml, tasks/, handlers/main.yml 등 모듈화
  • tests/ 디렉터리 내 inventorytest.yml을 통해 테스트 자동화 지원

2. OS별 패키지 설치

  • ansible_facts 사용으로 RedHat/Debian 기반 Linux 배포판에 맞는 패키지 설치
  • name: Install web server based on OS family
    package:
      name: "{{'httpd' if ansible_facts['os_family'] == 'RedHat' else 'apache2'}}"
      state: present
  • os_family 변수를 통해 호환성 확보

3. 반복 작업 최적화

  • loop 사용으로 사용자 생성 작업 간결화
  • - name: Create users
      user:
        name: "{{item.name}}"
        groups: "{{item.groups}}"
      loop: "{{user_list}}"
  • user_list 예시:
  • user_list:
      - { name: "alice", groups: "docker" }
      - { name: "bob", groups: "sudo" }

4. 핸들러 활용

  • notify로 서비스 재시작 트리거
  • - name: Update NGINX config
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Restart NGINX
  • handlers/main.yml에서 실제 서비스 재시작 명령
  • - name: Restart NGINX
      service:
        name: nginx
        state: restarted

5. 태그 기반 작업 실행

  • tags로 특정 작업만 실행 가능
  • - name: Sync NGINX config
      copy:
        src: nginx.conf
        dest: /etc/nginx/nginx.conf
      tags:
        - nginx
        - config
  • 실행 명령:
  • ansible-playbook install-server-tools.yml --tags config

6. 도구 설치 역할

  • roles/server-tools/tasks/install_docker.ymlwander.yml을 통해 Docker, Wander 설치
  • get_url 모듈로 외부 이진 파일 다운로드
  • - name: Install Wander binary
      get_url:
        url:
        dest: /usr/local/bin/wander
        mode: '0755'

결론

  • 모듈화된 Ansible 구조를 통해 인프라 자동화의 유지보수성과 확장성을 극대화
  • ansible_facts, tags, handlers 등 핵심 기능을 활용해 복잡한 배포 프로세스를 간결하게 처리
  • 실행 명령 예시:
  • ansible-playbook -i hosts.ini install-server-tools.yml -v
  • 결과: Docker, dev tools, certbot, cron, 재시작 안전한 nginx 설정 완료