[기본 구성 요소] 백엔드(Backends)
2024. 11. 26. 15:09ㆍTerraform/[인프런] 아키텍처와 함께하는 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"
}
}
}
'Terraform > [인프런] 아키텍처와 함께하는 Terraform' 카테고리의 다른 글
[기본 명령어] Terraform 명령어 (0) | 2024.11.26 |
---|---|
[기본 구성 요소] 워크스페이스 (0) | 2024.11.26 |
[기본 구성 요소] Modules (0) | 2024.11.26 |
[기본 구성 요소] state 파일 (0) | 2024.11.26 |
[기본 구성 요소] Output (1) | 2024.11.26 |