Terraform 백엔드(Backend) 구성

Terraform 백엔드(Backend) 구성

1️⃣ Terraform 백엔드 개념 및 필요성

1 백엔드(Backend)란?

Terraform에서 상태 파일(terraform.tfstate)의 저장 위치와 동작 방식을 정의하는 구성입니다.

Terraform은 상태 파일을 통해 현재 인프라 상태를 기억하고, 변경 사항을 추적합니다.

📦 백엔드의 역할

  • 상태 파일 저장
  • 잠금(Locking) 지원 (중복 적용 방지)
  • 상태 공유 (협업 시 중요)

2️⃣ 로컬 백엔드 vs 원격 백엔드

구분 로컬(Local) 백엔드 원격(Remote) 백엔드
저장 위치 현재 디렉토리의 terraform.tfstate 외부 저장소 (S3, Azure, GCS 등)
협업 ❌ 어려움 ✅ 가능
잠금 기능 ❌ 없음 ✅ 지원 가능
보안성 ❌ 로컬 파일 노출 위험 ✅ IAM 및 암호화 지원
사용 예 개인 테스트, 학습용 팀 협업, 운영 환경

📝 기본값은 로컬 백엔드입니다.


3️⃣ AWS S3, Azure Storage, GCP Storage를 이용한 원격 상태 관리

1 AWS S3 백엔드 예제

terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "dev/app/terraform.tfstate"
    region         = "ap-northeast-2"
    dynamodb_table = "terraform-lock"
    encrypt        = true
  }
}

📌 dynamodb_table은 **잠금(Locking)**을 위한 설정입니다.

구성도

[Terraform CLI] ⇄ [S3 버킷 (상태 저장)]
                      ⇅
              [DynamoDB (Lock 관리)]

2 Azure Storage 백엔드 예제

terraform {
  backend "azurerm" {
    resource_group_name  = "terraform-rg"
    storage_account_name = "terraformstate"
    container_name       = "tfstate"
    key                  = "dev.terraform.tfstate"
  }
}

3 GCP Storage 백엔드 예제

terraform {
  backend "gcs" {
    bucket  = "terraform-state-bucket"
    prefix  = "prod"
  }
}

4️⃣ Terraform Cloud & Terraform Enterprise 활용

1 Terraform Cloud 개요

  • HashiCorp에서 제공하는 SaaS 기반 원격 백엔드
  • 상태 파일 관리, 실행 환경 제공
  • UI 및 팀 권한 관리 지원

🎁 무료로 사용 가능, 소규모 팀에게 적합

2 Terraform Enterprise

  • 자체 호스팅 가능한 기업용 Terraform 플랫폼
  • 고급 보안, 정책 검사(Sentinel), 감사 로그 등 지원
terraform {
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"

    workspaces {
      name = "dev"
    }
  }
}

5️⃣ 백엔드 설정 예제 및 실습

1 백엔드 초기화 과정

  1. main.tfterraform { backend {} } 블록 추가
  2. terraform init 명령어로 백엔드 설정 적용
    terraform init

⚠️ 백엔드 변경 시 기존 상태를 새로운 백엔드로 마이그레이션 여부 확인 필요!

2 실습 예시: S3 백엔드 구성

# S3 버킷, DynamoDB 테이블 생성 후
terraform init

📂 .terraform 폴더 내부에 백엔드 정보가 저장됨
📄 로컬 상태 파일(terraform.tfstate)은 생성되지 않음


📌 정리

항목 설명
백엔드란? 상태 파일 저장 위치 및 방식 정의
로컬 vs 원격 로컬은 단독 사용, 원격은 협업 및 보안 강화
대표 원격 백엔드 AWS S3, Azure Blob, GCP GCS
SaaS 기반 Terraform Cloud는 관리형 백엔드
구성 방법 backend 블록 + terraform init

RSS Feed
마지막 수정일자