[アップデート]Terraform CloudのNo-Code ProvisioningがGAされました

2023.04.28

「2022年10月にベータ版が発表された、Terraform CloudのNo-Code ProvisioningがGAされました!」

ベータ版から何が変わったのかと、実際に触ってみた感想を書きます。

Terraform Cloud no-code provisioning is now GA with new features

Terraform CloudのNo-code provisioningとは

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

No-Code Provisioningの機能を利用することで、Terraformの書き方がわからないメンバーでも事前に用意したmoduleを使ってセルフサービスでリソースを作成することができます。

GAに伴うアップデート

No-Code Provisioning GAと同時に、以下のアップデートがありました。

  • No-Code Provisioning時に変数入力のドロップダウンリストが利用可能に
  • プロジェクトレベルの権限を持っていれば、No-Code 対応モジュールをProvisioningできるように
  • Variable setsの適用範囲にprojectを選択できるように

No-Code Provisioningのチュートリアルを例に、新機能を紹介します。

Create and Use No-Code Modules | Terraform | HashiCorp Developer

No-Code Provisioningで変数入力のドロップダウンリストが利用可能に

事前に定義した値をドロップダウンリストから選べるようになりました。

サンプルコードはRDSを作成するmoduleです。

db_instance_classを変数化して、No-Code Provisioning時にドロップダウンリストで選択できるようにしてみます。(db.t3.micro、db.t3.smallのように)

variableに対して、default値を設定するとNo-Code Provisioning時に項目が表示されないためdefault値は設定しません。

コードを修正して、Github上にPushします。

main.tf

resource "aws_db_instance" "education" {
  identifier             = "${var.db_name}-${random_pet.random.id}"
  instance_class         = var.db_instance_class # 修正
  allocated_storage      = 5
  engine                 = "postgres"
  engine_version         = "14.1"

variables.tf

# 追加
variable "db_instance_class" {
  type        = string
  description = "The type of database instance to create"
}

Terraform Cloud側で新しいバージョンを使用するために、Githubでタグを切ります。 (スクショを後から撮った関係で、Githubのタグが1.0.5になってます。)

Terraform Cloud上で、moduleのバージョンを先ほどタグを切ったバージョンに変更します。 Configure Settingsを選択します。

画面のようにドロップダウンで選択する要素を追加します。

プレビューを見ると、追加した要素をドロップダウンで選択できることを確認できました。

プロジェクトレベルの権限を持っていれば、No-Code 対応モジュールをProvisioningできるように

これまではNo-Code対応モジュールをProvisioningするには、組織全体のワークスペースの管理者権限が必要でした。

No-Code対応モジュールの利用者全員に全体のワークスペースの管理者権限を与えるのは、リスクがあります。

今回のアップデートでプロジェクトレベルの権限を持っていれば、No-Code対応モジュールをProvisioningできるようになりました。

そのため、Terraform Cloudの管理者は利用者全員に管理者権限を与える必要がなくなりました。

Projectを用意してあげて、そのProject内の管理者権限(AdminまたはMaintain)を与えることで、利用者はNo-Code Provisioningを使用することができます。

例えば以下の場合、Project名sato-masakiのAdminまたはMaintain権限があればNo-Code Provisioningを使用してリソース作成が可能です。

Variable setsの適用範囲にProjectを選択できるように

Variableを複数のWorkspaceに紐づけたい時に、Variable setsが便利です。

今回のアップデートでVariable setsをProjectに割り当てることができるようになりました。

これまでは、Workspace単体かOrganization全体にしか適用できませんでした。

そのため、以下のようなフローが必要でした。

  1. No-Code Provisioningでリソースを作成
  2. WorkspaceにVariable(AWS認証情報等)が無いため最初のProvisioning失敗
  3. Variable setsをWorkspaceに割り当てる
  4. WorkspaceからRunを実行して、Provisioningし直す

Variable setsがProjectに割り当てることができるようになったため、あらかじめProjectに設定しておけば最初のProvisioningが失敗することを回避できます。

  1. Projectに対して、Variable sets(AWS認証情報)を適用
  2. No-Code Provisioningでリソースを作成・成功

この場合、AWSアカウント単位でProjectを作るのが良さそうですね。

おわりに

Terraform CloudのNo-Code ProvisioningのGAについてでした。

ProjectはNo-Code Provisioningの布石だったのかと思うほど、Projectとの連携でNo-Code Provisioningが使いやすくなりました。(ちなみに発表はNo-Code Provisioning(ベータ)2022/10、Projectが2023/1、No-Code Provisioning(GA) 2023/4)

今回のアップデートで権限の問題も解決できたため、実運用でも使っていきたいと思います。

Terraform Cloud最近アツいアップデートが多くて、今後が楽しみですね。

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

あわせて読みたい記事