mcpField
T
tfc-run-logs

tfc-run-logs

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

tfc-run-logs について

tfc-run-logsは、既知の実行IDを指定してTerraform Cloudのplanおよびapplyログを取得するスキルです。インフラチームが出力を読み、障害調査や共有に利用できます。

主な機能

  1. 01planとapplyのログ取得
  2. 02planまたはapplyのみの取得
  3. 03ANSIカラーコードの除去
  4. 04Terraform Cloudアドレスの指定

活用シーン

  1. 01失敗したplanやapplyの調査
  2. 02インフラ実行出力の確認
  3. 03課題やチーム内でのログ共有

インストール

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

$npx skills add https://github.com/laurigates/claude-plugins --skill tfc-run-logs

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

詳細

Terraform Cloud 実行ログ

Terraform Cloud の実行から、プランおよび/または適用のログを直接ターミナルに取得して表示します。

このスキルを使用する場面

次の場合にこのスキルを使用します…次の場合は代わりに関連スキルを使用します…
既知の TFC 実行 ID のプランまたは適用の出力テキストを読むリソースの変更を構造化 JSON として分析する(tfc-plan-json)
ログ行を調べて、失敗したプランまたは適用の問題をデバッグするログの内容を確認せずに合否ステータスのみを確認する(tfc-run-status)
インフラストラクチャの変更を人が読みやすい形式で確認する実行履歴から適切な実行 ID を検索する(tfc-list-runs)
ログを取得してチームメイトと共有したり、課題に貼り付けたりする略称を使って FVH ワークスペースの最新の実行を閲覧する(tfc-workspace-runs)

前提条件

# Required environment variables
export TFE_TOKEN="your-api-token"        # User or team token (not organization token)
export TFE_ADDRESS="app.terraform.io"    # Optional, defaults to app.terraform.io

基本的なワークフロー

プランと適用の両方のログを取得する
#!/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>}"

# Get run with plan and apply relationships
RUN_DATA=$(curl -sf --header "Authorization: Bearer $TOKEN" \
  "$BASE_URL/runs/$RUN_ID?include=plan,apply")

# Extract IDs
PLAN_ID=$(echo "$RUN_DATA" | jq -r '.data.relationships.plan.data.id')
APPLY_ID=$(echo "$RUN_DATA" | jq -r '.data.relationships.apply.data.id // empty')

# Get and display plan logs
PLAN_LOG_URL=$(curl -sf --header "Authorization: Bearer $TOKEN" \
  "$BASE_URL/plans/$PLAN_ID" | jq -r '.data.attributes."log-read-url"')

echo "=== PLAN OUTPUT ==="
curl -sf "$PLAN_LOG_URL" | sed 's/\x1b\[[0-9;]*m//g'  # Strip ANSI codes

# Get apply logs if exists
if [ -n "$APPLY_ID" ]; then
  APPLY_LOG_URL=$(curl -sf --header "Authorization: Bearer $TOKEN" \
    "$BASE_URL/applies/$APPLY_ID" | jq -r '.data.attributes."log-read-url"')

  echo ""
  echo "=== APPLY OUTPUT ==="
  curl -sf "$APPLY_LOG_URL" | sed 's/\x1b\[[0-9;]*m//g'
fi
プランログのみを取得する
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
BASE_URL="https://${TFE_ADDRESS:-app.terraform.io}/api/v2"
RUN_ID="run-abc123"

# Get plan ID from run
PLAN_ID=$(curl -sf --header "Authorization: Bearer $TOKEN" \
  "$BASE_URL/runs/$RUN_ID" | jq -r '.data.relationships.plan.data.id')

# Get log URL and fetch logs
PLAN_LOG_URL=$(curl -sf --header "Authorization: Bearer $TOKEN" \
  "$BASE_URL/plans/$PLAN_ID" | jq -r '.data.attributes."log-read-url"')

curl -sf "$PLAN_LOG_URL"
適用ログのみを取得する
TOKEN="${TFE_TOKEN:?TFE_TOKEN not set}"
BASE_URL="https://${TFE_ADDRESS:-app.terraform.io}/api/v2"
RUN_ID="run-abc123"

# Get apply ID from run
APPLY_ID=$(curl -sf --header "Authorization: Bearer $TOKEN" \
  "$BASE_URL/runs/$RUN_ID" | jq -r '.data.relationships.apply.data.id')

if [ -n "$APPLY_ID" ] && [ "$APPLY_ID" != "null" ]; then
  # Get log URL and fetch logs
  APPLY_LOG_URL=$(curl -sf --header "Authorization: Bearer $TOKEN" \
    "$BASE_URL/applies/$APPLY_ID" | jq -r '.data.attributes."log-read-url"')

  curl -sf "$APPLY_LOG_URL"
else
  echo "No apply for this run"
fi

簡単に使えるワンライナー

プランログ(ANSI カラー付き)
curl -sf -H "Authorization: Bearer $TFE_TOKEN" \
  "https://app.terraform.io/api/v2/runs/run-abc123?include=plan" | \
  jq -r '.included[0].attributes."log-read-url"' | xargs curl -sf
プランログ(整形済みテキスト)
curl -sf -H "Authorization: Bearer $TFE_TOKEN" \
  "https://app.terraform.io/api/v2/runs/run-abc123?include=plan" | \
  jq -r '.included[0].attributes."log-read-url"' | \
  xargs curl -sf | sed 's/\x1b\[[0-9;]*m//g'

重要な注意事項

  • ログ URL は秘密情報です:Archivist URL には認証情報が埋め込まれています。ログに記録しないでください
  • URL の有効期限:ログ URL は 25 時間有効です
  • ログの取得に認証は不要です:Archivist URL を取得した後は、ベアラートークンは必要ありません
  • ANSI コード:ログにはカラーコードが含まれます。出力を整形するには sed を使って削除してください
  • レート制限:/runs エンドポイントへのリクエストは 1 分あたり 30 回までです

よくあるエラー

404 Not Found
  • 実行 ID が存在しない、またはアクセス権限がありません
  • TFC はセキュリティ対策として、どちらの場合も 404 を返します
401 Unauthorized
  • トークンが無効、または有効期限切れです
  • 組織トークンでは実行データにアクセスできません。ユーザーまたはチームのトークンを使用してください
適用ログがない
  • 実行がプランのみである、まだ適用されていない、または破棄されている可能性があります
  • まず実行ステータスを確認してください

関連項目

  • tfc-run-status:実行のステータスをすばやく確認します
  • tfc-list-runs:ワークスペースの最近の実行を一覧表示します
  • tfc-plan-json:構造化されたプラン JSON 出力を取得します

コメント