Terraformバックエンド設定のフォーマット
S3、Azure Blob、GCSなどのリモートステートストレージ用のterraform backendブロックを適切な揃えと構造でフォーマットします。
Provider & Backend
詳細な説明
バックエンドブロックのフォーマット
terraformブロック内のbackend設定は重要なインフラです — ステートファイルの保存場所を決定します。不適切なフォーマットのバックエンドブロックは、ステートファイルの競合、ロックの問題、または意図しないステート損失につながる可能性があります。
S3バックエンドの例
terraform {
required_version = ">= 1.5.0"
backend "s3" {
bucket = "my-company-terraform-state"
key = "production/network/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "terraform-lock"
encrypt = true
acl = "bucket-owner-full-control"
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
主要なフォーマットの詳細
- 等号の揃え:
backendブロック内のすべての属性の=記号が同じカラムに揃い、値のスキャンが容易 - セクションのグループ化:
required_version、backend、required_providersは空行で区切り - 一貫したクォーティング: すべての文字列値はダブルクォートを使用
- ネストされたプロバイダーソース:
required_providersブロックには独自の内部揃えがある
Azure Blobバックエンド
terraform {
backend "azurerm" {
resource_group_name = "terraform-state-rg"
storage_account_name = "tfstate12345"
container_name = "tfstate"
key = "prod.terraform.tfstate"
}
}
長い属性名(resource_group_name、storage_account_name)により等号の揃えが右に押されますが、すべての値は一貫して揃っています。
ユースケース
複数のTerraformワークスペースと環境にわたるバックエンド設定の標準化、ステートファイルの適切な分離とロックの確保。