HCP TerraformのNo-code provisioningのリソースライフサイクルをまとめてみる

HCP TerraformのNo-code provisioningのリソースライフサイクルをまとめてみる

Clock Icon2025.01.28

No-code provisioningとは

ざっくり説明すると、事前に用意したmoduleに対してHCP TerraformのGUI上から値を渡してリソースを作成できる機能です。

No-code provisioningを利用することで、Terraformに慣れていないユーザーも事前定義された構成でインフラリソースを作成できます。

https://developer.hashicorp.com/terraform/cloud-docs/no-code-provisioning/module-design

https://dev.classmethod.jp/articles/tfc-no-code-provisioning-ga/

No-code Moduleとは

HCP Terraformでは、Moduleを組織内で公開するPrivate Registryという機能があります。

Private RegistryにModuleを登録する際に、No-code provisioningを有効化するかどうかを選択できます。

No-code provisioningが有効化されたModuleはNo-code Moduleと呼ばれます。

登録・更新・削除の方法は、通常のModule(No-code provisioning無効)と同様です。

No-code Moduleに適しているModule

特定のユースケース向けに作成されたModuleに適しています。

HashiCorp社のドキュメントでは、3層Webアプリケーションに必要な全リソースや、リソースやリージョン制約があるDBインスタンス等が例に上がっていました。

  • Deploying all resources needed for a three-tier web application
  • Deploying a database with constraints on resource allocation and deployment region

Design no-code ready modules | HashiCorp Developerから引用。

個人的には、ユーザー側が設定する変数(variables)の数が少ないModuleが向いていそうです。

変数が多いとTerraformコードを読み解いて、どんなロジックになっているかを確認する必要があります。対象ユーザーはTerraformに慣れていないため、ハードルが高いです。

逆に向いていないパターンとしては、汎用性の高いModuleを挙げられそうです。

汎用性を高めるためには、どうしても変数やロジックの数が多くなってくるためです。

No-code provisioningで作成したリソースのライフサイクル

No-code provisioningを実行すると、Workspaceが作成されます。

このWorkspace上で、Terraformの実行やStatefileの管理が行われます。

これを念頭において、作成されたリソースのライフサイクルを見ていきます。

リソース作成

  1. No-code Moduleを選択し、No-code provisioningを実行
  2. Workspaceが作成される
  3. Workspace上で、Terraformが実行されリソースが作成される

「1.」でユーザーはVariablesやWorkspace作成先のProjectを設定して、No-code provisioningを実行します。

「1.」で設定したVariablesは、自動でWorkspaceにWorkspace Variablesとして登録されます。

以下は、VCSにGitHubを使ってAmazon RDSをNo-code provisioningで作る際の流れです。

No Code Provisioningフロー-2.png

リソース更新

No-code provisioningでは、通常のModule利用と違いModule呼び出しのコードが存在しません。

「コードがないならリソース更新はどうするの?」と疑問に思うかもしれません。

以下2つの方法で、リソース更新が可能です。

  • Module更新
  • Variables更新

Module更新

Private Registryに登録したModuleが更新されると、Workspace側で更新が可能になります。

「View Details」の部分を選択し、変更内容を確認すると、WorkspaceでPlan/Applyが行われます。

Overview___rds-nocode___classmethod-sandbox___HCP_Terraform.png

Cursor_と_Overview___rds-nocode___classmethod-sandbox___HCP_Terraform-2.png

アップデートが可能なタイミングについて、もう少し補足します。

Moduleの新バージョンを公開後に、「No-code provisioning」の設定画面で、エンドユーザーが利用できるModuleを変更する必要があります。

変更しないと既存や新規Workspaceに反映できないため、ご注意ください。

Registry___classmethod-sandbox___HCP_Terraform.png

Variables更新

No-code provisioning時に、Variablesにセットした値はWorkspace Variablesとして設定されます。

このVariablesはWorkspace作成後に更新可能です。

更新後に、WorkspaceからTerraform実行を手動でトリガーすることでリソースが更新されます。

Variables___rds-nocode-blog___classmethod-sandbox___HCP_Terraform-1.png

リソース削除

こちらは、通常のWorkspaceと同様です。

Destroy Runでリソースを削除できます。

Tips: No-code provisioningで作成されたWorkspaceの設定を確認してみる

特徴的なのはOverviewの部分かと思います。

「Workspace provisioned via no-code workflow」の表示があり、No-code provisioningで作成されたことがわかります。

利用したModuleについても、表示されています。

Overview___rds-nocode___classmethod-sandbox___HCP_Terraform.png

ちなみに通常のWorkspaceは以下のような表示です。

Overview___hashicat-aws___classmethod-sandbox___HCP_Terraform.png

ほとんどの設定はGUIからWorkspaceを作ったときのデフォルト設定と同様です。

「Auto-apply API, CLI, & VCS runs」が有効になっている点が特徴です。

これは、Apply前の手動承認をスキップする設定です。

デフォルトはAuto Applyが有効ですが、Provisioning時にManual Applyを選ぶこともできますし、Workspace作成後に変更することも可能です。

おわりに

No-code provisioningは名前からリソース作成に注目されることが多いと思います。

今回はリソース作成後の、更新方法についても調べてみました。

セルフサービスでインフラ構築できる一方、コードが無い分通常のリソースとは異なる運用が必要になります。

No-code provisioningの仕様も考慮して、Moduleを設計していきたいですね。

以上、AWS事業本部の佐藤(@chari7311)でした。)

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.