tfc-run-logs について
tfc-run-logsは、既知の実行IDを指定してTerraform Cloudのplanおよびapplyログを取得するスキルです。インフラチームが出力を読み、障害調査や共有に利用できます。
主な機能
- 01planとapplyのログ取得
- 02planまたはapplyのみの取得
- 03ANSIカラーコードの除去
- 04Terraform Cloudアドレスの指定
活用シーン
- 01失敗したplanやapplyの調査
- 02インフラ実行出力の確認
- 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 出力を取得します
コメント
Markdown 対応