Claude CodeでTerraformコードを自動生成する実践ガイド【2026年版】

claude code terraform auto generate guide 2026

Claude CodeにTerraformコードを書かせてみたら「セキュリティグループが0.0.0.0/0で生成された」「apply後にState管理が壊れた」という声をよく聞きます。Claude Code×Terraformは強力ですが、CLAUDE.mdの設計が品質をほぼ決定します。実践的なCLAUDE.md設計・MCPサーバー設定・失敗回避まで一気に解説します。

目次

Claude Code + Terraformで何ができるか?

Claude CodeはHCLコードを自然言語から生成し、fmtvalidateplanまで自動実行できます。インフラエンジニアとしての実感では既存AWSのTerraform化(Import)が特に強力で、2〜3日の作業が数時間に短縮されました。

用途 Claude Codeの効果 難易度
新規リソースコード生成 自然言語→HCL即時生成
既存リソースのImport import→state確認→コード修正を自動化
GitHub Issue→自動PR Issue本文を読んでPR+Planコメント
エラー自動修正 plan/applyエラーを最大3回自動リトライ

CLAUDE.mdの設計が品質を左右する

Claude Code×Terraformで最も重要なのがCLAUDE.mdの禁止事項定義です。ここを省くと、Claudeが訓練データの記憶だけでリソース引数を書き始め、古いAPI仕様や架空のパラメータが混入します。

CLAUDE.mdに必ず書く6セクション

セクション 記載内容
言語設定 「必ず日本語で応答する」
プロジェクト概要 クラウド・Terraformバージョン・対象リージョン
作業フロー aws-knowledge取得→生成→fmt→validate→plan→apply
ディレクトリ構成 modules/・environments/ の構造と命名規則
禁止事項 記憶のみでの引数記述・無断apply・0.0.0.0/0使用
Definition of Done init/fmt/validate/tflint/planの全パスを完了条件とする

CLAUDE.md 禁止事項セクションのサンプル

## 禁止事項
- terraform-registry MCPサーバーで確認せずにリソース引数を記述しない
- `terraform apply` を承認なしに実行しない
- security_group でポート 0.0.0.0/0 を使用しない(専用セクションで明示)
- IAMポリシーで `"Action": "*"` を使用しない
- 存在しない引数を使わない(必ずドキュメントを参照する)

実践:MCP設定とコード生成

.mcp.json設定(terraform-registry + aws-knowledge)

{
  "mcpServers": {
    "terraform-registry": {
      "command": "npx",
      "args": ["-y", "@hashicorp/mcp-server-terraform-registry"]
    },
    "aws-knowledge": {
      "command": "npx",
      "args": ["-y", "@aws/aws-knowledge-mcp-server"]
    }
  }
}

上記MCP設定後、「modules/vpc/を作成、terraform-registryで引数確認してから」のように自然言語で指示するとfmt→validate→planまで自動実行します。インフラエンジニア向けClaude Code活用ガイドも参照してください。

このMCP設定により、ClaudeはTerraform Registryの最新ドキュメントを参照してからコードを生成します。幻覚コードの発生率が大幅に低下します。

よくある失敗パターンと対策

セキュリティグループが 0.0.0.0/0 で生成される

CLAUDE.mdの禁止事項に「0.0.0.0/0を使用しない」を明記してください。さらにtflintのルールセットにCIS AWSベンチマークを追加し、Definition of DoneにCheckovパスを含めると自動検出できます。

架空の引数が生成される(幻覚コード)

CLAUDE.mdに「terraform-registry MCPで確認せずに引数を記述しない」を追加します。validateが失敗した際に自動リトライさせる設定も合わせて有効です。

applyに失敗してStateが壊れる

S3バックエンド + DynamoDBによるStateロックを事前に設定してください。backend.tfをClaude Codeに生成させる際も「DynamoDBロックを必ず含める」と指示するのが確実です。

まとめ:Claude Code × TerraformでIaC生産性を上げる3原則

  • CLAUDE.mdの禁止事項を先に設計する(後付けは手遅れ)
  • MCP(terraform-registry + aws-knowledge)を必ず設定して幻覚を防ぐ
  • tflint/CheckovをDefinition of Doneに含めてセキュリティを自動担保する

全体の使いこなし方はClaude Code完全ガイドも参考にしてください。

よくある質問(FAQ)

Claude CodeでTerraformを使うのに必要なプランは?

Claude.ai ProまたはMax($100〜$200/月)が推奨です。Proでも使えますが、大規模リポジトリではコンテキスト上限に注意が必要です。

terraform applyをClaude Codeに自動実行させても安全ですか?

本番環境では推奨しません。staging環境のみ自動apply可とし、本番はplan結果を人間がレビューしてapplyする設計が安全です。CLAUDE.mdに「本番applyは禁止」と明記してください。

既存の手作りAWSをTerraform化(Import)にも使えますか?

terraform import × Claude Codeは非常に相性が良いです。「このリソースをimportしてコードに変換してください」と指示するだけで、import→state確認→コード生成を自動化できます。

terraform-registryのMCPサーバーがない場合どうする?

CLAUDE.mdに公式ドキュメントURLを参照先として記載し、WebFetchで参照させる方法が代替になります。ただしMCP設定ありの方が精度は高いです。

大きなTerraformリポジトリでもClaude Codeは使えますか?

モジュールごとにCLAUDE.mdを分散配置し、作業対象モジュールだけでClaude Codeを起動する設計が有効です。コンテキスト上限の影響を最小化できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次