Cloud & Platform
Terraform과 Ansible 이해와 활용
Terraform과 Ansible 이해와 활용 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
1. Ansible 이해와 활용
개요
- 정의: IT 자동화 도구. 인프라 설치·구성 자동화, 클라우드 외 다양한 환경에서 동작.
- 특징:
- Agent-less: 클라이언트에 별도 Agent 설치 필요 없음.
- YAML 기반 Playbook: 이해하기 쉬운 코드로 작업 정의.
- 다양한 모듈: 네트워크·DB 관리 등 광범위 지원.
- 멱등성: 여러 번 실행해도 동일한 결과 보장.
- Ad-hoc 명령: Playbook 없이 명령어로 모듈 실행 가능.
구성요소
- Control Node: Ansible 설치·명령 실행 주체(리눅스 기반).
- Managed Nodes: 관리 대상 서버/네트워크 장치.
- Inventory: 관리 노드 목록(IP, 그룹).
- Modules: 실행 단위 코드.
- Tasks: 단일 작업.
- Playbooks: 순서·변수 포함 반복 실행 작업 집합 (YAML).
설치 과정
yum install -y ansible등으로 설치.- SSH 키 생성·복사, 인벤토리 파일(/etc/ansible/hosts) 및 설정파일(ansible.cfg) 구성.
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 템플릿으로 구현하여 일관성 있는 환경 제공.