tfc-run-status について
tfc-run-statusは、既知のTerraform Cloud実行の状態と詳細を確認するスキルです。インフラチームが進行状況やリソース変更数、コスト見積もりを把握し、実行可能な操作を確認できます。
主な機能
- 01実行状態とタイムスタンプの確認
- 02リソース変更数の表示
- 03利用可能な操作と権限の確認
- 04コスト見積もりの取得
- 05最終状態までのポーリング
活用シーン
- 01実行が正常に完了したかの確認
- 02完了までの実行状況の監視
- 03変更数と利用可能な操作の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill tfc-run-statusインストール後、Claude Code で/tfc-run-statusを入力して読み込まれたか確認します。
詳細
Terraform Cloud の実行ステータス
Terraform Cloud の実行状況をすばやく確認します。リソース変更数、タイムスタンプ、利用可能なアクションを表示します。
このスキルを使う場合
| 次の場合はこのスキルを使います… | 次の場合は代わりに関連スキルを使います… |
|---|---|
| 既知の実行 ID が成功したか、失敗したか、進行中かを確認する | 完全なプラン/適用ログのテキストを読む(tfc-run-logs) |
| 実行が最終状態に達するまでポーリングする | リソース変更に関する構造化されたプラン JSON を分析する(tfc-plan-json) |
| 実行で利用可能なアクション(確認/キャンセル/破棄)を調べる | 多数の実行を一覧表示またはフィルタリングして ID を見つける(tfc-list-runs) |
| コスト見積もりや、追加/変更/破棄されるリソース数を確認する | FVH ワークスペースの最新の実行を確認する(tfc-workspace-runs) |
前提条件
export TFE_TOKEN="your-api-token" # User or team token
export TFE_ADDRESS="app.terraform.io" # Optional
基本コマンド
完全なステータス確認
#!/bin/bash
set -euo pipefail
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
BASE_URL="https://${TFE_ADDRESS:-app.terraform.io}/api/v2"
RUN_ID="${1:?Usage: $0 <run-id>}"
curl -sf --header "Authorization: Bearer $TOKEN" \
"$BASE_URL/runs/$RUN_ID?include=plan,apply,cost-estimate" | \
jq -r '
"Run ID: " + .data.id,
"Status: " + .data.attributes.status,
"Message: " + (.data.attributes.message // "No message"),
"Created: " + .data.attributes."created-at",
"Has Changes: " + (.data.attributes."has-changes" | tostring),
"Auto-Apply: " + (.data.attributes."auto-apply" | tostring),
"",
"Resource Changes:",
" Additions: " + ((.included[] | select(.type == "plans") | .attributes."resource-additions") // 0 | tostring),
" Changes: " + ((.included[] | select(.type == "plans") | .attributes."resource-changes") // 0 | tostring),
" Destructions: " + ((.included[] | select(.type == "plans") | .attributes."resource-destructions") // 0 | tostring),
"",
"Actions:",
" Confirmable: " + (.data.attributes.actions."is-confirmable" | tostring),
" Cancelable: " + (.data.attributes.actions."is-cancelable" | tostring),
" Discardable: " + (.data.attributes.actions."is-discardable" | tostring),
" Force-Cancelable:" + (.data.attributes.actions."is-force-cancelable" | tostring)
'
ステータスのみをすばやく確認
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
RUN_ID="run-abc123"
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq -r '.data.attributes.status'
タイムスタンプ付きのステータス
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq -r '
.data.attributes |
"Status: " + .status,
"Timestamps:",
" Created: " + (."created-at" // "N/A"),
" Planned: " + (."status-timestamps"."planned-at" // "N/A"),
" Applied: " + (."status-timestamps"."applied-at" // "N/A")
'
利用可能なアクションを確認
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq '.data.attributes.actions'
権限を確認
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq '.data.attributes.permissions'
完了するまでポーリング
#!/bin/bash
set -euo pipefail
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
RUN_ID="${1:?Usage: $0 <run-id>}"
FINAL_STATES="applied planned_and_finished planned_and_saved discarded errored canceled force_canceled policy_soft_failed"
while true; do
STATUS=$(curl -sf --header "Authorization: Bearer $TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq -r '.data.attributes.status')
echo "$(date +%H:%M:%S) Status: $STATUS"
if echo "$FINAL_STATES" | grep -qw "$STATUS"; then
echo "Run completed with status: $STATUS"
exit 0
fi
sleep 5
done
JSON 出力
実行の詳細全体
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID" | \
jq '{
id: .data.id,
status: .data.attributes.status,
message: .data.attributes.message,
created_at: .data.attributes."created-at",
has_changes: .data.attributes."has-changes",
auto_apply: .data.attributes."auto-apply",
is_destroy: .data.attributes."is-destroy",
actions: .data.attributes.actions,
timestamps: .data.attributes."status-timestamps"
}'
コスト見積もり付き
curl -sf --header "Authorization: Bearer $TFE_TOKEN" \
"https://app.terraform.io/api/v2/runs/$RUN_ID?include=cost-estimate" | \
jq '
if .included then
(.included[] | select(.type == "cost-estimates")) as $ce |
{
status: .data.attributes.status,
cost: {
prior_monthly: $ce.attributes."prior-monthly-cost",
proposed_monthly: $ce.attributes."proposed-monthly-cost",
delta_monthly: $ce.attributes."delta-monthly-cost"
}
}
else
{status: .data.attributes.status, cost: "N/A"}
end
'
実行ステータスのリファレンス
最終状態(実行完了)
applied- 正常に適用されましたplanned_and_finished- プランのみ、または変更なしplanned_and_saved- 保存済みのプランが確認待ちですdiscarded- ユーザーが実行を破棄しましたerrored- 実行中にエラーが発生しましたcanceled- ユーザーが実行をキャンセルしましたforce_canceled- 強制終了しましたpolicy_soft_failed- Sentinel のソフトフェイル(プランのみ)
最終状態ではない状態(進行中)
pending- 初期状態fetching/fetching_completed- 設定を取得中queuing/plan_queued- 実行枠の空きを待機中planning- プラン作成中planned- プラン完了、確認待ちcost_estimating/cost_estimated- コストを見積もり中policy_checking/policy_checked- Sentinel による評価中policy_override- ソフトフェイル、オーバーライド可能confirmed- ユーザーがプランを確認しましたapply_queued/applying- 適用中
アクションの状態
| アクション | 利用可能な場合 |
|---|---|
is-confirmable | ステータスが planned、cost_estimated、policy_checked、または policy_override の場合 |
is-cancelable | ステータスが planning または applying の場合 |
is-discardable | ステータスが pending、planned、cost_estimated、policy_checked、または policy_override の場合 |
is-force-cancelable | キャンセルが呼び出され、クールオフ期間が経過した場合 |
関連項目
tfc-run-logs:実行のプラン/適用ログを取得tfc-list-runs:ワークスペース内の最近の実行を一覧表示tfc-plan-json:構造化されたプラン JSON 出力を取得
コメント
Markdown 対応