terraform-best-practices について
TerraformとInfrastructure as Codeに取り組むチーム向けの実践ガイドです。優先度付きのルールで、セキュリティ、状態管理、モジュール、テストを扱います。
主な機能
- 0110カテゴリの実践ルール
- 02影響度順に並んだルール
- 03誤りと正しいコード例
- 04セキュリティ、状態、テストの解説
活用シーン
- 01Terraformモジュールと設定の作成
- 02インフラコードのセキュリティレビュー
- 03TerraformまたはOpenTofuコードのリファクタリング
- 04チームのワークフローとガバナンスの整備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ terramate-io/ agent-skills --skill terraform-best-practicesインストール後、Claude Code で/terraform-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdrules/language-data-sources.mdlanguage-dynamic-blocks.mdlanguage-linting.mdlanguage-locals.mdlanguage-no-heredoc-json.mdmodule-composition.mdmodule-naming.mdmodule-registry.mdmodule-single-responsibility.mdmodule-versioning.mdorg-access-control.mdorg-audit-logging.mdorg-change-workflow.mdorg-version-control.mdorg-workspaces.mdoutput-descriptions.mdoutput-no-secrets.mdperf-debug.mdperf-parallelism.mdprovider-version-constraints.mdresource-count-vs-foreach.mdresource-immutable.mdresource-lifecycle.mdresource-naming.mdresource-tagging.mdsecurity-credentials.mdsecurity-iam-least-privilege.mdsecurity-no-hardcoded-secrets.mdstate-import.md詳細
Terraform のベストプラクティス
Terramate が管理する、Terraform と Infrastructure as Code の包括的な最適化ガイドです。10 のカテゴリにわたる 37 のルールが含まれており、自動リファクタリングとコード生成を支援するため、影響度の高い順に優先順位が付けられています。
適用するタイミング
次の場合に、これらのガイドラインを参照してください。
- 新しい Terraform モジュールや設定を作成するとき
- インフラストラクチャのパターン(AWS、GCP、Azure など)を実装するとき
- セキュリティや信頼性に関する問題についてコードをレビューするとき
- 既存の Terraform/OpenTofu コードをリファクタリングするとき
- State 管理とパフォーマンスを最適化するとき
- チームのワークフローとガバナンスを設定するとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 組織とワークフロー | CRITICAL | org- |
| 2 | State 管理 | CRITICAL | state- |
| 3 | セキュリティのベストプラクティス | CRITICAL | security- |
| 4 | モジュール設計 | HIGH | module- |
| 5 | リソースの整理 | MEDIUM-HIGH | resource- |
| 6 | 変数と出力のパターン | MEDIUM | variable-、output- |
| 7 | 言語のベストプラクティス | MEDIUM | language- |
| 8 | プロバイダーの設定 | MEDIUM | provider- |
| 9 | パフォーマンスの最適化 | LOW-MEDIUM | perf- |
| 10 | テストと検証 | LOW | test- |
クイックリファレンス
1. 組織とワークフロー(CRITICAL) - 5 つのルール
org-version-control- すべての Terraform コードをバージョン管理するorg-workspaces- 設定ごとに環境別の Workspace を 1 つずつ用意するorg-access-control- 誰がどのインフラストラクチャを変更できるかを管理するorg-change-workflow- インフラストラクチャの変更に正式なプロセスを設けるorg-audit-logging- すべてのインフラストラクチャ変更を追跡する
2. State 管理(CRITICAL) - 3 つのルール
state-remote-backend- 常にリモート State バックエンドを使用するstate-locking- 破損を防ぐため、State ロックを有効にするstate-import- 既存のインフラストラクチャを Terraform にインポートする
3. セキュリティのベストプラクティス(CRITICAL) - 3 つのルール
security-no-hardcoded-secrets- コードにシークレットをハードコードしないsecurity-credentials- 適切な認証情報管理(OIDC、Vault、IAM ロール)を使用するsecurity-iam-least-privilege- 最小権限の原則に従う
4. モジュール設計(HIGH) - 5 つのルール
module-single-responsibility- 論理コンポーネントごとにモジュールを 1 つ用意するmodule-naming- 一貫した命名規則(terraform--)を使用するmodule-versioning- すべてのモジュール参照にバージョンを指定するmodule-composition- 積み木のようにモジュールを組み合わせるmodule-registry- 既存のコミュニティ/共有モジュールを使用する
5. リソースの整理(MEDIUM-HIGH) - 5 つのルール
resource-naming- 一貫した命名規則を使用するresource-tagging- コスト追跡のため、すべてのリソースにタグを付けるresource-lifecycle- ライフサイクルブロック(prevent_destroy、ignore_changes)を使用するresource-count-vs-foreach- count より for_each を優先するresource-immutable- イミュータブルなインフラストラクチャのパターンを優先する
6. 変数と出力のパターン(MEDIUM) - 6 つのルール
variable-types- 具体的な型、肯定形の命名、nullable を使用するvariable-validation- 早期にエラーを検出するため、検証ルールを追加するvariable-sensitive- シークレットを sensitive としてマークし、デフォルト値を設定しないvariable-descriptions- すべての変数に説明を記述するoutput-descriptions- すべての出力に説明を記述するoutput-no-secrets- シークレットを直接出力しない
7. 言語のベストプラクティス(MEDIUM) - 5 つのルール
language-no-heredoc-json- HEREDOC ではなく jsonencode/yamlencode を使用するlanguage-locals- 複雑な式に名前を付けるため locals を使用するlanguage-linting- terraform fmt と tflint を実行するlanguage-data-sources- 値をハードコードせず、データソースを使用するlanguage-dynamic-blocks- DRY なコードにするため、dynamic ブロックを使用する
8. プロバイダーの設定(MEDIUM) - 1 つのルール
provider-version-constraints- プロバイダーのバージョンを固定する
9. パフォーマンスの最適化(LOW-MEDIUM) - 2 つのルール
perf-parallelism- 大規模なデプロイでは並列処理を調整するperf-debug- トラブルシューティングのため、デバッグログを有効にする
10. テストと検証(LOW) - 2 つのルール
test-strategies- テストピラミッド(検証、リント、計画、統合)test-policy-as-code- ポリシーチェックの実装(OPA、Checkov、tfsec)
使い方
詳しい説明とコード例については、個々のルールファイルをお読みください。
rules/state-remote-backend.md
rules/security-no-hardcoded-secrets.md
rules/module-versioning.md
各ルールファイルには、次の内容が含まれています。
- 重要な理由の簡単な説明
- 説明付きの誤ったコード例
- 説明付きの正しいコード例
- 追加の背景情報と参考資料
完全版のドキュメント
すべてのルールを展開した完全なガイドは、AGENTS.md をご覧ください。
コメント
Markdown 対応