Taeyoung Kim

Cloud & Platform

Terraform과 Ansible 이해와 활용

Terraform과 Ansible 이해와 활용 학습 내용을 정리한 백필 노트입니다.

이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.


1. Ansible 이해와 활용

개요

  • 정의: IT 자동화 도구. 인프라 설치·구성 자동화, 클라우드 외 다양한 환경에서 동작.
  • 특징:
    1. Agent-less: 클라이언트에 별도 Agent 설치 필요 없음.
    2. YAML 기반 Playbook: 이해하기 쉬운 코드로 작업 정의.
    3. 다양한 모듈: 네트워크·DB 관리 등 광범위 지원.
    4. 멱등성: 여러 번 실행해도 동일한 결과 보장.
    5. Ad-hoc 명령: Playbook 없이 명령어로 모듈 실행 가능.

구성요소

  • Control Node: Ansible 설치·명령 실행 주체(리눅스 기반).
  • Managed Nodes: 관리 대상 서버/네트워크 장치.
  • Inventory: 관리 노드 목록(IP, 그룹).
  • Modules: 실행 단위 코드.
  • Tasks: 단일 작업.
  • Playbooks: 순서·변수 포함 반복 실행 작업 집합 (YAML).

설치 과정

  1. yum install -y ansible 등으로 설치.
  2. SSH 키 생성·복사, 인벤토리 파일(/etc/ansible/hosts) 및 설정파일(ansible.cfg) 구성.
  3. ansible -m ping all로 테스트.

장단점

  • 장점: Agentless, 간편한 배포(YAML), 다양한 플랫폼·서비스 통합 모듈 제공.
  • 단점: 상태 지속 관리 한계(Stateful 관리 어려움), 대규모 환경에서 속도 저하 가능.

Kubespray와 Kubernetes 클러스터 설치

  • Kubespray: Ansible 기반 Kubernetes 클러스터 설치/구성 도구. AWS, GCE, Azure, OpenStack 등 다양한 플랫폼 지원. 고가용성 클러스터 및 다수 리눅스 배포판 호환.
  • 아키텍처: Hypervisor 위 VM 환경에서 마스터·워커 노드, GitLab, ArgoCD 등으로 구성.

2. Terraform 이해와 활용

개요

  • 정의: HashiCorp 개발 오픈소스 IaC 도구. 인프라를 코드(HCL/JSON)로 작성해 생성·관리·업데이트.
  • 지원: 물리 서버, VM, 네트워크, 컨테이너, DB 등 대부분의 인프라를 리소스로 관리.
  • 멀티 클라우드: AWS, Azure, GCP, Kubernetes 등 1700+ 공급자(Provider) 지원.

동작 방식 및 흐름

  • 프로세스:
    • terraform init → 초기화
    • terraform plan → 실행 계획
    • terraform apply → 리소스 생성·수정
    • terraform show → 상태 확인
    • terraform destroy → 리소스 삭제
  • 구성 파일: .tf 파일로 인프라 정의, .tfstate로 상태 관리.
  • Providers: 클라우드 서비스(API)와 상호작용해 리소스 관리.

설정 예시

  • Azure Provider 설정에 subscription_id, client_id, tenant_id 등 필요.
  • Git을 통한 구성 파일 버전 관리, 다중 클라우드 환경 통합 관리 가능.

장단점

  • 장점:
    • 다양한 클라우드 지원, 멀티 클라우드 일관성 확보.
    • 선언적 구성(HCL)으로 원하는 상태를 명확히 정의.
    • 인프라 변경 이력 추적·롤백 가능.
  • 단점:
    • HCL과 자체 개념 학습 필요(학습 곡선).
    • 구성 관리보다는 인프라 프로비저닝에 특화.

Azure 활용

  • Azure CLI와 연동: Terraform을 통한 Azure 리소스 생성·변경·형상관리.
  • Azure Landing Zone: Azure 공식 아키텍처 문서 기반 표준화된 인프라 설계·배포를 Terraform 템플릿으로 구현하여 일관성 있는 환경 제공.