HCP Terraform(旧 Terraform Cloud)の機能と仕組み
- カテゴリ:HCP Terraform
- タグ:Terraform,HCP Terraform,学習メモ
- 公開日

Terraform をローカルの開発環境だけで使うと、state と AWS の認証情報は自分の PC に残る。同じ .tf を複数の人で使い、本番の環境を管理し始めると、state を置く場所を 1 つに決め、apply の前に人が確認する機会を作る必要が出てくる。これを Terraform 専用に用意したサービスに HCP Terraform がある。
HCP Terraform を触る前に、何をするサービスで、何ができて、どこで何が動くのかを押さえておく。
contents
HCP Terraform とは
HCP Terraform(エイチシーピー テラフォーム)は、HashiCorp が運営するクラウドサービス。ブラウザで https://app.terraform.io にログインして使う。2024 年 4 月 22 日に Terraform Cloud から改名した。無料プランがあり、管理するリソースが 500 個までは無料で使える。
HCP Terraform is an application that helps teams use Terraform together. It manages Terraform runs in a consistent and reliable environment, and includes easy access to shared state and secret data, access controls for approving changes to infrastructure, a private registry for sharing Terraform modules, detailed policy controls for governing the contents of Terraform configurations, and more.
(HCP Terraform は、チームで Terraform を一緒に使うためのアプリケーション。Terraform の run を一貫した信頼できる環境で管理し、共有の state と秘密のデータへのアクセス、インフラの変更を承認するためのアクセス制御、Terraform の module を共有する private registry、Terraform の設定の内容を統制する詳細なポリシー制御などを備える)
つまり、自分の PC で実行していた terraform plan と terraform apply を HashiCorp のクラウドで実行し、state と認証情報もそこに置く。複数の人が同じ state を使い、apply の前に人が内容を確認して承認する、という使い方のためのサービス。
HCP Terraform の機能
HCP Terraform でできることは 8 つ。
- run の実行:
planとapplyを HashiCorp のクラウドで実行し、ログと結果を画面で見る - state の保管: state を workspace の中に置き、過去のバージョンも残す
- 変数の管理:
.tfのvariableに入れる値と、run の環境変数を画面で登録する。秘密の値は sensitive にすると、登録後は誰も見られなくなる。複数の workspace で共有する値は variable set にまとめる - Dynamic provider credentials: AWS などの鍵を登録せずに、run のたびに一時的な認証情報を受け取る
- VCS 連携: GitHub などのリポジトリとつなぎ、PR で
planを、マージで run を自動で始める applyの承認: workspace ごとに、planのあと自動でapplyするか、人の承認で止めるかを決める- private registry: 自分の organization の中だけで使う module と provider を公開する
- ポリシー:
applyの前に、Sentinel や OPA で書いた決まりにplanの内容が反しないかを検査する
HCP Terraform の仕組み
HCP Terraform の中は、organization、project、workspace の 3 層でできている。organization は契約と人の単位で、1 人で使う場合も 1 つ作る。project は workspace をまとめる箱で、権限を分ける単位になる。workspace は 1 つの .tf の集まりに対応する作業場所で、ローカルで言えば 1 つのディレクトリにあたり、state・変数・run の記録を持つ。
run は、workspace の中で行う 1 回の plan と apply。run が始まると、HCP Terraform は使い捨ての Linux の仮想マシンを 1 台用意し、その中で terraform を実行する。.tf は、GitHub のリポジトリから取るか、ローカルの terraform コマンドから送る。仮想マシンの中の terraform が workspace の state を読み書きし、AWS の API に指示を送る。run が終わると仮想マシンは消える。同じ workspace の run は 1 つずつ順に実行され、前の run が終わるまで次の run は待つ。
図は、GitHub にある .tf を使う形で、push から AWS にリソースができるまでの登場人物。AWS に指示を送るのは仮想マシンの中の terraform で、自分の PC からは送らない。
HCP Terraform の外にあるのが、.tf を置く GitHub と、作られたリソースがある AWS。中にあるのが、workspace の state・変数・run の記録と、run の実行環境。
apply の前で止まる run
run は既定では、plan が終わったところで止まる。人が画面で plan の結果を確認して承認すると apply に進み、承認せずに破棄することもできる。workspace の auto-apply の設定を有効にすると、VCS の commit から始まった run は止まらずに apply まで進む。
本番用の workspace は auto-apply を無効のままにして人の承認を挟み、ステージング用の workspace は有効にしてマージで apply まで進める、という使い分けができる。この違いを決めているのは .tf の中身ではなく、workspace の設定。
まとめ
- HCP Terraform は、Terraform の
planとapplyを HashiCorp のクラウドで実行し、state と認証情報もそこに置くサービス。旧 Terraform Cloud - 機能は、run の実行、state の保管、変数の管理、Dynamic provider credentials、VCS 連携、
applyの承認、private registry、ポリシーの 8 つ - organization、project、workspace の 3 層でできていて、workspace が state・変数・run の記録を持つ
- run のたびに使い捨ての仮想マシンが用意され、その中の
terraformが state を読み書きし、AWS に指示を送る - run は既定では
planのあとで止まり、人が承認するとapplyに進む。workspace の auto-apply を有効にすると止まらない
参考 URL
- [official] What is HCP Terraform? | Terraform | HashiCorp Developer
- [official] HCP Terraform subscription plans | Terraform | HashiCorp Developer
- [official] Organizations overview | Terraform | HashiCorp Developer
- [official] Projects - HCP Terraform | Terraform | HashiCorp Developer
- [official] HCP Terraform workspaces | Terraform | HashiCorp Developer
- [official] Remote operations in HCP Terraform | Terraform | HashiCorp Developer
- [official] HCP Terraform's run environment | Terraform | HashiCorp Developer
- [official] Run states and stages in HCP Terraform | Terraform | HashiCorp Developer
- [official] UI and VCS-driven run workflow in HCP Terraform | Terraform | HashiCorp Developer
- [official] Manage workspace state in HCP Terraform | Terraform | HashiCorp Developer
- [official] Variables in HCP Terraform | Terraform | HashiCorp Developer
- [official] Dynamic provider credentials in HCP Terraform | Terraform | HashiCorp Developer
- [official] Connect to VCS providers | Terraform | HashiCorp Developer

