🌤️Terragruntでより幸せなTerraform生活を目指す2021/12/19に公開・約10,200字ツイートTerraformTerragrunttechこれは何?TerraformをリファクタリングするにあたってTerragruntを利用できないか検証する機会があったので、簡単なサンプルを作ってゆるくまとめました。出しているOSSであり、Terraformをより便利に扱えるようにするための薄いwrapperです。Terragruntを利用することで以下のような構成のTerraformをいい感じにリファクタリングできます。本来依存関係があり(例:IAMリソースを作成してからELBリソースを作成する必要がある)、素のTerraformでは実行順序を工夫する必要がありますTerragruntが提供する機能を使うことで依存関係を解決した上でplan/applyなどを実行できるようになります使ってみよう習うより慣れろ!というわけで実際のコードを使ってみていきましょう。Terragruntのinstall公式の出している手順に沿ってポチポチするとTerragruntをinstallできます。https://terragrunt.gruntwork.io/docs/getting-started/install/tfenvよろしく、Terragruntにもversion管理ツールとしてtgenvというものもあるので、そちらを使うのもアリかもしれません。Repositoryを使って動作確認をしてみます。https://github.com/yu-croco/terragrunt_sampleあまり良い例(かつ、手軽に用意できるもの)がシュッと思いつかなかったので少し無理やりですが、以下のような構成のリソースを用意しました。いうファイルが配置してありますが、これは後ほど説明します。それぞれ個別でbackend関連の設定を行う必要がありますが、Terragruntを利用することで定義の共通化や実行の簡略化を行ってくれます。いうファイルを用いて設定の共通化を行います。./envs/dev/xxxx/terragrunt.hcl)としています。内で指定した定義からファイルを生成してくれます。いうファイル名で作成されます。)をメンテナンスするだけで完結します(配布はTerragruntがやってくれる)。https://terragrunt.gruntwork.io/docs/reference/config-blocks-and-attributes/#generate子のterragrunt.hclでは以下のように定義しています。使うことで親のterragrunt.hclを取り込むことができます。これにより、backend周りの定義を親に記載するだけで済みます。対して依存しています。