terraform-skill について
TerraformとOpenTofuによるインフラストラクチャ・アズ・コードをClaude向けに案内するスキルです。テスト、モジュール、CI/CD、本番運用の指針を含み、構成の作成やレビュー、複数環境の展開計画に役立ちます。
主な機能
- 01TerraformとOpenTofuの構成ガイド
- 02countとfor_eachの使い分け
- 03テスト、モジュール、CI/CDの解説
- 04ステートとシークレットの安全管理
活用シーン
- 01インフラ構成やモジュールの作成
- 02IaCプロジェクトのテスト設定
- 03複数環境への展開計画
- 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 の統合、シークレット管理、ステートファイルのセキュリティ、コンプライアンステスト
制限事項
- 上記の説明にある範囲にタスクが明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認してください。