mcpField
T
tfc-run-status

tfc-run-status

github.com/laurigatesクラウド・DevOps5961 回インストール1 日前に更新
リポジトリ

tfc-run-status について

tfc-run-statusは、既知のTerraform Cloud実行の状態と詳細を確認するスキルです。インフラチームが進行状況やリソース変更数、コスト見積もりを把握し、実行可能な操作を確認できます。

主な機能

  1. 01実行状態とタイムスタンプの確認
  2. 02リソース変更数の表示
  3. 03利用可能な操作と権限の確認
  4. 04コスト見積もりの取得
  5. 05最終状態までのポーリング

活用シーン

  1. 01実行が正常に完了したかの確認
  2. 02完了までの実行状況の監視
  3. 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 出力を取得

コメント