Claude Code が面白くて最近は週末バイブコーダーになってます。 今月末で Claude の年間サブスクが切れるので、Claude Max にするか Codex を併用するか絶賛悩み中です。

そんな中、今回は開発中の HCP Terraform 用の CLI ツール hcpt を使った「GitHub の PR に紐づく Terraform Plan を確認する方法」を紹介します。

GitHub - nnstt1/hcpt

Contribute to nnstt1/hcpt development by creating an account on GitHub.
icon
github.com

使い方の簡単な説明

hcpt では hcpt run コマンドで HCP Terraform 内の Terraform 実行結果を確認できます。

  • hcpt run show
    • Terraform 実行結果の詳細を表示
    • Run ID, Workspace 名, GitHub の PR を指定可能
  • hcpt run list --workspace/-w
    • 指定したワークスペースの Terraform 実行結果を一覧表示

HCP Terraform と GitHub を連携していると、PR トリガーで Terraform Plan が実行されます。 hcpt run show --pr <PR 番号> --repo <owner/repo> で PR トリガーの Terraform Plan を確認できます。

背景

HCP Terraform と GitHub を組み合わせて使っていると PR トリガーの Terraform Plan 結果を確認する事が多いんですが、CI のリンクからブラウザで HCP Terraform を開くと高確率でセッションが切れていて再ログインが必要になります。

HCP Terraform のセッションタイムアウトは HashiCorp Cloud Platform (HCP) 側で管理されていて、現在 HCP ではセッションタイムアウトが 1 時間に固定されているからです。

このセッションタイムアウトで地味にヘイトが溜まっていて、サクッと確認できるように hcpt run で PR トリガーの Plan を確認できるようにしました。

使い方

hcpt run show コマンドで参照する PR を指定するフラグ --pr とリポジトリを指定する --repo を使います。 カレントディレクトリが GitHub リポジトリであれば、--repo フラグは省略できます。

Plan 結果の表示

hcpt run show では Plan 結果が以下のように表示されます。 これは Plan が終了しているときの例ですが、追加/変更/削除がある場合は “Plan Changes” にリソースの差分が表示されます。

$ hcpt run show --pr 1 --repo nnstt1/terraform-demo
ID:                 run-jjwvuT9iYFYSJLUG
Status:             planned_and_finished
Message:            test update
Terraform Version:  1.14.5
Has Changes:        true
Plan Changes:       +0 ~1 -0
Created At:         2026-02-15 01:29:43
Planned At:         2026-02-15 01:29:58

Resource Changes:
- cloudflare_dns_record.terraform [update]
    content: 192.0.2.1 → 192.0.2.2

JSON 形式のパラメータとかだと差分表示が崩れてしまうかも……。

ステータスの監視

--watch/-W フラグを付けると Plan が完了するまでステータスを監視できます。

$ hcpt run show --pr 1 --repo nnstt1/terraform-demo --watch
ID:                 run-JWZrfyuFvhaSYtqQ
Status:             plan_queued
Message:            Triggered via UI
Terraform Version:  1.14.5
Has Changes:        -
Plan Changes:       -
Created At:         2026-02-16 00:27:40
---
2026-02-16 09:27:48  Status: planning
2026-02-16 09:27:53  Status: planning
2026-02-16 09:27:58  Status: planned_and_finished
---
ID:                 run-JWZrfyuFvhaSYtqQ
Status:             planned_and_finished
Message:            Triggered via UI
Terraform Version:  1.14.5
Has Changes:        true
Plan Changes:       +0 ~1 -0
Created At:         2026-02-16 00:27:40
Planned At:         2026-02-16 00:27:55

Resource Changes:
- cloudflare_dns_record.terraform [update]
    content: 192.0.2.1 → 192.0.2.2

ワークスペースの選択

1 つの PR に複数の Terraform Plan が紐づいていることもあります。 --pr フラグだけでは表示する Plan を特定できないためエラーになります。

# 複数の Plan が紐づいている場合
$ hcpt run show --pr 1 --repo nnstt1/terraform-demo
Error: multiple HCP Terraform runs found in PR #1:
  - Terraform Cloud/nnstt1/workspace-demo
  - Terraform Cloud/nnstt1/workspace-demo-2
Use --workspace/-w to specify which one

この場合は --workspace/-w フラグで対象のワークスペースを指定して、Plan を絞り込みます。

$ hcpt run show --pr 1 --repo nnstt1/terraform-demo --workspace workspace-demo
ID:                 run-JWZrfyuFvhaSYtqQ
Status:             planned_and_finished
Message:            Triggered via UI
Terraform Version:  1.14.5
Has Changes:        true
Plan Changes:       +0 ~1 -0
Created At:         2026-02-16 00:27:40
Planned At:         2026-02-16 00:27:55

Resource Changes:
- cloudflare_dns_record.terraform [update]
    content: 192.0.2.1 → 192.0.2.2

まとめ

HCP Terraform 用の CLI ツール hcpt を使って GitHub の PR に紐づく Terraform Plan を確認する方法を紹介しました。

hcpt は Web UI を使わずに HCP Terraform を扱うことを目指しています。 まだまだ開発中ですが、刺さるところがあったらぜひ使ってみてください!

GitHub - nnstt1/hcpt

Contribute to nnstt1/hcpt development by creating an account on GitHub.
icon
github.com