0から始めるTerraformの学習方法[AWS/完全版]
はじめに
数ヶ月前に初めて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
Terraformの概要をざっくりと掴むにはこちらのUdemyが一番適していました。
Terraformがなぜ使われているのか?
なんのために使うのか?
terraformの基本構文についてざっくりと理解しました。
リソースの設定値を説明している章は、TerraformではなくAWSの知識に関する箇所だと思うので飛ばしました。
下記の項目のみを、2倍速で観て、理解しました。
基礎から学ぶ Terraform
二つめがこちらの書籍
TerraformのコマンドやTerraform Cloudの紹介など体系的に書いてあるのでおすすめ。
Terraformを使って、ECSを構築しようと言ったものではないため、Terraformの使い方にフォーカスしてあり非常に読みやすかったです。ページ数もそこまで多くなく、一冊読み切る満足感も得られるのでおすすめ。
ここまでまだ一行もコードを書いていない。
ステップ2- Terraformのベストプラクティスの理解
Terraformの基礎的な書き方をなんとなく理解して次に気になるのが、Terraformのベストプラクティスだと思う。特に私が気になったのはアーキテクチャー設計(ディレクトリ構成)と命名規則でした。
これらについては下記の記事や書籍を流し読みをして、ざっくりと理解しました。
ベストなディレクトリ構成に関して
GoのZennが非常に分かりやすいSakiさんの発表資料
AWSの方の発表資料
こんな感じでディレクトリ構成を考えれば良いのか。と非常にためになりました
その他命名規則含むベストプラクティスが凝集した資料や書籍
AWSを学習していると絶対にお世話になるクラスメソッドさんのベストプラクティスまとめ
Googleが作成しているTerraformの活用のガイドライン
実践Terraform
ここもterraformの基礎的な書き方やベストプラクティスにのみフォーカスし、AWSリソースの設定値が書かれている箇所は読みませんでした。
実際にどのようにTerraformが運用してるか等大変分かりやすい。
そこでStandard Module Structureというのものを知る。
ここまでまだ一行もコードを書いていない。
ステップ3- Terraformの書き方に沿って実際に書いてみる
TISインテックグループ様が作成した下記コンテンツがあまりに良かったです。
びっくりするぐらい良かった!!!
解きながら学ぶ学習コンテンツ terraform-practice
ステップ1や2でなんとなく理解しただけのfor_each, output, moduleの切り方などの知識が
実際に手を動かすことで使える知識となりました。
ステップ4- Terraformで実際にECSを作成してみる
ここの具体的な方法については触れませんが、ECSをマネジメントコンソールで作成し、それと同じものをterraformのドキュメントを見ながら作成していきましょう。地道な作業ですが、頑張りましょう。
Terraform import という機能を利用すれば手動で作成したリソースをterraformにインポートすることも可能です。また実際に書いたTerraformのコードは知見の深い方にレビューして頂くと良いと思います。
Discussion
ご紹介ありがとうございます!
「世界で一番有名」なんて大変恐縮です💦
TISインテックグループ様のGitにはTerraform以外にも学習用コンテンツが多数ありますね。Docker, k8s, Git, CI/CD etc.