Terraformのベストプラクティスを学ぶのに役立ったドキュメントのまとめ
Terraformの学習が捗った資料のご紹介
土居です。
最近はTerraformを用いてAWS基盤を構築する機会に多く恵まれており、学習する過程で参考になった情報をご紹介したいと思います。
基本は公式ドキュメント
公式ドキュメントはやっぱり偉大です。特にTerraformはよく書き込まれていると思いました。Resourceの作成に必要なパラメータを初め、詳細に説明してくれています。古いResourceや書き方についても、より新しいものへの注記や参照が丁寧に書かれています。
コードの書き方を学ぶ
terraform-best-practices.com
コーディングスタイル、命名などベストプラクティスを学べます。
terraform-aws-modules(VPCのmodule)
Registryでもっとも利用されているmodulesのうちの一つである terraform-aws-modules
シリーズのソースコードです。複数のResourceをまとまりで管理するmodules機能ですが、どのようにまとめるべきかいまいちわかっていなかったので参考にしています。リンクはVPCのものですが、様々な用途のmodulesが用意されているため、作成したいと考えているほとんどのResourceについて何らかの参考情報が得られると思います。例えばRDSやFargateなど、主となるRes目的に関連して必要になるResourceをまとめて把握したい場合に役立ちます。また、Resourceに用意されているほとんどの引数を渡せるように作られていることが多いので、引数の使い方の勉強にもなります。
terraform-aws-atlantis
Fargate上で動作しているAtlantisというサービスの構築例。上記のmodulesやresourceを利用してどのように実装するか、の参考になります。Resourceの量が非常に多いのでなければ、modulesを活用しつつmain.tfに列挙するスタイルが見やすそうですね。
Qiitaのまとめ記事で実践的知見を学ぶ
Terraform職人再入門2020
HCL2で変化した書き方や、新しい機能を詳しく教えてくれます。jsonencode()を用いてJSONにコメントを書く方法のところは個人的に紹介記事も含めて面白かったです。
Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる
上記記事の以前のバージョンなので古い記述もありますが、Terraform全体についてより広範に書かれており読んでおいて損はないと思いました。
まとめ
IaC(Infrastructure as Code)のツールの活用にはインフラのバージョン管理、再利用、実際の構築前の検証といった開発面・運用面のメリットはもちろんのこと、それぞれの設定を記述することでコンソールから作成する場合以上に意味をよく理解できるのが良いと感じました。
MMMではIaC等ツールの活用のみに頼らない、土台となるDevOpsカルチャーの醸成も意識した支援を心がけておりますので、よろしくお願いいたします。
DevOps支援 サービス
DevOpsカルチャー解説セミナー動画