ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

Terraformの教科書を読んでた

構成としては以下の通り。

[目次]
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になるんじゃないかなと思って、読み始めてます。