とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

詳解Terraform 第3版を読んだので感想を書く

IaCツールと言えば、ここ数年で飛躍的に成長しているのがTerraformですよね。

Terraformはドキュメントも充実していますし、その流行りっぷりからWeb上にも情報がたくさん存在します。そのため「あれがやりたい」という問題に直面した際、場当たり的にググるだけでもなんとかなったりします。ですが基礎を体系的に学べる「教科書」というものが、長らく存在しませんでした。技術書典などで同人誌こそ見かけるものの、日本語で読める商業ベースの書籍は、この詳解Terraform 第3版が、実質的に初なのではないでしょうか。

本書は以下の10章で構成されています。

1章 なぜTerraformを使うのか
2章 Terraformをはじめよう
3章 Terraformステートを管理する
4章 モジュールで再利用可能なインフラを作る
5章 Terraformを使うためのヒントとコツ:ループ、条件分岐、デプロイ、 その他つまずきポイント
6章 シークレットを管理する
7章 複数のプロバイダを使う
8章 本番レベルの Terraformコード
9章 Terraformのコードをテストする
10章 チームでTerraformを使う

1章は、IaCを行う動機づけやその利点、宣言型/手続き型によるツールの性質の違いなどが解説されています。IaCツール全般に関する概要となっているため、仮にTerraformを使わないとしても、これからDevOpsをはじめるような人全員に目を通して欲しい章です。

2章は簡単なWebサーバーのデプロイを通して、Terraformの基礎を学ぶチュートリアルです。既にTerraformに触れたことのある人であれば、おさらい程度に流しておくといいでしょう。

3章はTerraform運用の最初の課題、ステート管理と競合ロックについてです。チームでTerraformを導入する予定があるのであれば、絶対に理解しておく必要があります。またステートを分離するための典型的な方法(ワークスペース or ファイルレイアウト)についても解説されています。ちなみに筆者はステート管理と競合ロックは「Terraform Cloudに丸投げでよくね?」派です。

4章はTerraformモジュールについてです。サードパーティのモジュールはよく使っていても、自作のルートモジュールを再利用可能なモジュールに切り出したことはないという人も多いのではないでしょうか。モジュールの基礎から入出力の管理、再利用性を高めるためのインラインブロックの扱い、GitHubを使ったモジュールの管理といった点に言及しています。

5章はTerraformにおけるループと条件分岐についてです。HCLは汎用プログラミング言語と違い、インフラがあるべき状態を簡潔に定義することができますが、逆にロジックの表現力はお察しです。三項演算子とcountループを組み合わせた真偽値による分岐など、初見で理解するのは難しいのではないでしょうか。ここではそんなループと条件分岐について解説しています。

6章は実運用において避けられない、シークレット管理についてです。シークレットと言えば、クラウドへアクセスするためのクレデンシャルや、データベースのパスワードなどを想像しがちです。ですがそれ以外にも、Terraformはプランファイルとステートファイルにも機密情報が含まれるため、これらの扱いについても言及しています。

7章は複数のプロバイダの扱いについてです。「マルチクラウドなんかしないよ?」という人も多いでしょうが、実はAWSのみを利用していても、複数プロバイダのハンドリングは避けて通れません。例えばALBに紐づけるSSL証明書は、ALBをデプロイするリージョンで取得しますが、Cloudfrontに紐づけるSSL証明書は、必ずバージニア北部リージョンで取得しなければならない、といった具合です。

8章は本番でTerraformを運用するにあたって知っておくべきことが書かれています。Terraformの知識を一通り身につけた後、本番運用に投入する前に読んでおきましょう。

9章はテストについてです。IaCはインフラを構築するという特性上、ローカル環境での完全な動作テストが本質的に行えません。そこでテスト環境に実際にインフラをデプロイし、デプロイした対象に対してユニットテストを行うという方法があります。そのためのツールであるTerratestについても言及しています。

10章はチームにTerraformを導入し、運用するにあたって必要な知識が書かれています。まず上司の説得から始めないといけない人や、チームに対してIaCやCI/CDのお作法の教育から始めないといけない人は、目を通しておくとよいでしょう。

本書はTerraformを導入し、実際に本番レベルでの運用を始めるにあたって、日本語で読めるほぼ唯一のガイドブックだと言えるでしょう。これからTerraformを始めたい人や、いままでドキュメントの拾い読みでなんとなく使っていた人には、絶対にお勧めできる内容かと思います。