variableとoutputブロックのフォーマット

型、デフォルト値、説明、バリデーションルールを持つTerraform変数宣言をフォーマット。説明と値式を持つoutputブロックもカバーします。

Variables & Outputs

詳細な説明

変数と出力のフォーマット

variableとoutputブロックはTerraformモジュールのインターフェースです。クリーンなフォーマットにより、モジュールのAPIが消費者にすぐに理解可能になります。

変数ブロックの例

variable "environment" {
  description = "Deployment environment name"
  type        = string
  default     = "development"

  validation {
    condition     = contains(["development", "staging", "production"], var.environment)
    error_message = "Environment must be development, staging, or production."
  }
}

variable "vpc_config" {
  description = "VPC configuration settings"
  type = object({
    cidr_block         = string
    enable_nat_gateway = bool
    single_nat_gateway = bool
    azs                = list(string)
  })
}

variable "tags" {
  description = "Common tags applied to all resources"
  type        = map(string)
  default     = {}
}

出力ブロックの例

output "vpc_id" {
  description = "The ID of the VPC"
  value       = aws_vpc.main.id
}

output "database_endpoint" {
  description = "RDS instance endpoint"
  value       = aws_db_instance.main.endpoint
  sensitive   = true
}

フォーマット規則

  • 属性順序: descriptionが最初、次にtypedefaultvalidation
  • 等号の揃え: variable/outputブロック内のすべてのトップレベル属性が揃えられる
  • 複合型: object({})list()の型定義はフィールドがインデントされ揃えられる
  • 機密出力: sensitive = trueフラグは他の属性と揃えられる

ユースケース

Terraformモジュールのパブリックインターフェースの定義、どの入力が必要か、どの型を受け付けるか、モジュールが出力として何を生成するかを明確にする。

試してみる — Terraform HCL Formatter

フルツールを開く