본문 바로가기
DevOps

Ansible을 사용한 Provisioning

by Tedi__ 2025. 12. 9.

1. Provisioning 이란?

Provisioning(프로비저닝)이란 "IT인프라(서버, 네트워크 스토리지 등)을 설치하고 설정하여 사용자가 쓸 수 있게 만드는 모든 과정"을 말합니다.

 

2. Ansibie의 역할

Ansible은 프로비저닝을 자동화하기 위한 도구입니다.

예를 들어 "A, B, C" 서버에 최신버전의 Nginx를 설치하라는 작업을 자동화 할 수 있습니다.

 

3. Ansibie 특징

 

  • Agentless (에이전트리스):
    • 대상 서버에 별도의 프로그램(Agent)을 설치할 필요가 없습니다. SSH만 열려 있으면 바로 작업이 가능합니다. 이 점이 관리 부담을 확 줄여줍니다.
  • Idempotency (멱등성):
    • 같은 코드를 한 번 실행하든 백 번 실행하든 결과가 항상 같습니다.
    • 예: "Nginx를 설치해"라는 명령을 10번 내려도, 이미 설치되어 있다면 아무 작업도 하지 않고 "성공"으로 처리합니다. (시스템이 꼬이지 않음)
  • IaC (Infrastructure as Code):
    • 인프라 구성을 문서(코드)로 관리하므로 버전 관리(Git)가 가능하고, 누가 무엇을 언제 변경했는지 추적하기 쉽습니다

4. Ansible Workflow

 

Control Node: Ansible이 설치되어 있는 메인 노드, 여기서 작업을 지시합니다.

Manager Node: 작업대상 노드 입니다. 

Inventory: 작업 대상 노드 지정합니다. IP 또는 도메인을 사용하며 목적에 따라 그룹화도 가능합니다.

Playbook: "어떤 작업을 할지" 적어놓은 작업 지시서(Yaml)입니다.

 

5. Ansible Playbook 예시

---
- name: 웹 서버 프로비저닝
  hosts: webservers  # 대상 그룹
  become: yes        # 관리자 권한(sudo) 사용

  tasks:
    - name: Nginx 설치
      apt:
        name: nginx
        state: latest
        update_cache: yes

    - name: Nginx 서비스 시작
      service:
        name: nginx
        state: started

 

6. 마무리

이번 학습을 통해 Ansible을 활용하면 수십, 수백 대의 서버 인프라 설정을 간단한 작업만으로 자동화할 수 있다는 것을 확인했습니다.

특히 HDFS, Spark, Kafka와 같이 복잡한 클러스터링이 필요한 데이터 엔지니어링 인프라를 자동으로 구축하고 유연하게 확장하는 데 큰 도움이 될 것 같습니다.

다음 포스팅에서는 오늘 배운 내용을 바탕으로 실제 데이터 엔지니어링 인프라를 직접 구축해보는 과정을 담아보겠습니다.

'DevOps' 카테고리의 다른 글

Starrocks 클러스터 구축하기 with Ansible  (1) 2025.12.11
맥북에 리눅스 서버 5대 구성하기 - Ansible, Vagrant  (0) 2025.12.10
Icinga2 Monitoring Basic  (4) 2022.12.21
Icinga2란?  (0) 2022.12.21
[Docker] docker-cmd  (0) 2019.12.27