kstack-terraform
Installation
SKILL.md
kstack-terraform
Terraform を書くときの規約。理由を理解した上で適用すること。
環境差分は module の引数にし、条件分岐で構成を切り替えない
環境ごとに変わる値は呼び出し側の root module の入力として確定し、意味のある引数名で module に渡す。module は環境名から値を選ばず、受け取った値をそのまま使う。root の分け方やディレクトリ名は、この規約のために変えず、下の「root module の分け方は user と相談して決める」に従う。
Terraform の値・リソース構成の切り替えに、条件式(条件 ? A : B)、for 式の if、template の %{ if ... } を使わない。条件付きの count・for_each・dynamic、環境名をキーにした map / lookup も使わず、呼び出し側に具体的な値・構成を宣言する。root 側へ条件式を移すだけにもせず、入力の妥当性を確かめる validation・precondition などの真偽式とは区別する。
# Bad: module が環境名を解釈して値を選ぶ
locals {
allowed_origin = var.env == "prd" ? "https://example.com" : "https://dev.example.com"
}