카테고리 없음

클라우드 인프라 프로비저닝 및 관리 자동화

공부하는 나무꾼 2025. 5. 30. 17:54
✅ 미션 목표: 
클라우드 인프라를 효율적으로 운영하기 위해 인프라를 코드(IaC)로 정의하여 자동화합니다.
IaC 도구(Terraform, CloudFormation 등)를 사용해 클라우드 리소스를 프로비저닝하는 스크립트를 작성합니다.
또한, CI/CD 툴(Jenkins, GitHub Actions 등)을 사용해 자동화 파이프라인을 설계하고, 이를 통해 인프라를 지속적으로 관리합니다.
운영 대시보드를 구축하여 인프라 상태와 성능을 실시간으로 모니터링합니다.

 

1. 기본 개념들

1.1 IaC란?

IaC는 "코드로 인프라를 정의하고 관리하는 방식"을 의미한다.


즉, 인프라(서버, 네트워크, 데이터베이스, 스토리지 등)를 수동으로 구성하지 않고, 코드 파일로 기술해서 자동으로 구축, 변경, 배포할 수 있다.

 

가장 대표적인 IaC 도구는 Terraform과 CloudFormation이 있다.

 

  • Terraform: 클라우드-중립 오픈소스 IaC 도구 (AWS, Azure, GCP 등 다중 지원)
  • CloudFormation: AWS 전용 IaC 도구

1.2 Terraform

Terraform은 HashiCorp에서 만든 오픈소스 IaC 도구로,

인프라 리소스를 선언형(declarative) 방식으로 정의하고 자동화할 수 있게 해준다.

 

1.2.1 Terraform의 특징

 

  • 클라우드-중립성: AWS, Azure, GCP, Kubernetes 등 다양한 플랫폼 지원.
  • 선언형 언어(HCL): “무엇을” 원하는지 정의하면 Terraform이 “어떻게” 할지를 처리.
  • 계획(plan) → 적용(apply) → 상태 관리(state) 흐름.
  • 모듈화: 코드 재사용성을 높이기 위한 모듈 기능 제공.

1.2.2 Terraform 기본 형식

 

# main.tf 예시
provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}
  • provider : 어떤 클라우드나 서비스 제공자(provider)를 사용할지 정의한다.
    • Terraform은 여러 provider를 지원한다. (예: aws, google, azurerm, kubernetes 등).
  • region : AWS 리전(지역)을 지정한다.
  • resource : 생성할 실제 리소스를 정의하는 블록. 
    • "aws_instance" : AWS의 EC2 인스턴스를 만들겠다는 의미
    • "example" : 생성할 인스턴스의 이름
  • ami(Amazon Machine Image) : EC2 인스턴스의 운영체제 템플릿 역할
    • 예: Ubuntu, Amazon Linux, CentOS 등
    • 리전마다 가능한 AMI 종류가 다를 수 있으므로, 사전에 확인해야한다.
  • instance_type : 인스턴스의 스펙(사양)을 설정하는 부분이다.
    • "t2.micro"는 AWS에서 제공하는 가장 작은 인스턴스 유형 중 하나로,
      무료 티어에 해당되기 때문에 테스트용으로 많이 사용된다.

1.2.3 Terraform의 기본 명령어

# 초기화: 현재 디렉토리에서 Terraform 설정을 초기화하고 필요한 플러그인 다운로드
terraform init	

# 계획 수립: 어떤 리소스가 생성/변경/삭제될지 미리 확인 가능
terraform plan	

# 적용: 실제 클라우드에 리소스를 생성/수정/삭제
terraform apply	

# 삭제: 모든 리소스를 정리해서 인프라 제거
terraform destroy

 

 

2. 실습

2.1 실습 구조

infra-automation/
├── terraform/
│   ├── main.tf
│   ├── variables.tf
│   └── outputs.tf
├── .github/
│   └── workflows/
│       └── terraform.yml
├── scripts/
│   └── setup-monitoring.sh
├── README.md

 

2.2 실습 전 세팅

로컬에 SSH 키 생성

ssh-keygen -t rsa -b 4096 -f ~/.ssh/monitoring-key

→ 다음 파일이 생성됨:

  • Private key: ~/.ssh/monitoring-key ← 이걸로 EC2 접속
  • Public key: ~/.ssh/monitoring-key.pub ← 이걸 Terraform에서 사용

2.3 테라폼 실행 명령어

terraform init

 

terraform plan

 

terraform apply -auto-approve