[기본 구성 요소] 백엔드(Backends)

2024. 11. 26. 15:09Terraform/[인프런] 아키텍처와 함께하는 Terraform

1. 백엔드(Backends)

- Terraform의 state 파일을 저장하고 관리하는 방식을 정의하는 구성 요소이다.
- 백엔드(Backends)는 로컬 또는 원격 저장소에 저장된다.

 

 

2. 백엔드(Backends) 주요 특징

- state 파일 저장 관리 : state 파일을 로컬 또는 원격 저장소에 저장할 수 있다. 
- 협업 지원 : 팀원들과 동일한 state 파일 공유하고 실시간 동기화 가능하다.
- 잠금 기능 : state 파일 손상 방지한다.
- 보안 : 암호화 및 접근 제어를 통해 민감한 데이터 보호할 수 있다.
- 지원되는 Backends 유형 :
  ① 로컬 저장소 : 기본적으로 terraform.tfstate 파일을 로컬 디스크에 저장한다.
  ② 원격 저장소 : S2, Google Cloud Storage, Terraform Cloud 등

 

 

3. 백엔드(Backends) 예제

- 로컬 Backend (기본 설정) 예제 ①
- 기본적으로 Terraform은 state 파일을 현재 작업 디렉토리의 terraform.tfstate에 저장한다.
- 별도의 설정 없이 동작되고 협업 환경에서는 비효율적이다.
* 예제
terraform {
  backend "local" {
    path = "./terraform.tfstate"
  }
}
- S3 Backend 예제 ②
- AWS S3를 사용해 원격으로 state 파일을 저장하고 DynamoDB로 잠금 기능 활성화할 수 있다.
- 팀원과의 공유가 가능하고 DynamoDB 잠금을 통해 동시 작업 방지할 수 있고 AWS IAM 정책으로 접근 제어 가능하다.
* 예제
terraform {
  backend "s3" {
# S3 버킷 이름
    bucket         = "my-terraform-state"   
# State 파일 저장 경로
    key            = "state/terraform.tfstate"
# S3 버킷 리전
    region         = "ap-northeast-2"      
# 파일 암호화 활성화
    encrypt        = true                  
# DynamoDB 잠금 테이블
    dynamodb_table = "terraform-lock"      
  }
}
- Terraform Cloud Backend 예제
- 중앙 집중식으로 state 파일 관리가 가능하고 자동 잠금 및 동시 작업 방지를 지원한다.
- 작업 로그와 상태를 UI로 관리 가능하다.
* 예제
terraform {
  backend "remote" {
# Terraform Cloud 호스트
    hostname     = "app.terraform.io"
# Terraform Cloud 조직 이름
    organization = "my-organization" 

    workspaces {
# 워크스페이스 이름
      name = "my-workspace"          
    }
  }
}