본문으로 건너뛰기

1. Terraform Backend 개요

  • Terraform은 관리하는 인프라 리소스를 추적하기 위해 상태 데이터를 저장합니다.
  • 이 상태 데이터를 저장하는 방식을 정의하는 것이 바로 백엔드 설정입니다.
    • HCP Terraform을 통한 상태 데이터 통합
    • 원격 객체에 상태를 저장하기 위한 백엔드 블록 정의
    • 여러 사용자가 동일한 인프라 리소스 컬렉션에서 협업 가능

2. 백엔드 블록 정의하기

2.1 기본 구성

정보

HCP Terraform이나 Terraform Enterprise를 사용하는 경우에는 백엔드 블록을 구성하지 않습니다. 이러한 시스템들은 워크스페이스에서 자동으로 상태를 관리합니다.

terraform {
backend "remote" {
organization = "example_corp"

workspaces {
name = "my-app-prod"
}
}
}

2.2 백엔드 구성 제한사항

  • 하나의 설정에는 하나의 백엔드 블록만 사용 가능
  • 백엔드 블록에서는 명명된 값 참조 불가능
  • 백엔드 블록 내의 값은 설정의 다른 부분에서 참조할 수 없음

3. 기본 백엔드와 백엔드 유형

3.1 기본 백엔드

  • Terraform은 기본적으로 'local' 백엔드를 사용
  • 로컬 백엔드는 상태 파일을 디스크에 로컬 파일로 저장

3.2 백엔드 유형

  • Terraform은 여러 내장(built-in) 백엔드 타입을 제공합니다.
  • 일부 백엔드는 상태 파일을 위한 원격 디스크 역할을 하고, 다른 백엔드들은 Terraform 작업 중에 상태를 잠그는(locking) 기능을 지원하여 충돌과 불일치를 방지합니다
  • 백엔드 타입은 backend 블록 라벨로 지정합니다.
  • Terraform에서 사용할 수 있는 백엔드는 이미 내장된 것들로 한정되어 있으며, 사용자가 직접 새로운 백엔드를 플러그인 형태로 추가할 수 없습니다.

Backend Type

backend "remote" {
organization = "example_corp"
# 추가 설정...
}

백엔드 유형은 사용 중인 Terraform 버전에서 지원하는 것을 선택해야 합니다.

4. 자격 증명과 민감한 데이터 관리

4.1 보안 관련 주의사항

경고

자격 증명과 민감한 데이터는 환경 변수를 통해 제공하는 것을 권장합니다. 설정 파일에 직접 하드코딩하면 .terraform 디렉토리와 계획 파일에 포함되어 민감한 정보가 노출될 수 있습니다.

4.2 백엔드 설정 저장 위치

  • .terraform/terraform.tfstate: 현재 작업 디렉토리의 백엔드 설정 포함
  • 계획 파일: 계획 생성 시점의 .terraform/terraform.tfstate 정보 캡처

5. 백엔드 초기화와 마이그레이션

5.1 초기화 프로세스

  • 백엔드 설정을 변경할 때마다 terraform init를 실행하여 백엔드를 검증하고 설정해야 합니다.
  • 그 이후 plans, applies 등의 Terraform 명령을 실행할 수 있습니다.
  • init 이후 테라폼은 .terraform/ 디렉토리에 백엔드 설정을 저장합니다.
terraform init
정보

백엔드 설정을 변경할 때마다 terraform init를 실행하여 백엔드를 검증하고 설정해야 합니다.

5.2 상태 마이그레이션

위험

새로운 백엔드로 마이그레이션하기 전에 terraform.tfstate 파일을 수동으로 백업하는 것을 강력히 권장합니다.

6. 부분 구성 관리

6.1 구성 방법

  • 부분 구성은 다음 방법으로 제공할 수 있습니다:
    • 파일을 통한 구성
    • 명령줄 키/값 쌍
    • 대화형 입력

6.2 파일을 통한 구성 예시

# state.tf
terraform {
backend "s3" {
bucket = ""
key = ""
region = ""
profile= ""
}
}
# state.config
bucket = "your-bucket"
key = "your-state.tfstate"
region = "eu-central-1"
profile= "Your_Profile"

구성 파일에 민감한 정보가 포함된 경우 Vault와 같은 안전한 데이터 저장소에 보관하고 Terraform 실행 전에 로컬 디스크로 다운로드하세요.

7. 백엔드 구성 변경과 제거

7.1 구성 변경

  • 백엔드 설정은 언제든지 변경 가능
  • Terraform이 자동으로 변경을 감지하고 재초기화 요청
  • 다중 워크스페이스 사용 시 모든 워크스페이스를 대상으로 복사 가능

7.2 구성 제거

백엔드 구성을 제거하려면:

  1. 설정에서 백엔드 블록 제거
  2. 디렉토리 재초기화
  3. 기본 로컬 백엔드로의 마이그레이션 확인

8. 마치며

  • Terraform 백엔드 설정은 인프라 상태 관리의 핵심입니다.
  • 적절한 백엔드 설정을 통해 팀 협업을 원활하게 하고, 상태 데이터를 안전하게 관리할 수 있습니다.
  • 보안과 관련된 부분에 특히 주의를 기울여 설정하시기 바랍니다.