본문으로 건너뛰기

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