この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
「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上から渡すことができます。
variables.tf
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の宣言をおこなっていることです。
main.tf
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)でした。