Terraform Cloud No-Code Provisioningやってみた
「Terraform CloudでNo-Codeでリソースをプロビジョニング!?」
2022年10月にTerraform CloudにNo-Code Provisioningという機能が発表されました。
Terraform Gains Visibility, Self-Service, and Compliance Upgrades
今回はこの機能を試してみます。
Terraform CloudのNo-code provisioningとは
一言でいうと、Terraform CloudのGUI上からCloudformationのパラメーターのように値を渡してリソースを作成できる機能です。
Terraformのコードを書けない人でも、リソースをプロビジョニングできるようになるので、セルフサービス化が捗りますね。
現在このプランはベータ版で利用するには、Terraform Cloudビジネスプランが必要です。(2022年12月時点)
2023/4/26 GAされました。機能もアップデートされているため、合わせて以下の記事をご確認ください。
2023/5/17 Businessプラン -> Plusプランに変更になりました。この機能は、現在Plusプランで使用できます。
やってみた
今回は以下のチュートリアルをやってみます。 チュートリアルの内容としては、Terraform CloudのNo-Code Provisioning機能を使ってAmazon RDSを作成するといった内容です。
Create and Use No-Code Modules | Terraform | HashiCorp Developer
サンプルコードを眺めてみる
サンプルコードは、RDSとVPCを作成するModuleとなっています。
hashicorp/learn-terraform-no-code-provisioning
No-Code Provisioning用のModuleもディレクトリ構成は標準的なModuleと同様です。
% ls -1 README.md main.tf outputs.tf variables.tf
variables.tf
で宣言している変数の値をTerraform Cloud上から渡すことができます。
variable "db_name" { description = "Unique name to assign to RDS instance" } variable "db_username" { description = "RDS root username" } variable "db_password" { description = "RDS root user password" sensitive = true }
特徴的な部分は、Module内でAWS Providerの宣言をおこなっていることです。
provider "aws" { region = "us-east-2" } data "aws_availability_zones" "available" {} # 省略
通常のModuleは、他のTerraformワークスペースから呼び出して使用するためにAWS Providerでリージョンを指定する記述は呼び出す側に書きます。
しかし、No-Code Provisioning Moduleの場合、直接Terraform Cloud上からリソースを作成するためAWS Providerでリージョンを指定する必要があります。 (このサンプルコード上の上記箇所ががない場合、リソースをどこのリージョンにデプロイすれば良いかTerraform側でわからないためエラーになります。)
No-Code Moduleの登録
Terraform Cloudに通常のModule登録するときと、ほとんど変わらない操作で可能です。
Githubのリポジトリを選択して、モジュールを作成します。 この際に「Add Module to no-code provision allowlist.」を有効にするだけです。
No-Code Moduleを使ってリソースをプロビジョニング
作成したModuleの、Provison workspace
を選択します。
次の画面に進むとModule内のvariables.tf
で定義している変数をTerraform Cloud上から入力することができます。
No-Code Moduleを使って新規に作成されるワークスペースの情報を入力します。 デフォルトでは、globalに設定されているAWS認証情報を設定してプロビジョニングされます。
globalに設定しているAWS認証情報は存在しない環境でこの手順を実施しているため、初回のデプロイは失敗しています。
通常通りワークスペースに対して、AWS認証情報を設定します。
Create a Credentials Variable Set | Terraform | HashiCorp Developer
AWS認証情報設定後はApplyが成功しました。リソースが作成されることも確認できました。
おわりに
Terraform CloudのNo-Code Provisioningを試してみました。
セルフサービスが捗る便利な機能だと思うので、GAが楽しみですね。
以上、AWS事業本部の佐藤(@chari7311)でした。