Claude-skill-registry exec-tf
Terraform コマンドを実行する。「terraform plan」「terraform apply」「tf init」「tf plan」「tf apply」「terraform して」「tf 実行」「インフラ適用」「プラン確認」「validate」「検証」などで起動。
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/exec-tf" ~/.claude/skills/majiayu000-claude-skill-registry-exec-tf && rm -rf "$T"
manifest:
skills/data/exec-tf/SKILL.mdsource content
Terraform Executor
Terraform コマンドの実行を支援します。
対応操作
| 操作 | トリガー例 | コマンド |
|---|---|---|
| 初期化 | 「init して」「terraform init」 | |
| 計画 | 「plan して」「プラン確認」 | |
| 適用 | 「apply して」「適用して」 | |
| 検証 | 「validate」「検証して」 | |
| フォーマット | 「fmt」「フォーマット」 | |
| 出力確認 | 「output」「出力確認」 | |
| バージョン | 「version」「バージョン」 | |
実行手順
1. 意図の判定
ユーザーの発話から操作を判定:
- 初期化系: 「init」「初期化」→
terraform init - 計画系: 「plan」「プラン」「確認」→
terraform plan - 適用系: 「apply」「適用」「実行」→
terraform apply - 検証系: 「validate」「検証」→
terraform validate - フォーマット系: 「fmt」「フォーマット」→
terraform fmt
2. 事前確認
# Terraform バージョン確認 terraform version # ワーキングディレクトリの .tf ファイル確認 ls *.tf 2>/dev/null || ls **/*.tf 2>/dev/null # 初期化状態確認 ls -la .terraform 2>/dev/null
.tf ファイルがない場合はエラーメッセージを表示して終了。
.terraform がない場合:
⚠️ Terraform が初期化されていません。 先に `terraform init` を実行してください。 「init して」と言うか、以下を実行: terraform init
Plan 操作
オプション
| オプション | 説明 |
|---|---|
| 特定リソースのみ plan |
| plan ファイルを出力 |
| destroy plan を実行 |
plan 実行
標準 plan:
terraform plan -no-color
オプション付き:
# 特定リソースのみ terraform plan -target=<resource> -no-color # plan ファイル出力 terraform plan -out=<file> -no-color # destroy plan terraform plan -destroy -no-color
plan 結果解析
plan 出力を解析し、以下の情報を抽出:
- 追加されるリソース(
)+ - 変更されるリソース(
)~ - 削除されるリソース(
)- - 再作成されるリソース(
または-/+
)+/-
plan 出力フォーマット
## Plan 結果 | 種類 | 数 | リソース | |------|-----|----------| | 🟢 追加 | {N} | {リソース一覧} | | 🟡 変更 | {N} | {リソース一覧} | | 🔴 削除 | {N} | {リソース一覧} | | ⚠️ 再作成 | {N} | {リソース一覧} | ### 変更サマリー Plan: {add} to add, {change} to change, {destroy} to destroy. ### 破壊的変更(要注意) {force replacement が発生するリソースがあれば警告} - `aws_db_instance.main` - force replacement(engine_version の変更) - ...
破壊的変更の検出
以下のパターンを検出して警告:
- リソースの再作成# ... must be replaced
- リソースの削除# ... will be destroyed
- 属性変更による再作成forces replacement
⚠️ 破壊的変更が検出されました 以下のリソースが再作成または削除されます: - {リソース名}: {理由} apply 前に内容を確認してください。
Apply 操作
重要な安全規則
- ❌
は絶対に使用しない-auto-approve - ✅ 必ずユーザー確認を取ってから apply を実行
- ✅ 破壊的変更がある場合は特に注意を促す
オプション
| オプション | 説明 |
|---|---|
| plan ファイルを指定して apply |
| 特定リソースのみ apply |
apply 実行手順
1. plan 実行(plan ファイルがない場合)
plan ファイルが指定されていない場合、先に plan を実行:
terraform plan -no-color
2. 変更内容の確認と警告
plan 結果を解析し、以下を表示:
## Apply 確認 ### 変更内容 | 種類 | 数 | リソース | |------|-----|----------| | 🟢 追加 | {N} | {リソース一覧} | | 🟡 変更 | {N} | {リソース一覧} | | 🔴 削除 | {N} | {リソース一覧} | | ⚠️ 再作成 | {N} | {リソース一覧} | {破壊的変更がある場合} ### ⚠️ 警告: 破壊的変更 以下のリソースが削除または再作成されます: - {リソース名}: {理由} データ損失の可能性があります。十分に確認してください。
3. ユーザー確認
必ずユーザーに確認を求める:
上記の変更を適用してよろしいですか? - 「はい」または「apply して」で実行 - 「いいえ」または「キャンセル」で中止
4. apply 実行
ユーザーの承認後のみ実行:
plan ファイルなし:
terraform apply -no-color
インタラクティブに
yes を入力する必要があるため、ユーザーに案内:
terraform apply を実行します。 確認プロンプトで「yes」を入力してください。
plan ファイルあり:
terraform apply -no-color <plan-file>
plan ファイルからの apply は確認プロンプトなしで実行される。
5. 結果レポート
## Apply 完了 ### 適用結果 | 種類 | 数 | |------|-----| | 追加 | {N} | | 変更 | {N} | | 削除 | {N} | ### 出力値 {terraform output の結果(あれば)} ### 次のステップ - `terraform state list` で作成されたリソースを確認 - `terraform output` で出力値を確認
apply エラー時の対応
State ロックエラー
Error: Error acquiring the state lock
対応:
⚠️ State がロックされています 別のプロセスが terraform を実行中の可能性があります。 - 他のターミナルで terraform が実行中でないか確認 - CI/CD パイプラインが実行中でないか確認 どうしても解除が必要な場合: terraform force-unlock <LOCK_ID> ※ force-unlock は危険な操作です。必ず原因を確認してから実行してください。
リソース競合エラー
Error: Resource already exists
対応:
⚠️ リソースが既に存在します 対処方法: 1. import で既存リソースを取り込む 2. リソース名を変更して新規作成 3. 既存リソースを削除してから apply 「import して」と言うと import の手順を案内します。
Validate 操作
オプション
| オプション | 説明 |
|---|---|
| フォーマットの自動修正を実行 |
validate 実行手順
1. フォーマットチェック
terraform fmt -check -recursive -diff
2. --fix
指定時のフォーマット修正
--fixterraform fmt -recursive -write=true
## フォーマット修正 以下のファイルを修正しました: - main.tf - variables.tf 修正完了
3. 構文検証
terraform validate
成功時:
Success! The configuration is valid.
4. validate 結果レポート
成功時:
## 検証結果: ✅ 成功 ### フォーマット {フォーマット問題なし / N 件の問題あり} ### 構文検証 ✅ 設定は有効です {--fix なしでフォーマット問題がある場合} フォーマットを修正するには、自然言語で依頼してください。例: 「Terraform のフォーマットを修正して」「フォーマットを直して」「フォーマットを自動修正して」
エラー時:
## 検証結果: ❌ エラー ### フォーマット {フォーマットの差分} ### 構文検証 ❌ {エラー数} 件のエラー | ファイル | 行 | エラー | |----------|-----|--------| | main.tf | 2 | Missing required argument "ami" | | ... | ... | ... | ### 修正方法 {エラーごとの修正方法を提案}
validate よくあるエラーと修正方法
| エラー | 原因 | 修正方法 |
|---|---|---|
| Missing required argument | 必須属性がない | 属性を追加 |
| Reference to undeclared resource | リソース参照エラー | リソース名を確認 |
| Invalid reference | 参照構文エラー | 構文を確認 |
| Unsupported attribute | 存在しない属性 | プロバイダのドキュメントを確認 |
| Cycle detected | 循環参照 | depends_on を見直し |
その他の操作
output:
terraform output
version:
terraform version
出力フォーマット
## Terraform 実行結果 ### コマンド terraform {command} ### 結果 {コマンドの出力} ### サマリー {成功/失敗と簡潔な説明}
注意事項
- ✅ plan は安全な読み取り操作
- ✅ validate は読み取り専用で安全な操作
- ✅ apply は必ずユーザー確認を取る
- ✅ 破壊的変更がある場合は特に慎重に
- ✅
で plan ファイルを保存すると apply 時に同じ変更が適用される--out - ❌
は使用しない-auto-approve - ❌
は直接実行しない(ユーザーに手動実行を案内)destroy - ❌ plan 結果を見ずに apply しない
- ❌ 確認なしで apply を実行しない