백엔드 : 상태 파일 (state file)을 저장하고 관리하는 방식을 정의하는 구성요소
- 상태파일 : Terraform이 관리하는 인프라의 현재 상태를 저장하며, 인프라의 변경 사항을 추적하고 plan과 apply 작업 시 필요한 정보를 제공하는데 사용
주요 백엔드 유형
- ** 로컬 백엔드 ** : 상태파일을 로컬 디스크에 저장. 주로
terraform.tfstate파일로 상태 저장
terraform {
backend "local" {
path = "./terraform.tfstate"
}
}```
2. ** 원격 백엔드(remote) ** : 상태 파일을 원격 저장소에 저장. 중앙 집중화와 협업에 유리
- Amazon S3: AWS S3 버킷에 상태 파일 저장
```shell
terraform {
backend "s3" {
bucket = "my-bucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
```
- Terraform Cloud: HashiCorp에서 제공하는 관리형 테라폼 서비스에 상태 파일 저장
``` shell
terraform {
backend "remote" {
hostname = "app.terraform.io"
organization = "my-org"
workspaces {
name = "my-workspace"
}
}
}
```
- Azure Blob Storage: 상태파일을 Azure Storage 계정의 Blob 컨테이너에 저장
```shell
terraform {
backend "remote" {
hostname = "app.terraform.io"
organization = "my-org"
workspaces {
name = "my-workspace"
}
}
}
```
- Google Cloud Storage (GCS): 상태 파일을 GCS 버킷에 저장
``` shell
terraform {
backend "gcs" {
bucket = "my-gcs-bucket"
prefix = "terraform/state"
}
}```
## 백앤드의 기능
1. **상태 파일 잠금** (state file locking)
원격 백엔드 대부분은 상태 파일 잠금을 지원한다. 이는 여러 사용자가 동시에 상태 파일을 수정하는 것을 방지하여 데이터 손상을 방지한다.
2. **원격 상태 조회** (remote state lookup)
원격 백엔드를 사용하면 다른 Terraform 구성에서 상태 데이터를 참조할 수 있다. 이를 통해 인프라 간의 종속성을 관리할 수 있다
3. ** 보안 및 관리 ** (security and management)
원격 백엔드를 사용하면 상태 파일을 중앙에서 관리하고 접근 제어, 감사 로그, 버전 관리 등을 적용할 수 있다
## 백엔드 설정 방법
``` shell
terraform {
backend "s3" {
bucket = "my-bucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
terraform init
'IaC👩💻 > TerraForm' 카테고리의 다른 글
| [Terraform] 조건문 (0) | 2024.08.23 |
|---|---|
| [TerraForm] Count (0) | 2024.08.23 |
| [TerraForm] Outputs (0) | 2024.08.23 |
| [TerraForm] Local (0) | 2024.08.23 |
| [TerraForm] variable (0) | 2024.08.23 |