[アップデート]Service Catalogの製品タイプにTerraform Cloudが追加されました
アップデート概要
Service Catalogの製品タイプにTerraform Cloudが追加されました。
- AWS and HashiCorp announce Service Catalog support for Terraform Cloud
- AWS Service Catalog announces support for HashiCorp Terraform Cloud
ちなみに、Terraform コミニティ版は今年の4月にService Catalogに対応しています。
何が嬉しい?
- Terraform Cloudの機能でガバナンスを効かせつつ、Service Catalogでセルフサービスを提供可能
- Terraform Cloudの権限を持たない利用者もリソースのプロビジョニングが可能(Service Catalogの権限は必要)
Terraform Cloudには、ポリシー機能(OPA・Sentinel)や監査ログなどガバナンスを効かせるために便利な機能があります。
Service Catalogと組み合わせることでセルフサービスでプロビジョニング可能にしつつ、ポリシー機能でインスタンスサイズの制限等を行うことができます。
Terraform Cloudのユーザーを発行したくない場合も、嬉しいかもしれません。
利用者(※)には、AWSアカウントでService Catalogで製品を作る権限を付与するだけで良いです。Terraform Cloudのユーザーを発行する必要がありません。
※ テンプレートの登録や修正は行わずに、プロビジョニングだけするユーザー
Service CatalogとTerraform Cloud No-Code Provisioning
「Service Catalog? Terraform CloudにはNo-Code Provisioningという似たような機能あったよね」と思った方もいるかもしれません。
その通り。No-Code Provisioningでは似たようなことができます。
以下のようなパターンでは、Terraform Cloud + Service Catalogがおすすめです。
- Terraform CloudのプランがFreeかStandard
- 普段からService Catalog使っている
No-code provisioningは現在FreeとStandardプランでは利用できません。
上記のプランのままセルフサービスをやりたい場合は、Service Catalogが良いと思います。
HashiCorp Terraform: Enterprise Pricing, Packages & Features
すでに、Service Catalogを使って運用を行っている方にも、おすすめです。(特に、Service Catalogで製品タイプCloudFormationも使っている場合)
CloudFormation・Terraformどちらでも利用者は同じインターフェースでプロビジョニング可能なため、利用者の認知負荷が低そうです。
やってみた
Terraform Cloud用 Terraformエンジンの設定
Service CatalogでTerraform製品を利用するには、Terraformエンジンを事前に設定する必要があります。
Terraformエンジンの設定方法は、以下のリポジトリにあります。
AWS Service Catalog Engine for Terraform Cloud
$ git clone git@github.com:hashicorp/aws-service-catalog-engine-for-tfc.git $ cd aws-service-catalog-engine-for-tfc
tfvarsを環境に合わせて設定します。
$ cp terraform.tfvars.example terraform.tfvars $ vi terraform.tfvars tfc_organization = "<Terraform CloudのOrganization名>" tfc_team = "<Service catalogに使われるTerraform Cloudのチーム名>" token_rotation_interval_in_days = 30
AWS認証情報とTerraform Cloudの認証情報をセットして、terraform
コマンドを実行し、Terraformエンジンを準備します。
$ terraform init $ terraform plan $ terraform apply
サンプル ポートフォリオの確認
Terraformエンジンの設定時に、サンプル用のポートフォリオと製品がService Catalogに登録されます。
サンプル 製品の起動
初期状態ではアクセス権がないため、製品の起動ができません。
アクセス権を付与して、製品の起動まで行います。
管理者
-> ポートフォリオ
-> TFC Example Portfolio
-> アクセス
-> アクセス件の付与
を選択します。
任意のグループ/ロール/ユーザーを指定して、アクセス権を付与します。
プロビジョニング
-> 製品
-> service-catalog-example-product-XXXX
を選択します。
起動する製品の内容はこちら から確認できます。(S3バケットが作成されます。)
プロビジョニング
->プロビジョニングされた製品
->service-catalog-example-product-XXXX
-> リソース
からS3バケットの作成を確認できます。
Terraform Cloud Workspaceの確認
Terraform Cloudも確認してみます。
Workspaceが作成されていました。
また、Terraform Cloud上でRunが実行されてリソースを作成したことを確認できます。
製品の登録(TERRAFORM_OPEN_SOURCEと同様)
製品の登録方法はService Catalogの製品タイプTERRAFORM_OPEN_SOURCE
と同様です。
tfファイルをtar.gz形式に圧縮して、S3にアップロードする必要があります。
おわりに
Service CatalogのTerraform Cloudサポートでした。
セルフサービスの際の選択肢に、Service Catalogが増えたのが嬉しいですね。
そのうち、Terraform CloudのNo Code Provisioningとしっかり比較してみたいです。
個人的にはテンプレート登録時にtfファイルをtar.gzにしてS3に上げる工程が少し面倒に感じるため、今後のアップデートに期待です。
以上、AWS事業本部の佐藤(@chari7311)でした。