Terraform의 백엔드(backend)는 상태 파일(state file)을 저장하고 관리하는 방식을 정의하는 구성 요소입니다. 상태 파일은 Terraform이 관리하는 인프라의 현재 상태를 저장하며, 이는 인프라의 변경 사항을 추적하고 계획(plan) 및 적용(apply) 작업 시 필요한 정보를 제공하는 데 사용됩니다.
Terraform에서는 다양한 백엔드 유형을 지원하며, 각 백엔드는 상태 파일을 저장하는 방식과 위치가 다릅니다. 주요 백엔드 유형은 다음과 같습니다:
로컬 백엔드(local): 상태 파일이 로컬 디스크에 저장됩니다. 기본적으로 Terraform은 로컬 디렉토리에 terraform.tfstate
파일로 상태를 저장합니다.
terraform {
backend "local" {
path = "./terraform.tfstate"
}
}
원격 백엔드(remote): 상태 파일이 원격 저장소에 저장됩니다. 이를 통해 상태 파일의 중앙 집중화와 협업이 가능해집니다.
Amazon S3: 상태 파일이 AWS S3 버킷에 저장됩니다.
terraform {
backend "s3" {
bucket = "my-bucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
Terraform Cloud: HashiCorp에서 제공하는 관리형 Terraform 서비스에 상태 파일을 저장합니다.
terraform {
backend "remote" {
hostname = "app.terraform.io"
organization = "my-org"
workspaces {
name = "my-workspace"
}
}
}
Azure Blob Storage: 상태 파일이 Azure Storage 계정의 Blob 컨테이너에 저장됩니다.
terraform {
backend "azurerm" {
storage_account_name = "mystorageaccount"
container_name = "mycontainer"
key = "terraform.tfstate"
}
}
Google Cloud Storage (GCS): 상태 파일이 Google Cloud Storage 버킷에 저장됩니다.
terraform {
backend "gcs" {
bucket = "my-gcs-bucket"
prefix = "terraform/state"
}
}
백엔드를 설정하려면 terraform
블록 안에 backend
블록을 추가해야 합니다. 백엔드 설정은 terraform init
명령어를 실행할 때 적용됩니다. 백엔드를 변경하면 Terraform은 기존 상태 파일을 새로운 백엔드로 자동으로 이동할 수 있습니다.
terraform {
backend "s3" {
bucket = "my-bucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
이 구성을 파일에 추가한 후 terraform init
을 실행하면 Terraform이 S3 버킷에 상태 파일을 저장하도록 초기화합니다.
Terraform의 백엔드는 상태 파일을 저장하고 관리하는 방식을 정의하여, 인프라의 상태를 안전하게 보관하고 협업 환경을 지원하는 중요한 구성 요소입니다. 적절한 백엔드를 선택하고 설정함으로써 인프라 관리의 효율성과 안전성을 크게 향상시킬 수 있습니다.
devrary 💡 ~/terraform_/terraform_prj
terraform state list
module.employee_vpc_module["deploy"].aws_subnet.private_subnet1
module.employee_vpc_module["deploy"].aws_vpc.example
module.employee_vpc_module["dev"].aws_subnet.private_subnet1
module.employee_vpc_module["dev"].aws_subnet.public_subnet1[0]
module.employee_vpc_module["dev"].aws_vpc.example