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が最初、次にtype、default、validation - 等号の揃え: variable/outputブロック内のすべてのトップレベル属性が揃えられる
- 複合型:
object({})とlist()の型定義はフィールドがインデントされ揃えられる - 機密出力:
sensitive = trueフラグは他の属性と揃えられる
ユースケース
Terraformモジュールのパブリックインターフェースの定義、どの入力が必要か、どの型を受け付けるか、モジュールが出力として何を生成するかを明確にする。