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_versionbackendrequired_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_namestorage_account_name)により等号の揃えが右に押されますが、すべての値は一貫して揃っています。

ユースケース

複数のTerraformワークスペースと環境にわたるバックエンド設定の標準化、ステートファイルの適切な分離とロックの確保。

試してみる — Terraform HCL Formatter

フルツールを開く