mcpField
T
terraform-infra

terraform-infra

github.com/oimiragieoクラウド・DevOps4455 回インストール17 週間前に更新
リポジトリ

terraform-infra について

インフラ運用担当者や DevOps エージェント向けの Terraform スキルです。計画や状態操作、変更適用の手順と安全策をまとめています。

主な機能

  1. 01設定の plan・検証・フォーマット
  2. 02Terraform の状態の確認と管理
  3. 03ワークスペースの管理
  4. 04apply 前の確認を必須化
  5. 05destroy と state 削除のブロック

活用シーン

  1. 01適用前のインフラ変更レビュー
  2. 02リソースやワークスペース状態の調査
  3. 03Terraform モジュール開発のガイド

インストール

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill terraform-infra

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
terraform-infra.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
terraform-infra.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

Terraform インフラストラクチャスキル

インストール

このスキルは Terraform CLI を呼び出します。次の手順でインストールしてください。

  • macOS:brew tap hashicorp/tap && brew install hashicorp/tap/terraform
  • Windows:choco install terraform を実行するか、HashiCorp からダウンロードします
  • Linux (apt):HashiCorp リポジトリを追加してから、sudo apt update && sudo apt install terraform を実行します(HashiCorp のインストール手順を参照)

確認:terraform --version

チートシートとベストプラクティス

ワークフロー: terraform init → terraform fmt → terraform validate → terraform plan -out=tfplan → レビュー → terraform apply tfplan。内容を確認するには terraform show tfplan を使用します。

ヒント: apply の前に必ず plan を実行し、内容を確認せずに apply しないでください。チームで作業する場合は、リモートステート(例:S3 +ロック)を使用します。-auto-approve は、レビュー済みのプランを使う CI でのみ使用してください。デバッグには terraform state list と terraform state show <resource> を使用します。パイプラインではサービスアカウント/ワークロード ID を使用し、静的キーは避けてください。

認定資格とトレーニング

HashiCorp Terraform Associate (004): IaC の概念、Terraform の基礎、ステート、モジュール、Terraform Cloud。学習パス。スキルデータ: init → fmt → validate → plan -out → apply、リモートステート、内容を確認しない apply の禁止。

フックとワークフロー

推奨フック: apply 前に terraform plan -out=tfplan を実行し、レビューを必須にします。CI:プランの承認後にのみ apply します。devops(メイン)と併用します。

ワークフロー: devops(メイン)と併用します。フロー:init → plan → review → apply。デバッグには state コマンドを使用します。パイプラインとの統合については ci-cd-implementation-rule を参照してください。

概要

生の Terraform MCP サーバーと比較して、コンテキストを 90%以上節約できます。インフラストラクチャ操作に必要な重要な安全制御が含まれています。

要件

  • Terraform CLI(v1.0+)
  • クラウドプロバイダーの認証情報が設定されていること
  • .tf ファイルを含む作業ディレクトリ

ツール(段階的開示)

プランニングと検証
ツール説明確認
planterraform プランを生成します不要
validate構成を検証します不要
fmtterraform ファイルをフォーマットします不要
ステート操作
ツール説明確認
show現在のステートを表示します不要
listステート内のリソースを一覧表示します不要
state-mvステート内のリソースを移動します必要
ワークスペース操作
ツール説明確認
workspace-listワークスペースを一覧表示します不要
workspace-selectワークスペースを選択します不要
workspace-newワークスペースを作成します必要
実行(⚠️ 危険)
ツール説明確認
apply変更を適用します必須
ブロックされている操作
ツール状態
destroyブロック
state-rmブロック

クイックリファレンス

# Initialize
terraform init

# Plan changes
terraform plan -out=tfplan

# Validate
terraform validate

# Apply (requires -auto-approve for automation)
terraform apply tfplan

設定

  • 作業ディレクトリ:terraform ファイルを含んでいる必要があります
  • TFVAR*:環境変数を介した変数値
  • TF_WORKSPACE:アクティブなワークスペース

安全制御

⚠️ terraform apply には常に確認が必要です ⚠️ terraform destroy はデフォルトでブロックされています ⚠️ ステートの変更には確認が必要です ⚠️ apply の前にプランの出力を確認してください

エージェントとの連携

  • devops(メイン):インフラストラクチャ管理
  • architect(サブ):インフラストラクチャ設計
  • cloud-integrator(サブ):クラウドのプロビジョニング

トラブルシューティング

問題解決策
Init に失敗するプロバイダーの認証情報を確認します
ステートがロックされている他の操作が実行中でないか確認します
Plan に失敗するエラー出力を注意深く確認します

モジュール開発

再利用可能なモジュールの作成

HashiCorp の規約に従ってモジュールを構成します。

modules/
  vpc/
    main.tf          # Resource definitions
    variables.tf     # Input variables
    outputs.tf       # Output values
    versions.tf      # Required provider versions
    README.md        # Module documentation
モジュールのベストプラクティス
プラクティス説明
単一責任各モジュールは 1 つの論理的なリソースグループを管理します
型指定された変数すべての変数に type 制約を使用します
検証ブロック入力制約には validation {} を追加します
機密性の高い出力シークレットには sensitive = true を指定します
バージョン制約モジュールのソースバージョンを固定します
モジュールソースのパターン
# Local module
module "vpc" {
  source = "./modules/vpc"
}

# Terraform Registry
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 5.0"
}

# Git source (pinned tag)
module "vpc" {
  source = "git::https://github.com/org/modules.git//vpc?ref=v1.2.0"
}

プロバイダー開発パターン

カスタムプロバイダーのスケルトン
package provider

import (
    "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func Provider() *schema.Provider {
    return &schema.Provider{
        Schema: map[string]*schema.Schema{
            "api_key": {
                Type:        schema.TypeString,
                Required:    true,
                Sensitive:   true,
                DefaultFunc: schema.EnvDefaultFunc("API_KEY", nil),
            },
        },
        ResourcesMap: map[string]*schema.Resource{
            "myservice_resource": resourceMyServiceResource(),
        },
    }
}
モジュールのテスト
# Validate module syntax
cd modules/vpc && terraform validate

# Run module tests (Terraform 1.6+)
terraform test

# Plan with module
terraform plan -var-file=examples/basic.tfvars

絶対遵守事項

  1. terraform apply を実行する前に、必ず terraform plan を実行し、出力を確認します
  2. .tf ファイルに認証情報やシークレットを決してハードコードしません。シークレットマネージャー(AWS Secrets Manager、Azure Key Vault、HashiCorp Vault)を使用します
  3. 同時変更を防ぐため、暗号化とステートロックを備えたリモートステートを必ず使用します
  4. ステートファイルを決して直接編集しません。terraform state コマンドのみを使用します
  5. 再現性の高いインフラストラクチャデプロイを実現するため、プロバイダーとモジュールのバージョンを必ず固定します

アンチパターン

アンチパターン問題点正しい方法
.tf ファイル内の認証情報のハードコードVCS でのシークレット漏えい、コンプライアンス違反シークレットマネージャーのバックエンドを使用する変数を使います
ステートロックなし同時に実行した apply によりステートが破損しますバックエンドのロックを有効にします(S3+DynamoDB、Azure Blob、GCS)
terraform plan の確認なしで terraform applyリソースが予期せず削除または再作成されます常に先に plan を実行し、差分を確認してから apply を実行します
バージョンが固定されていないプロバイダーとモジュールビルドの再現性がなくなり、破壊的変更が発生しますバージョンを固定します:version = "~> 4.0"
リソースにタグがないコストを追跡できず、コンプライアンス違反になりますすべてのリソースに env、owner、cost-center のタグを付けます

メモリープロトコル(必須)

開始前: .claude/context/memory/learnings.md を読みます

完了後:

  • 新しいパターン -> .claude/context/memory/learnings.md
  • 見つかった問題 -> .claude/context/memory/issues.md
  • 行った判断 -> .claude/context/memory/decisions.md

中断されることを前提にします。メモリに記録されていなければ、実行されていないものとします。

コメント