---
title: "HCP Terraformとは？旧Terraform Cloudの料金・無料枠とCLI接続の手順"
url: "https://www.issoh.co.jp/tech/details/3340/"
published: 2024-08-19
updated: 2026-09-28
categories: ["IaC"]
publisher: "株式会社一創"
---

# HCP Terraformとは？旧Terraform Cloudの料金・無料枠とCLI接続の手順

HCP Terraformは、Terraformのstate保管・plan/applyの実行・承認・権限管理をHashiCorpがホストするSaaSです。2024年4月22日まではTerraform Cloudという名前で、中身は同じ製品です。この記事では、HCP（HashiCorp Cloud Platform）やIBMとの関係、1リソース1時間あたりで決まる料金、Terraform CLIからの接続手順、使わない方がよい条件を順に整理します。数値は2026年9月28日時点の公式ドキュメントとIBMの料金ページで確認しています。

## まとめ：HCP Terraformの要点

- **正体**：Terraformの実行基盤とstate置き場のSaaS。Terraform Cloudが2024年4月22日に改称したもので、別製品ではありません。
- **HCPとの関係**：HCP（HashiCorp Cloud Platform）はHashiCorpのSaaS群の総称で、HCP Terraformはその1製品です。
- **料金**：管理リソース500個まで無料。超えると1リソース1時間単位の従量課金で、IBMの料金表ではEssentialsが0.00013ドル（月730時間換算で約0.095ドル）です。
- **接続**：`terraform login`でトークンを保存し、`terraform`ブロック内の`cloud`ブロックに組織名とワークスペースを書いて`terraform init`します。
- **向かない条件**：従量料金が予算を超える構成、データを米国・EU以外に置く必要がある組織、HCP Terraformへの外向き通信も許可できない環境。

## HCP Terraformの位置づけ：改称の経緯とHCP・IBMとの関係

### Terraform CloudからHCP Terraformへの改称

HashiCorpは2024年4月22日付でTerraform CloudをHCP Terraformへ改称しました。機能・URL（`app.terraform.io`）・APIはそのまま引き継がれています。CLIの`cloud`ブロックや環境変数名に`TFC_`（Terraform Cloudの略）が残っているのはこのためで、古い記事の手順も大半はそのまま通ります。「Terraform CloudとHCP Terraformを連携させる」という説明は、同じ製品を別物として扱っているので誤りです。

### HCP（HashiCorp Cloud Platform）の中での位置

HCPは、HashiCorpがマネージドで提供する製品群とアカウント・組織・請求の共通基盤を指します。HCP Terraformのほか、HCP Vault Dedicated、HCP Packer、HCP Boundary、HCP Vault Radarなどが同じ基盤に載っており、Terraformのstate管理やリモート実行はHCP Terraformが提供します。請求の境界はHCPの組織で、1つのHCP組織に複数のHCP Terraform組織をひも付けられます。サインイン画面の「Continue with HCP account」でHCPアカウントを使うと、既存のHCP Terraformアカウントがあればリンクされ、無ければ新規に作られます。HashiCorpの製品全体の関係は[HashiCorp（ハシコープ）とは？主要製品の違い・IBM買収後の変化・BSLライセンスを解説](/tech/details/7582/)でまとめています。

### IBM買収後の製品名：料金表は「IBM Terraform」

HashiCorpは2025年2月27日にIBMの傘下に入りました。2026年9月時点のIBMの料金ページ（`ibm.com/products/hashicorp/pricing`）では、同じ製品が「IBM Terraform」の名前で単価付きで載っています。一方、HashiCorpの開発者向けドキュメントは引き続き「HCP Terraform」と表記しています。見積もりや稟議ではIBM Terraform、手順や設定を調べるときはHCP Terraformの名前で探すと、それぞれの一次情報に当たれます。

## HCP Terraformが肩代わりする作業：state・実行・承認

### リモートstateとロック

ローカル運用では、stateを置くS3バケットやGCSバケット、同時実行を防ぐロックを自前で用意します。HCP Terraformはワークスペースごとにstateを保管し、実行中はロックをかけ、版の履歴を残します。state保管用のバックエンドを自前で構築・運用する作業を減らせます。自前でS3に置く場合の構造と注意点は[Terraform stateとは？tfstateの構造とS3バックエンド・移動削除の安全手順](/tech/details/16525/)を参照してください。

### 3つの実行ワークフロー

| 方式    | 起点                  | 向いている場面            |
| ----- | ------------------- | ------------------ |
| VCS駆動 | リポジトリへのpush・PR      | PRにplan結果を載せて承認したい |
| CLI駆動 | 手元の`terraform plan` | 既存の手作業運用から移る       |
| API駆動 | 既存CIからAPI呼び出し       | パイプラインを自前で持っている    |

VCS駆動では、PRを開くと変更内容で投機的なplan（speculative plan）が走り、結果がPRのチェックとして表示されます。マージされると本番のplanが走り、設定に応じて承認を待ってからapplyします。

### プロジェクト・ワークスペース・Stacks

HCP Terraformでは、組織の下にプロジェクトがあり、その中にワークスペースとStacksが並びます。ワークスペースは1つのルートモジュールとそのstate・変数・実行履歴の単位で、Terraform CLIの`terraform workspace`コマンドが扱う「同じ設定で複数のstateを切り替える」仕組みとは別物です。名前が同じなので、CLIのworkspaceで環境を分けている構成をそのまま移すと設計が混乱します。CLI側の使い分けは[terraform workspaceの使い方と環境分離の判断基準｜分割方式の比較](/tech/details/16529/)で整理しています。

Stacksは、複数のモジュールをコンポーネントとして束ね、同じ構成を環境やリージョンごとに繰り返し展開するための単位です。2025年9月25日のHashiConf 2025で一般提供（GA）が発表され、RUMベースの新しいプランで使えます。ワークスペースの上に作られたものではなく、同じプロジェクトの中に並べて置けます。

### ワークスペース間の値の受け渡し

ネットワークとアプリケーションのようにワークスペースを分けて下流側から上流の出力値を読むとき、HCP Terraformではstate全体へのアクセスを必要としない`tfe_outputs`データソース（tfeプロバイダー）を公式が推奨しています。`terraform_remote_state`も使えますが、state全体へのアクセス権限が必要です。上流の変更で下流を自動的に再実行したいときは、ワークスペース間のrun triggerを設定します。

## HCP Terraformの料金：無料枠500リソースと従量課金の計算

### プラン別の機能と上限

| 項目            | Free  | Essentials | Standard  | Premium   |
| ------------- | ----- | ---------- | --------- | --------- |
| 管理リソース数       | 500まで | 無制限        | 無制限       | 無制限       |
| 単価（1リソース1時間）  | 無料    | 0.00013ドル  | 0.00064ドル | 0.00135ドル |
| 月額換算（1リソース）   | 無料    | 約0.095ドル   | 約0.467ドル  | 約0.986ドル  |
| 同時実行（リモート）    | 1     | 3          | 10        | 200       |
| 同時実行（エージェント）  | 1     | 1          | 10        | 300       |
| カスタムRBAC      | なし    | あり         | あり        | あり        |
| コスト見積もり       | なし    | なし         | あり        | あり        |
| ノーコードプロビジョニング | なし    | なし         | あり        | あり        |
| 監査ログ          | なし    | なし         | なし        | あり        |

単価は[IBMの料金ページ](https://www.ibm.com/products/hashicorp/pricing)のPAYG（従量課金）表、機能と上限は[HashiCorpのプラン比較ページ](https://developer.hashicorp.com/terraform/cloud-docs/overview)と各機能のドキュメントによります。プライベートモジュールレジストリ、Run Tasks、セルフホスト型エージェント1台はFreeでも使えます。月額換算は730時間で掛けた概算で、税や地域による差は含みません。StandardとPremiumでは、同時実行数を追加購入できます（リモート実行1枠が1時間0.32877ドル＝月約240ドル、エージェント実行1枠が0.16438ドル＝月約120ドル）。

### 課金対象になるリソースの数え方

課金の単位は、HCP Terraformが保管するstateの中で`mode = "managed"`になっているリソースです。`count`や`for_each`で作った個々のインスタンス、モジュールの中身も1個ずつ数えます。数えないのは`null_resource`、`terraform_data`、データソース、ローカル値と変数です。課金は1時間単位で、1時間に満たない分も1時間として扱い、その時間内のピーク数で計算します。ワークスペースとStacksのリソースは合算されます。

### 1,000リソースを管理したときの月額試算

管理リソースを常時1,000個持つ組織を例に、730時間で計算すると次のとおりです。

- Essentials：0.00013ドル×1,000×730時間＝約94.9ドル
- Standard：0.00064ドル×1,000×730時間＝約467.2ドル
- Premium：0.00135ドル×1,000×730時間＝約985.5ドル

無料枠の500リソースは、2026年3月31日に提供を終えた旧Free（ユーザー数ベース）に代わるRUMベースのFreeプランの上限です。

AWSでいえば、セキュリティグループのルール、Route 53のレコード、IAMポリシーのアタッチメントのような小さなリソースも1個として数えます。DNSレコードを`for_each`で300件管理するだけで300リソースになるため、見積もりは「サーバーの台数」ではなく「stateのリソース数」で行ってください。既存のstateなら、次のコマンドで課金対象外の行を除いた概数が出ます。子モジュール内のデータソースは`module.net.data.aws_availability_zones.all`のように行頭が`module.`になるため、行頭の`data.`だけで除外すると数え過ぎます。

```
# データソース・null_resource・terraform_data を除いて数える
terraform state list \
  | grep -v -E '(^|\.)data\.|(^|\.)null_resource\.|(^|\.)terraform_data\.' \
  | wc -l
```

得られるのはそのstateの現時点の数です。課金は組織内の全ワークスペースとStacksの合計を1時間ごとのピークで数えるため、一時的に作って消すリソースが多い運用では実額がこの数を上回ります。

## CLIからHCP Terraformへ接続する手順：terraform loginとcloudブロック

### トークンの保存：terraform login

開発者のPCでは`terraform login`を実行すると、ブラウザでトークン発行画面が開き、発行したトークンが自分のホームディレクトリの資格情報ファイルに平文で保存されます。共用マシンでは実行しないでください。CIのように対話できない環境では、環境変数でトークンを渡します。

```
# 開発者のPC（ホスト名を省略すると app.terraform.io）
terraform login

# 保存先（Terraform 1.16.4 の terraform login -help の表示）
# ~/.terraform.d/credentials.tfrc.json

# CIではホスト名のドットをアンダースコアに置き換えた変数名で渡す
export TF_TOKEN_app_terraform_io="発行したチームトークン"
```

### 接続先の定義：cloudブロック

`cloud`ブロックはTerraform 1.1以降で使える設定で（それ以前は`remote`バックエンド）、`terraform`ブロックの中に書き、組織名と対象ワークスペースを指定します。ワークスペースは名前で1つ指定するか、タグで複数を束ねます。次の例はTerraform 1.16.4で`terraform validate`が通ることを確認した設定です。

```
terraform {
  cloud {
    organization = "example-org"
    # hostname を省略すると app.terraform.io（EU組織は app.eu.terraform.io）

    workspaces {
      project = "networking"
      tags    = { layer = "network", env = "dev" }
    }
  }
}
```

タグ指定の場合、該当するワークスペースが無ければ`terraform init`の途中で新規作成を提案されます。名前を指定する`name`とタグ指定の`tags`は同時に使えません。

### initで出るエラーと対処

トークンが無い状態で`terraform init`を実行すると、Terraform 1.16.4では次のように止まります。

```
Initializing HCP Terraform...

Error: Required token could not be found

Run the following command to generate a token for app.terraform.io:
    terraform login
```

トークンはあるのに組織名を誤っている、またはトークンの権限が足りない場合は`Error: Failed to read organization "example-org" at host app.terraform.io`と`unauthorized`が出ます。後者はトークンの種類（ユーザー・チーム・組織）と、そのトークンが対象組織に属しているかを確認してください。既にローカルやS3にstateがある作業ディレクトリでは、stateをバックアップしたうえで、既存のbackendブロックがあればcloudブロックに置き換え、なければ`cloud`ブロックを追加して`terraform init`を実行するとstateの移行を確認されます。

## AWSの静的キーを置かない設定：動的プロバイダー認証

ワークスペースの変数にAWSのアクセスキーを保存する運用は、キーのローテーションと漏えい対策が残ります。HCP Terraformの動的プロバイダー認証（dynamic provider credentials）は、実行ごとにOIDCトークンを発行し、AWS側がそれを検証して一時的な認証情報を返す仕組みです。実行が終わると認証情報は破棄されます。

AWS側には、プロバイダーURLを`https://app.terraform.io`（末尾のスラッシュ無し）、オーディエンスを`aws.workload.identity`としたOIDCプロバイダーを作り、次のような信頼ポリシーを持つIAMロールを用意します。信頼ポリシーはロールの引き受けを許すだけなので、操作対象のAWSリソースへの権限ポリシーは別に付与します。

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Federated": "arn:aws:iam::123456789012:oidc-provider/app.terraform.io" },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": { "app.terraform.io:aud": "aws.workload.identity" },
        "StringLike": { "app.terraform.io:sub": "organization:example-org:project:networking:workspace:*:run_phase:*" }
      }
    }
  ]
}
```

ワークスペース側では環境変数`TFC_AWS_PROVIDER_AUTH`を`true`に、`TFC_AWS_RUN_ROLE_ARN`にロールのARNを設定します。リージョンはAWSプロバイダーの`region`引数かワークスペースの`AWS_REGION`変数で渡し、ワークスペースに残っている静的キーの変数は削除しておきます。`sub`の条件にプロジェクト名とワークスペース名が入るため、組織全体に`*`で許可せず、ロールをプロジェクト単位に分けると権限の範囲を絞れます。planとapplyで別のロールを使いたい場合は`TFC_AWS_PLAN_ROLE_ARN`と`TFC_AWS_APPLY_ROLE_ARN`に分けて指定します。自前でホストするHCP Terraformエージェントで使う場合は、エージェントv1.7.0以上が必要です。GitHub ActionsからOIDCでAWSに入る構成と比べたい場合は[GitHub ActionsとTerraformでAWSのCI/CDを構築する手順（OIDC・S3ネイティブロック対応）](/tech/details/2715/)が同じ考え方で書かれています。

## HCP Terraform・HCP Europe・Terraform Enterpriseの違い

| 項目          | HCP Terraform    | HCP Europe          | Terraform Enterprise |
| ----------- | ---------------- | ------------------- | -------------------- |
| 提供形態        | SaaS             | SaaS（EU）            | 自社環境に導入              |
| URL         | app.terraform.io | app.eu.terraform.io | 自社ドメイン               |
| 従量課金（PAYG）  | あり               | なし（契約のみ）            | なし（契約のみ）             |
| 既存組織の持ち込み   | ―                | 不可（新規作成）            | ―                    |
| 2026年9月の最新版 | 常に最新             | 常に最新                | 2.0.8                |

HCP Europeは、アカウント・組織・請求を他地域と分けてEU内に置くための提供形態です。既存のHCP Terraform組織をつなぐことも移すこともできず、新しいHCPアカウントと組織を作り直します。チーム機能の代わりにHCP側のグループとロールで権限を管理し、ServiceNow連携やKubernetes Operatorは使えません。

Terraform Enterpriseは同じ機能を自社のKubernetes・Docker・Podman・Nomad上に導入する形態で、2026年9月時点の最新は2026年9月23日公開の2.0.8（同梱のTerraform CLIは1.15.9）です。インターネットから切り離した環境でTerraformを実行する必要がある組織は、こちらが選択肢になります。

## HCP Terraformを使わない方がよい条件

HCP Terraformは「stateとCIを自前で持ちたくない」チームには合理的ですが、次の条件に当てはまるなら、S3などの自前バックエンドとGitHub Actions、またはAtlantisで組む方が安く済むか、要件を満たせます。

- **小さなリソースを数千個管理する**：課金はstateのリソース数で決まるため、DNSレコードやIAMの付け外しを大量に持つ構成では膨らみます。5,000リソースならStandardで月約2,336ドルです。採用前に、HCP Terraformの従量料金と、自前CIの実行料金・state保管費・保守工数を比較してください。
- **Freeプランで同時に複数のリモート実行が必要になる**：リモート同時実行枠が1のため、PRが重なるとplanが順番待ちになります。カスタムRBACも無いため、細かく権限を分けたいなら最低でもEssentialsが要ります。
- **データを米国・EU以外に置く規定がある**：SaaSとして案内されているのは米国（app.terraform.io）とEU（app.eu.terraform.io）の2系統で、stateにはパスワードなどの機密値がそのまま記録され得ます。国内保管が条件ならTerraform Enterpriseか自前バックエンドです。
- **ポリシー制御が要件なのに下位プランで済ませたい**：Sentinel・OPAのポリシーセットの提供範囲は、公式ドキュメント同士で記述が食い違っています。プラン比較表はFreeとEssentialsを「-」とし、[Policy Sets APIのページ](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/policy-sets)は「Freeに1ポリシーセット・最大5ポリシーが含まれる」と書いています。apply前に止めるポリシーを本番の要件にするなら、Freeの枠に頼らずStandardで見積もり、契約前に対象組織の画面で上限を確かめてください。

PRのコメントでplan・applyを回す自前の構成は[AtlantisでTerraformをPR運用する構成と権限設計｜採用条件を解説](/tech/details/16549/)で、Terraform本体の版の確認は[Terraformの最新バージョンは1.16｜バージョン確認とアップグレード手順・1.16の新機能](/tech/details/8928/)で扱っています。

## HCP Terraformに関するよくある質問

### HCP Terraformとは何ですか？

Terraformのstate保管、plan・applyのリモート実行、承認フロー、権限管理をHashiCorp（IBM傘下）がホストするSaaSです。旧称はTerraform Cloudで、2024年4月22日に改称しました。

### HCP TerraformとTerraform Cloudの違いは何ですか？

名前だけで、製品は同じです。URLの`app.terraform.io`、API、`cloud`ブロックの書き方も変わっていません。環境変数の`TFC_`接頭辞は旧称の名残です。

### HCP（HashiCorp Cloud Platform）とは何ですか？

HashiCorpのマネージド製品群と、それらのアカウント・組織・請求をまとめる共通基盤です。HCP Terraformはその中の1製品で、ほかにHCP Vault DedicatedやHCP Packerなどがあります。

### HCP Terraformは無料で使えますか？

管理リソース500個まではFreeプランで無料です。超える場合はEssentials以上の従量課金になり、IBMの料金表では1リソース1時間あたりEssentials 0.00013ドル、Standard 0.00064ドル、Premium 0.00135ドルです。

### CLIからHCP Terraformにログインするにはどうすればよいですか？

`terraform login`を実行し、ブラウザで発行したトークンを保存します。保存先は`~/.terraform.d/credentials.tfrc.json`です。CIでは`TF_TOKEN_app_terraform_io`環境変数でトークンを渡します。

## 関連記事

- [HashiCorp（ハシコープ）とは？主要製品の違い・IBM買収後の変化・BSLライセンスを解説](/tech/details/7582/)
- [Terraformの最新バージョンは1.16｜バージョン確認とアップグレード手順・1.16の新機能](/tech/details/8928/)
- [Terraform stateとは？tfstateの構造とS3バックエンド・移動削除の安全手順](/tech/details/16525/)
- [GitHub ActionsとTerraformでAWSのCI/CDを構築する手順（OIDC・S3ネイティブロック対応）](/tech/details/2715/)
- [AtlantisでTerraformをPR運用する構成と権限設計｜採用条件を解説](/tech/details/16549/)

---

出典: [HCP Terraformとは？旧Terraform Cloudの料金・無料枠とCLI接続の手順](<https://www.issoh.co.jp/tech/details/3340/>)（株式会社一創）
