☃️

0から始めるTerraformの学習方法[AWS/完全版]

2023/06/10に公開
1

はじめに

数ヶ月前に初めてTerraformを書くことになり、慌ててTerraformをキャッチアップしました。
そこで、学習の役に立った記事や書籍を紹介します。
紹介する記事や書籍ではAWSに関するものが多いですが、各リソースの設定値ではなくTerraform自体の書き方について焦点を当てています。そのためGCPでも、Azureでも活かせると思います。

前提条件

AWSに関する体系的な知識は有していること(サービス自体の概要は理解できている)

※補足

AWSそのものの知識に関しては、
AWS界隈で世界で一番有名な(one of the most famous)、
【駆け出しエンジニアの頼れるお兄さん】 の
Youtube

が非常にタメになりました。

どのような課題を解決するために、この記事を書いたか?

terraformをキャッチアップしようと思ったときに、Terraformの書き方事体ではなく、AWSの各種サービスの設定値についてフォーカスしたものが多かった。そのため純粋にTerraformそのものだけにフォーカスした学習方法が分かる記事が欲しかったため。
AWSの各種サービスの学習はそれ単体(インフラ、クラウドの知識を含め)でまとめた時間を取って学習すべきで、Terraformの学習とは分けた方が良いと思っていたので。

この記事の対象者

・AWSの基礎知識を持っている方
・Terraform未経験の方

話さないこと

・AWSそのものの知識
・Terraformそのものの知識
・Terraformにおける、AWSリソースの設定値の学習方法

学習ステップ

ステップ1- Terraformの概要の理解

AWS と Terraformで実現するInfrastructure as Code

https://www.udemy.com/course/iac-with-terraform/

Terraformの概要をざっくりと掴むにはこちらのUdemyが一番適していました。
Terraformがなぜ使われているのか?
なんのために使うのか?
terraformの基本構文についてざっくりと理解しました。
リソースの設定値を説明している章は、TerraformではなくAWSの知識に関する箇所だと思うので飛ばしました。

下記の項目のみを、2倍速で観て、理解しました。



基礎から学ぶ Terraform

https://www.amazon.co.jp/基礎から学ぶ-Terraform-古越勇樹/dp/4863543247/ref=sr_1_2?__mk_ja_JP=カタカナ&crid=2ZL2IULJ2ZBEF&keywords=terraform&qid=1686395878&sprefix=terraform%2Caps%2C247&sr=8-2

二つめがこちらの書籍
TerraformのコマンドやTerraform Cloudの紹介など体系的に書いてあるのでおすすめ。
Terraformを使って、ECSを構築しようと言ったものではないため、Terraformの使い方にフォーカスしてあり非常に読みやすかったです。ページ数もそこまで多くなく、一冊読み切る満足感も得られるのでおすすめ。


ここまでまだ一行もコードを書いていない。

ステップ2- Terraformのベストプラクティスの理解

Terraformの基礎的な書き方をなんとなく理解して次に気になるのが、Terraformのベストプラクティスだと思う。特に私が気になったのはアーキテクチャー設計(ディレクトリ構成)と命名規則でした。

これらについては下記の記事や書籍を流し読みをして、ざっくりと理解しました。

ベストなディレクトリ構成に関して

GoのZennが非常に分かりやすいSakiさんの発表資料
https://speakerdeck.com/harukasakihara/besutona-terraform-deirekutorigou-cheng-wokao-cha-sitemita

AWSの方の発表資料
https://speakerdeck.com/yuukiyo/terraform-aws-best-practices

こんな感じでディレクトリ構成を考えれば良いのか。と非常にためになりました

その他命名規則含むベストプラクティスが凝集した資料や書籍

AWSを学習していると絶対にお世話になるクラスメソッドさんのベストプラクティスまとめ
https://dev.classmethod.jp/articles/terraform-bset-practice-jp/

Googleが作成しているTerraformの活用のガイドライン
https://cloud.google.com/docs/terraform/best-practices-for-terraform?hl=ja

実践Terraform

https://www.amazon.co.jp/実践Terraform-AWSにおけるシステム設計とベストプラクティス-技術の泉シリーズ(NextPublishing)-野村-友規/dp/4844378139/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=3DWE8B62V3UT3&keywords=terraform&qid=1686397648&sprefix=terraform%2Caps%2C233&sr=8-1
Terraformに関して日本語で書かれている一番有名な書籍
ここもterraformの基礎的な書き方やベストプラクティスにのみフォーカスし、AWSリソースの設定値が書かれている箇所は読みませんでした。

https://note.com/ryoma_430/n/n008bb8552f25#ed1b72b0-18d8-42b7-bb6f-efd8aef7284c
Terraformを実務で使用しているめちゃくちゃ優秀なエンジニアの方の記事。
実際にどのようにTerraformが運用してるか等大変分かりやすい。

そこでStandard Module Structureというのものを知る。
https://developer.hashicorp.com/terraform/language/modules/develop/structure


ここまでまだ一行もコードを書いていない。

ステップ3- Terraformの書き方に沿って実際に書いてみる

TISインテックグループ様が作成した下記コンテンツがあまりに良かったです。

びっくりするぐらい良かった!!!

解きながら学ぶ学習コンテンツ terraform-practice
https://fintan.jp/page/7192/
https://github.com/cnc4e/terraform-practice

ステップ1や2でなんとなく理解しただけのfor_each, output, moduleの切り方などの知識が
実際に手を動かすことで使える知識となりました。

ステップ4- Terraformで実際にECSを作成してみる

ここの具体的な方法については触れませんが、ECSをマネジメントコンソールで作成し、それと同じものをterraformのドキュメントを見ながら作成していきましょう。地道な作業ですが、頑張りましょう。
Terraform import という機能を利用すれば手動で作成したリソースをterraformにインポートすることも可能です。また実際に書いたTerraformのコードは知見の深い方にレビューして頂くと良いと思います。
https://zenn.dev/kou_pg_0131/articles/tf-import-block

Discussion