Ritolabo
  1. Home
  2. Terraform
  3. HCP Terraform
  4. HCP Terraform(旧 Terraform Cloud)の機能と仕組み

HCP Terraform(旧 Terraform Cloud)の機能と仕組み

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

Terraform をローカルの開発環境だけで使うと、state と AWS の認証情報は自分の PC に残る。同じ .tf を複数の人で使い、本番の環境を管理し始めると、state を置く場所を 1 つに決め、apply の前に人が確認する機会を作る必要が出てくる。これを Terraform 専用に用意したサービスに HCP Terraform がある。

HCP Terraform を触る前に、何をするサービスで、何ができて、どこで何が動くのかを押さえておく。

contents

  1. HCP Terraform とは
  2. HCP Terraform の機能
  3. HCP Terraform の仕組み
    1. apply の前で止まる run
  4. 参考 URL

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 の設定の内容を統制する詳細なポリシー制御などを備える)

https://developer.hashicorp.com/terraform/cloud-docs

つまり、自分の 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

Author

rito

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級