💭

Terraformの中級者への架け橋

2022/06/30に公開

この記事は?

Terraformの初級者からNextへ進むために必要だと思ったもの、読むべきものをまとめる記事
「次どこいきゃええねん」と思った時に読むべきもの。

対象は?

handson系を通しでやったことある人(つまり自分!)

動機

仕事でterraformを使うことが判ったため、勉強を始めました。
まずは触ってみる!ということでUdemyのTerraform講座を修了
よく有ることだけど、授業と現場は違う。ここからさらに現場向けの知識が必要。

記事

Terraform Best Practice
命名規則などは参考になりました。

動画

初めに見ると良い動画です。
特に後半は中規模、大規模のディレクトリ構成、運用方法を語ってくれています。
https://www.youtube.com/watch?v=0IQ4IScqQws

書籍

実践Terraform AWSにおけるシステム設計とベストプラクティス
今のところこれ一択です。一通りの情報が揃ってます。(バージョンが当時のもののため古い)
私は20章以降はresourceの操作説明よりはtfstateファイルやリファクタリング等のterraformの使い方をどの様に進めていくかを検討する上で必要になる知見が有り見どころがありました

Nextへの道のり

terraformの沼に嵌っている際に必要になるであろうもの

管理方法

大体決める要素は以下の3つと考えてます。
環境の種類で分割してもサービスの規模が大きいとtfstateファイルが大きくなる。
Stateの分割指針としては、普段から変化のないもの(network系)と変化のあるものと分けるのが通例と考える。
ここで大事なことはtag戦略とdata resourceによるデータ取得。
Workspaceは便利のようで使い方を誤ると危ないため、運用ではそこまで使われるケースは少ないらしい。

  • 環境(prod/dev...)
  • Stateの分割指標
  • Workspaceの使用有無
個人的な結論
  • Network,RDSなどは別Stateで管理.
  • Workspaceは使用しない
  • 環境毎の情報はtfvarsファイルで環境毎に用意する

Module関連

自前で用意する、公式が公開している。そもそも使わない等、選択肢があります。
この中での注意事項は

  • 公開されているModuleは取説を最後まで読むこと。オプションで色々機能が有る
  • チームで管理する場合は、公式モジュールの利用優先度を決める方が良い
  • Moduleを作成する際にはStandard Module Structureをまず見る。
  • output/inputの内容を理解すること
個人的な結論
  • 生産性と統一性を優先に公式のModuleを率先して使用する
  • 使用前に要件があっているか実際って確認する
  • モジュールを作る場合、粒度を考える。(app_serverみたいな)特化型のモジュールも有り?

Discussion