『Terraform 上級』で本番インフラを盤石に
Terraform は基本を超えると Module 設計・Workspace・Drift Detection が重要になります。本記事では編集部の視点で、深掘りした活用を公開情報をもとに整理します。Terraform 実践 もご参考に。
Module 設計の原則
(1) 1モジュール1責務。(2) 明示的な variables/outputs。(3) versioning:semver。(4) README 必須。(5) example/ディレクトリ。
Workspace 戦略
(1) 環境別 (dev/stg/prd)。(2) tfvars との組合せ。(3) state 分離。(4) terraform workspaceコマンド。(5) 後方互換性注意。
Drift Detection
(1) terraform plan で差分。(2) 自動 plan:定期実行。(3) Atlantis / Spacelift連携。(4) 手動変更の検知。(5) アラート。アラート設計 もご参考に。
state 管理
(1) Remote Backend必須。(2) S3 + DynamoDB Lock。(3) Terraform Cloud。(4) state 暗号化。(5) state 分割:大規模で。Secrets 管理 もご参考に。
テスト戦略
(1) terraform fmt/validate。(2) tflint。(3) checkov:セキュリティ。(4) Terratest:実機テスト。(5) plan diffのCI レビュー。CI/CD 実践 もご参考に。
Spacelift / Atlantis
(1) GitOps 連携。(2) PR で plan 自動投稿。(3) apply 承認制。(4) policy as code連携。(5) マルチクラウド対応。
Policy as Code
(1) OPA Conftest。(2) Sentinel (Terraform Cloud)。(3) 禁止リソース検知。(4) タグ強制。(5) コスト制限。FinOps 実践 もご参考に。
OpenTofu との両立
(1) code は互換。(2) CI で両方テスト可能。(3) vendor 戦略。(4) OSS 重視なら OpenTofu。(5) HashiCorp サポート必要なら Terraform。OpenTofu Terraform もご参考に。
失敗しがちなパターン
(1) state ロック競合。(2) module バージョン未固定。(3) secrets を tfvarsに直書き。(4) drift 放置。(5) 巨大 state。対策は、(1)DynamoDB lock、(2)ref=tag、(3)Vault 統合、(4)定期 plan、(5)state分割、です。