複雑な式を含むlocalsブロックのフォーマット

マップ、merge関数、条件式、for式を含むTerraform localsブロックを適切な揃えとインデントでフォーマットします。

Variables & Outputs

詳細な説明

localsブロックのフォーマット

localsブロックは計算値の定義、マップのマージ、複雑なデータ構造の構築を行う場所です。これらのブロックにはTerraform設定で最も複雑な式が含まれることが多く、可読性のためにフォーマットが重要です。

localsブロックの例

locals {
  environment = var.environment
  project     = var.project_name
  region      = var.aws_region

  common_tags = {
    Environment = local.environment
    Project     = local.project
    ManagedBy   = "terraform"
    Team        = var.team_name
  }

  resource_prefix = "${local.project}-${local.environment}"

  subnet_cidrs = {
    public  = [for i in range(3) : cidrsubnet(var.vpc_cidr, 8, i)]
    private = [for i in range(3) : cidrsubnet(var.vpc_cidr, 8, i + 10)]
  }

  is_production = local.environment == "production"
  instance_type = local.is_production ? "m5.xlarge" : "t3.medium"
}

フォーマットの詳細

  • 単純な代入の揃え: environmentprojectregion=記号が揃う
  • マップ値の揃え: common_tags内でキーと値が揃う
  • for式: [for i in range(3) : ...]は十分短い場合は1行に収まる
  • 条件式: 単純な条件のternary ? :は1行に収まる
  • 空行による区切り: localsの論理的なグループが空行で区切られる

ユースケース

派生値の計算、タグマップの構築、CIDRブロックの計算、環境固有の設定の定義を一元的なlocalsブロックで行う。

試してみる — Terraform HCL Formatter

フルツールを開く