lifecycleとメタ引数ブロックのフォーマット
create_before_destroy、prevent_destroy、ignore_changes、replace_triggered_byを含むlifecycleブロックを適切なインデントと揃えでフォーマットします。
Resources
詳細な説明
lifecycleブロックのフォーマット
lifecycleメタ引数はTerraformがリソースを作成、更新、破棄する方法を制御します。リソースブロック内に配置され、重要なインフラの動作に影響するため、慎重なフォーマットが必要です。
lifecycleブロックの例
resource "aws_instance" "critical" {
ami = var.ami_id
instance_type = var.instance_type
lifecycle {
prevent_destroy = true
}
tags = {
Name = "critical-server"
}
}
resource "aws_launch_template" "web" {
name_prefix = "web-"
image_id = data.aws_ami.ubuntu.id
instance_type = var.instance_type
lifecycle {
create_before_destroy = true
ignore_changes = [
image_id,
tags,
]
}
tags = {
Name = "web-launch-template"
}
}
フォーマットの詳細
- 単一行 vs 複数行: 単一値のlifecycleルール(
prevent_destroy = true)は1行に収まる - リスト属性: 複数の値を持つ
ignore_changesは末尾カンマ付きの複数行リストを使用 - ブロック配置:
lifecycleブロックは通常リソース属性の後、tagsの前に配置 - 区切り:
lifecycleの前の空行で通常の属性と視覚的に区切り
メタ引数の順序規則
フォーマッターが維持する一般的な順序規則:
countまたはfor_each(最初)- 通常の属性
- ネストブロック(
connection、provisioner) lifecycleブロックdepends_ontags(最後)
ユースケース
誤削除からの保護が必要な重要インフラリソースの管理、またはcreate-before-destroyパターンによるゼロダウンタイム更新が必要なリソースの管理。