そのIaC、本当に自動化できてる? 〜terraform applyはもう叩かない〜

Terraform CDK GitHub Action の紹介記事です。IaC管理の手間を削減できる上、コピペで利用可能なコードが公開されているので紹介していきます。
terraform-cdk-action
hashicorpUpdated Mar 12, 2024

CDK for Terraform(cdktf)の基礎知識

通常のTerraformでは、HCL(Hashicorp Configuration Language) という言語を用いてインフラを記述します。
それに対してcdktfでは、TypescriptやGoといった言語でインフラを記述することができ、使い慣れた言語でのIaC管理が可能になります。
さらに、利用する可能性のあるリソースを事前に生成することができます。
そのため、importして利用する際に型によるサポートを受けることができます。
コード上で構築したインフラを環境に反映させるには、deployコマンドを利用します。

2回目以降のdeployが面倒

せっかくインフラをコードで管理しているのだから、deployも自動化してしまいたいものです。
Terraform CDK GitHub Actionを利用することで、プルリクエストの作成時にplanして、マージ時にdeploy(apply)できるようになります。
以下に、手順を説明します。

準備

インフラの環境は、すでにcdktfで管理されているものとします。
cdktfに馴染みがなく、実際に手を動かしたい方は、公式のチュートリアルを参考にしてください。

Terraform CloudからAPI Tokenを取得する

(トップページ) > User Settings > Tokensから、API Tokenを取得することができます。
CLIでを実行するときにもこのページでAPI Tokenを取得するので、すでに生成されたTokenがあるかもしれません。
このTokenを、としてリポジトリの環境変数に登録します。

plan・deploy用のyamlファイルを作成する

Terraform CDK Action のREADMEに、Plan, Apply, Synthesize用のサンプルyamlファイルが用意されています。
例えばPlanのyamlファイルはこのようになっており、を書き換えることでそのまま利用できます。
terraform-cdk-action
hashicorpUpdated Mar 12, 2024

使ってみる

あとはPRを作成し、マージするだけです。
自動的にplanが実行され、マージするとその変更が実環境に反映されました。