💻

[CDKForTerraform]Makefile化

2023/06/03に公開

モチベーション

現時点(2023/06/03)ではcdktfでのimportなど一部サポートされていなかったりするので、
実行切り替えをスムーズにするためMakefile化しました。
GitHubで管理するまでもないので記事。

前提条件

  • aws-vaultインストール済
  • infracostインストール済
  • cdktf.jsonに以下を追記
  "envconfig": {
    "dev": {
    },
    "staging": {
    },
    "production": {
    }

  • main.tsで以下のように指定
const environments = Object.keys(config.envconfig);

for (const env of environments) {
  new MyStack(app, env);
}
  • tfstateファイルの管理でS3を利用している場合
    ENV_ID毎にtfstateファイルが生成されるようにする。
      key: `cdktf/sample${process.env.ENV_ID}.tfstate`,

Makefile内容

  • 2023/06/15 infracostを組み込んでapply時にファイル出力 plan時に差分確認できるようにしました。
  • 2023/06/17 zenn記事に直接記載していたのをGitHubに移動

実行方法

  • cdktfの場合 (DryRun)
make _ENV=dev diff
  • terraformで実行したい場合(DryRun)
make _ENV=dev _TF=true "plan"

まとめ

他メリットとしてtfstateファイルも環境毎に切り替えられるので
利便性が向上しました。
Workspacesライクに使えるのも○

GitHubで編集を提案

Discussion