mcpField
T
terraform-skill

terraform-skill

github.com/sickn33クラウド・DevOps48.8k229 回インストール今日更新
リポジトリ

terraform-skill について

TerraformとOpenTofuによるインフラストラクチャ・アズ・コードをClaude向けに案内するスキルです。テスト、モジュール、CI/CD、本番運用の指針を含み、構成の作成やレビュー、複数環境の展開計画に役立ちます。

主な機能

  1. 01TerraformとOpenTofuの構成ガイド
  2. 02countとfor_eachの使い分け
  3. 03テスト、モジュール、CI/CDの解説
  4. 04ステートとシークレットの安全管理

活用シーン

  1. 01インフラ構成やモジュールの作成
  2. 02IaCプロジェクトのテスト設定
  3. 03複数環境への展開計画
  4. 04Terraform構成のレビューやリファクタリング

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill terraform-skill

インストール後、Claude Code で/terraform-skillを入力して読み込まれたか確認します。

同梱ファイルreferences/detailed-guide.md

詳細

Claude 向け Terraform スキル

テスト、モジュール、CI/CD、本番環境のパターンを網羅した、Terraform と OpenTofu の包括的なガイダンスです。terraform-best-practices.com とエンタープライズでの経験に基づいています。

詳細ガイド

このスキルを実行する前に、詳細ガイドをお読みください。完全な手順と参考資料が記載されています。安全性、前提条件、検証要件は必須事項として扱ってください。特定の作業に集中する場合は関連するセクションを、最初から最後まで作業する場合はガイド全体をお読みください。

このスキルを使用する場面

次の場合にこのスキルを有効にしてください:

  • Terraform または OpenTofu の設定やモジュールを新規作成する
  • IaC コードのテスト基盤を設定する
  • テスト方法(validate、plan、フレームワーク)を選択する
  • 複数環境へのデプロイを構成する
  • Infrastructure as Code の CI/CD を実装する
  • 既存の Terraform/OpenTofu プロジェクトをレビューまたはリファクタリングする
  • モジュールのパターンやステート管理方法を選択する

次の場合はこのスキルを使用しないでください:

  • Terraform/OpenTofu の基本的な構文に関する質問(Claude は把握しています)
  • プロバイダー固有の API リファレンス(代わりにドキュメントへリンクしてください)
  • Terraform/OpenTofu に関係しないクラウドプラットフォームの質問

Count と For_Each:使い分け

簡単な判断ガイド
シナリオ使用するもの理由
ブール条件(作成するかどうか)count = condition ? 1 : 0シンプルなオン/オフ切り替え
単純な数値による複製count = 3同一リソースの固定数
アイテムの並べ替えや削除があり得るfor_each = toset(list)安定したリソースアドレス
キーで参照するfor_each = mapリソースへの名前付きアクセス
名前付きリソースが複数あるfor_each保守性の向上
よく使うパターン

ブール条件:

# ✅ GOOD - Boolean condition
resource "aws_nat_gateway" "this" {
  count = var.create_nat_gateway ? 1 : 0
  # ...
}

for_each による安定したアドレス指定:

# ✅ GOOD - Removing "us-east-1b" only affects that subnet
resource "aws_subnet" "private" {
  for_each = toset(var.availability_zones)

  availability_zone = each.key
  # ...
}

# ❌ BAD - Removing middle AZ recreates all subsequent subnets
resource "aws_subnet" "private" {
  count = length(var.availability_zones)

  availability_zone = var.availability_zones[count.index]
  # ...
}

移行ガイドと詳細な例については、以下を参照してください: コードパターン:Count と For_Each

セキュリティとコンプライアンス

必要に応じて、承認済みのシークレットチャネルを通じて機密性の高い入力を使用してください。sensitive = true を指定すると通常の表示では値が伏せられますが、ステートファイルやプランファイルは暗号化されません。バックエンドへのアクセス、ロック、暗号化、プランの成果物を保護してください。Secrets Manager のデータを Terraform に読み込んでも、その値がステートに入らないと考えてはいけません。サポートされている一時的な引数や書き込み専用の引数は、選択した Terraform/プロバイダーのバージョンで実装されている場合に限り使用してください。

必須のセキュリティチェック
# Static security scanning
trivy config .
checkov -d .
避けるべきよくある問題

❌ 避けてください:

  • シークレットをハードコードする、または機密変数を使えば値がステートに含まれないと思い込む
  • デフォルト VPC を使用する
  • 暗号化を省略する
  • セキュリティグループで 0.0.0.0/0 へのアクセスを許可する

✅ 実施してください:

  • AWS Secrets Manager/Parameter Store を使用する
  • 専用の VPC を作成する
  • 保存時の暗号化を有効にする
  • 最小権限のセキュリティグループを使用する

詳細なセキュリティガイダンスについては、以下を参照してください:

  • セキュリティとコンプライアンスのガイド - Trivy/Checkov の統合、シークレット管理、ステートファイルのセキュリティ、コンプライアンステスト

制限事項

  • 上記の説明にある範囲にタスクが明確に該当する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認してください。

コメント