[TOP](https://www.notion.so/shinofara-1a690b35713b45bf8ea599bfa73fb7df?pvs=21) >  [[Tags/クリップ|クリップ]] - ==index== 📎 クリップした記事 🏷️ タグ 🗞 登場した用語まとめ > [!important] > また見たい思ったインターネット上の記事を [[Tags/クリップ|クリップ]] しています。 ### 📎 クリップした記事 > [!info] Terraformでmoduleを使わずに複数環境を構築する > Terraformを使って複数の環境を扱う代表的な方法として、環境ごとにディレクトリを分けつつ、そこから共通のmoduleを呼び出すというものがあります。 > [https://zenn.dev/smartround_dev/articles/5e20fa7223f0fd](https://zenn.dev/smartround_dev/articles/5e20fa7223f0fd) [https://speakerdeck.com/shonansurvivors/building-multiple-environments-without-using-modules-in-terraform](https://speakerdeck.com/shonansurvivors/building-multiple-environments-without-using-modules-in-terraform) - moduleは複雑になりがちだし、気づけばそこからも参照されてる?という共通化が生まれるリスクがある。 - 複雑化がますことで、Aだけ新しくしたいけど、moduleを変更するとBもCも変更が生まれる問題 - ブランチ戦略などでmainじゃなけばBにはapplyしなければいいけど、そうなると特定のブランチが大きく育つ and 他の変更を追加できない。 - moduleにrequire要素を追加すると、もしほかでも参照していたら、関係ないworkspaceまで変更がうまれる。(そもそもそれをするなだけど) - module間の依存。例えばネットワークとRunなどがあり、思想を作り上げて浸透させるのは難しい。 - 会社によるがサービスが増えれば増えるほど、そういった依存が増えていく。増えると最後あとできれいにすることにとても神経を使う など確かにmoduleはとても複雑になる。導入時点のメンバーが使えていればいいけど、全員がTFに親しんでない環境では、そういった複雑さは触ったり、理解したりする心理的ハードルはあがっちゃうよねぇ。 tfvarsを使うことで得られるメリットは、moduleという考え方や依存に悩まなくていいことかな。 AでもBでも同じ物書く(例えばIAM作ってRoleを割り当てるmoduleなど)ことあると、共通化したくなることもあるかもしれないけど、そういった共通化を防ぐことにはとてもメリットあるよね。 読む・書くに関しては言いなーと思う一方で、運用し続ける(数年)視点で考えると、後でつらくなる課題もありそう。まぁtfmigrate使うとか、state rm and importで頑張るでも全然よさそうだけどね。 moduleでもtfvarsでも解決できないことは、`count=0` とか `count=1` とかでDevでは作る、Prodでは作らないとかをコントロールすることになる事かな。 ↑を解決するには、もう少し意味ある単位でmodule化してversion管理して、prodのroot moduleではrun v1、devのroot moduleではrun v2を参照するとか、ヴァージョン管理の複雑さは生まれるけど、そういう方法かな。どこの複雑さやどんなリスクを許容して、どんなメリットを受けるかだと思うので、組織にあった形になっているとしたらとても良いなーという雑感想 ### 🏷️ タグ #### タグ |Name|関連ページ数| |---|---| |[[Tags/クリップ\|クリップ]]|315| ### 🗞 登場した用語まとめ #### 用語 |Name| |---| |[[Terminology/Terraform\|Terraform]]| |[[Terminology/Infrastructure as Code\|Infrastructure as Code]]| [TOP](https://www.notion.so/shinofara-1a690b35713b45bf8ea599bfa73fb7df?pvs=21) >  [[Tags/クリップ|クリップ]]