もりはやメモφ(・ω・ )

ITとか読書感想文とか

Terraform Cloudに入門する - ドキュメント編

これはTerraform advent calendarの12/5の記事です。日付はすでに12/10ですが空いていたので飛び入りしました :)


私にとってOSS版のTerraformは数年の経験があり、システム運用の相棒として不可欠なものになっています。 最近はちょっと"Terraform Cloud"が気になり始めたのでアドベントカレンダードリブンで入門し始めたいと思います。

Trialがあるのは承知の上で、いきなり触らずにまずは今回は公式ドキュメントを読みつつ感想をコメントします。

cloud.hashicorp.com

英語の勉強中の身であるため極力翻訳ツールを使わずに読んでいくため、本記事内の誤りはすべて私の責任です。

ページのトップ

image.png (48.9 kB)

公式ページを開くと一際大きな文字で以下の文章が掲載されています。

Automate infrastructure provisioning at any scale.

「あらゆる規模感で自動的にインフラリソースを構築できるぜ」と意訳しますが、これだけだとOSSのTerraform+backendとしてS3の構成でも十分可能と感じました。

続いては通常のフォントで以下の文言が続きます。

Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service.

前の文章とほぼ同じですが、異なるものとして”compliance”の用語が追加されています。それなりに広い意味を持つコンプライアンスですが、この場合は企業の法令遵守的な意味合いがあると読みました。"Terraform Cloud"はOSS版にないコンプライアンス機能がありそうで期待できます。

そのすぐ下に2つのボタンがあり、Sign upにいざなうカラーリングされたボタンと、ビジネス用のボタンが用意されています。前者はサインアップの画面へ、後者はビジネス用のページへのリンクとなっていて、思わずそちらをみたくなりますが、下へ読み進めます。

What is Terraform Cloud?

参考画面のスクリーンショットの下からは、いよいよ詳細に入っていくかと思いきや、改めてTerraform Cloudとは何ぞや?の説明が入ります。

Terraform Cloud is HashiCorp’s managed service offering. It eliminates the need for unnecessary tooling and documentation for practitioners, teams, and organizations to use Terraform in production.

"eliminates the need for unncecessary tooling and documentation" と "in production" に強い思いを感じます。本番でTerraformを利用するとCI/CDやドキュメント整備などさまざまな運用のための取り組みが必要ですが、それらを"eliminates"する便利機能がありそうです。

Provision infrastructure in a remote environment that is optimized for the Terraform workflow.

昨今は当然となったリモート環境に最適化された"Terraform workflow"を運用できそうです。

次によくある Get started へのリンクがあり、こちらも気になりますが今はスルーします。

Run infrastructure as code remotely

Store state and execute Terraform runs in an SOC2 compliant and reliable environment for free.

ステートを管理してくれて、SOC2準拠の安心環境で自由にTerraformを走らせることができるようです。 SOC2とは”System and Organization Controls 2”の略で詳細を語るほどの知識を持ちませんが、安全なシステムであるかを第三者によってチェックされる一連のフレームワークで、メジャーなパブリッククラウドも準拠している権威あるものですので、Terraform Cloudも安心だぜ!と解釈しました。

socreports.com

Create self-service infrastructure with a private registry

Standardize infrastructure across your provisioning pipelines using your own private registry.

"private registry"が何をさすのかこの時点ではわかりませんが、セルフサービスなインフラ構築ができそうです。いい感じの画面が提供されるのでしょうか。

Achieve multi-cloud compliance and management

Set up permissions and governance features across any resource managed by Terraform. Add capabilities for policy enforcement.

Terraformのコードに対してポリシーを用いてルールを強制できそうです。マルチクラウドがキーワードとしてありますが、クラウドプロバイダーごとに結構書き方が異なる認識なので、そう簡単にmulti-cloud complianceができるのかはちょっと疑問です。結局クラウド別にポリシーを書くのであれば、OSSでも同じことはできそうですね。

How it works

Define your infrastructure

Leverage HCL to define new infrastructure configurations, or manage existing configurations that you’ve already written.

HCLなら新規でも既存のものでも利用できそうです。これはまぁ当然ですね。

Standardize deployments in less time

Author and share custom providers and modules to standardize infrastructure patterns within your organization using a private registry.

ここで”private registry”が何かがわかりました。カスタムプロバイダやモジュールをプライベートに保管できるレジストリのようです。私の場合プロバイダを書くことはないため、チームで共通利用したい独自のモジュールの置き場として使うと良さそうです。公式以外のモジュールの利用はそれなりに運用の複雑さを生みかねないとも思っていて利用は慎重さが求められますね。

private registryへのリンクがありますが、ここでもスルーします。

Map your environments

Connect your configurations stored locally or in version control to workspaces. A workspace provides everything you need to securely manage a collection of infrastructure for remote provisioning, including remote state storage, permissions, integrations, policies, and more.

ちょっと難しい文章です。GitHubのようなVCSをWorkspaceに接続すればTerraformを動かすいい感じのセキュアなあれこれ(remote state storage, brabrabra)が用意されていると読みました。

GitHubリポジトリの中にはディレクトリがあり、それぞれのディレクトリにTerraformのコードが置かれるので、リポジトリとWorkspaceを接続するのはちょっと違和感があります。リポジトリのディレクトリをWorkspaceに接続する気がしますが先へ進みます。

Gain productivity by defining a repeatable process

Set up your ideal remote workspaces so that other teams or systems can safely provision infrastructure in automation.

"ideal" = "理想的な"とすると、いい感じのリモートワークスペースを他メンバとシェアしてインフラを自動化しようぜ、と読みました。上の方でも出てきたセルフサービスにもかかってそうな印象です。繰り返しの処理をプロセス=ワークフロー?として定義できるのでしょうか。

Plan and provision with confidence

Create checks in order for a run to pass. Add functionality into Terraform plans with run tasks, policy as code, or cost estimation.

これはCIとかPolicyの話ですね。通常のfmtだけじゃなくて、ポリシーでより詳細にコードをチェックできるようです。"or cost estimation"とあるように、planの段階でコスト予想もでしてくれそうですね。これは嬉しい。

Scale with your team

"How it works"の章が終わり、次の言葉として"Scale with your team"が出てきました。インフラのスケールで始まり、次にチームのスケールに話がいくところは物語性を感じて好きです。

Provision infrastructure securely and reliably in the cloud with free remote state storage. As you scale, add workspaces to break up monolithic infrastructure or manage more projects.

どうも"remote state"とWorkspaceの数については無料みたいですね。別のところで費用がかかるのでしょう。モノリスなインフラを分割するなり他のプロジェクトも追加するなりしてね、と読みました。

黒背景で囲まれたテーマごとの機能紹介

ここからは、黒背景とかっこいいイラストでひとまとめになった複数の機能の紹介が続きます。 Terraformの黒と紫のテーマカラーはかっこいいですね。

Build infrastructure remotely with your team

Collaborate in a remote and SOC2 compliant environment.

これは上でも記載があった通り、リモートでSOC2対応しており安心安全ですよとあります。

Remote state storage

Store and dynamically update your Terraform state file securely with encryption at rest.

ステートファイルを暗号化して安全に保管してくれるそうです。"dynamically update"はapply以外のタイミングもあるのかちょっと疑問ですね。

Flexible workflows

Run Terraform from the CLI, a UI, version control, or the API.

これは嬉しそうな機能で、OSSだとCLIしかありませんが、UIおよびAPIの提供もあるようです。version controlもWebhookからのAPI経由で実行できそうですが、インテグレーションでPull型の仕組みがあるのかもしれませんね。

Version control (VCS) integration

Manually approve changes or automate a run as soon as a pull request is merged into a main branch.

1つ前でも出たVCSとの連携が強調されています。ASAPとはどのくらいのスピードなんでしょうか。「通常1分以内!」のような定量的な記載があると嬉しいですが、タイミングや環境に依存するので難しそうです。

Collaborate on infrastructure changes

Review and comment on plans prior to executing any change to infrastructure.

これは良いですね。plan結果に対してレビューとコメントをUI上でできそうです。コードレビューはGitHubで行い、plan結果はTerraform Cloudでやる形でしょうか。GitHub Actionsでplanを行うと全部GitHubで完結できるので、場合によってはレビューの証跡が分割されて微妙と感じる可能性もありそうです。

Standardize best practices across your organization.

Help your team remain secure and compliant every time they make a change to infrastructure.

続いてはポリシーの矯正など標準化の機能紹介みたいです。OSS版ではサードパーティのツールを使わないと実現できない部分ですね。

Private registry

Create sets of modules and providers for your infrastructure that promote best practices across your teams.

こちらは繰り返し紹介されているので割愛しますが。推したい機能であることは伝わってきます。

Policy as code

Create security and compliance guardrails for any Terraform run with Sentinel or third-party tools.

"Sentinel"と具体的な名前が出ました。HashiCorp製品にまたがってポリシー適用ができるフレームワークと認識しています。

サードパーティのツールも使えるようです。柔軟性がありますね。

www.hashicorp.com

Cost estimation

Calculate costs before applying infrastructure changes, and control them using policy as code.

planの段階で変更によって発生するコストの予想を計算してくれる素晴らしそうな機能です。さらにポリシーで制御できるとありますので「$100以上増額になる変更はapply禁止!」とかできそうです。そうならすごい安心感ありますね。

Custom workspace permissions

Easily onboard and decommission new users with SSO. Set up different access levels for admins, operators, and developers consuming Terraform resources.

複数でシステム運用をするには欠かせない認証認可の話ですね。SSOが使えるのは当然とも思いますが嬉しいです。どこまで詳細に認可できるのかはここからは読み取れませんが、Workspaceごとに異なる認可をかけられれば十分かもしれません。

Drift detection

Terraform provides built-in continuous checks against infrastructure state to detect changes and provide alerts. Operators can resolve drift issues directly from Terraform.

コードとリソース実体とのドリフト検知、これも嬉しい機能です。CIをスケジューリングして実行することで同じことはできますが、大量のディレクトリ(ワークスペース)に対してCIを設定していくのは大変です。

このドリフト検知のみ Learn more とリンクが貼られていますが、ここでもスルーします。

Audit logs

Export audit logs to external systems via an API, or connect directly into Splunk for better visualization.

ロギングも当然ですが嬉しい機能です。Splunkには直接とありますが、APIで抜けるならなんとでもなりそうです。

Innovate by integrating Terraform into your existing CI/CD pipeline.

Automate Terraform Cloud functionality into the workflows your team uses everyday.

最後のセクションはCI/CDとかワークフローの機能群です。

Helpful integrations

Integrate hundreds of third party tools into your Terraform workflow.

数100ものサードパーティへのインテグレーションがあるそうですが、いったいどういったものなのでしょうか。代表例がいくつか欲しいところですね。

CI/CD integration

Integrate Terraform runs into your existing toolchain for improved automation.

既存のCI/CDへ、Terraform Cloudの実行を埋め込めるようです。GitHub Actionsの処理の途中でTerraform Cloudの処理をキックするとかでしょうか。

API

Build Terraform Cloud into existing and/or automated workflows.

APIがあるのは当たり前ですが良いですね。できることが広がります。

Notifications

Send notifications about runs via email, Slack, or via webhooks.

これも嬉しい機能です。メールとSlackとWebhookがあるならどこへでも通知できますね。 とくにSlackへの通知には期待したいです。エラーに対してリトライするなどリアクションもできると良いのですが。

Private datacenter connectivity

Execute Terraform runs from behind your own firewall, or connect to other private resources.

これはなんとなくSelf-Hosted Runnerが必要そうな機能ですね。ステート管理とUIとポリシーその他をTerraform Cloudに預けつつ、実行だけはRunnerが動く環境で動かせそうです。Terraform Cloudにクレデンシャルを渡したくないケースでも使えそうですね。

Concurrent runs

Increase your team’s velocity by adding concurrent runs to your plan.

planやapplyに対する並列数でしょうか。ここは課金ポイントな気がします。

Get started with Terraform Cloud

Get started with Terraform Cloud and start collaborating

ここまでで、Terraform Cloudの概要のページはほぼ終わりです。この後は以下のそれぞれへのリンクが並びます。

  • Sign up for free
  • Explore Plans
  • Documentation

最後に"Terraform Cloud Business"への案内がありますので、こちらも後で読んで通常版との違いを見ておくと良さそうです。この"larger"が示す規模感はわかりませんけれど。

For larger organizations, learn more about the Terraform Cloud Business tier

まとめ

以上でざっとTerraform Cloudの概要ページを読みました。OSS版にはない多くの嬉しい機能があるとわかりましたが、使ってみないと詳細が見えない部分も多いです。時間を見つけて触って見たいと考えています。

参考リンク

以下はスルーしましたが、あとで読んだ方が良さそうなリンク集です。