構成としては以下の通り。
[目次] Part 1:基礎知識 1章 IaCを知る 2章 Terraformのインストール Part 2:コア・コンセプト 3章 Terraformをはじめよう 4章 Terraformへのディープダイブ 5章 Terraform CLI 6章 Terraformのワークフロー 7章 Terraformのモジュール Part 3: Terraformによるインフラストラクチャの管理 8章 Terraformの構成ファイル 9章 Terraformスタックを理解する 10章 Terraform CloudとTerraform Enterprise 付録 Terraform用語集/解答と解説
教科書と銘打つ通り、基本的な内容を体系的に説明しているので、これ一冊読めばTerraformをだいたい理解することは出来ると思います。 ただ、Terraformに限らずIaCツールを使いこなすにはクラウドリソースの理解とツール特有の癖を理解する必要があり、ただ書き方を会得しただけでは使いこなすことはむつかしいです。 実際にTerraformで構築して少しずつなれていくしか近道はないです。
自分自身なんとなくで使っていたので、いくつか知らなかったトピックがあったり、理解の確認をすることができ参考になりました。章ごとに問題があり、理解確認できるのはいいですね。 印象に残ったトピックをいくつかメモ代わりに残して起きます。
プロビジョナー
プロビジョナーとはshellやssh、Circle CIなどのサードパーティーツールを通して任意の処理を実行する機能です。本書やドキュメントでも記載されていますが、プロビジョナーは最後の手段であり、Terraformの宣言的記述で解決できないときだけ使うものとなっています。
自分自身そういう場面がなかったので、存在を知らなかったのですが、いざというときの手段として参考になりました。
スタック
このスタックが著者の独自概念なのかは分からないのですが、使い方は面白いとは思いましたが、用途が絞られるかなという印象を受けました。
github上にサンプルコードがあるので見てみると早いのですが、ディレクトリ構成として以下のようになっています。
- modules
- モジュールを定義
- stacks
- main.tfから各種モジュールを呼び出す
- stacks_of_stacks
- stacksを呼び出す
stacks_of_stacksの存在意義を本書を読んだ限りで理解できなかったです。stacks_of_stacksがルートモジュールの扱いならひとつ上のディレクトリにmain.tfを置けば良いのでは?と思いました。
stacksの直下にmain.tfを置くのではなく、さらにディレクトリを切ってstackを複数作り、複数のstackを呼び出す役割としてstacks_of_stacksを作るなら一定の理解はできるかなと思いました。
また、複数のstackを利用する規模になると依存関係や実行時間の問題でstate分割をしたくなる頃なので、概念としては参考にはなりますがあまり実用的には感じない印象です。
まとめ
体系的にTerraformの概要を学ぶには良い本です。ただ、実践的にやっていくには足りないので、各種ドキュメントを読みつつ、実際に手を動かして体得していく必要があります。
この本を読んだ後に必要となるのが下記の詳細Terraformになるんじゃないかなと思って、読み始めてます。