ISBN 9784814400522

詳解 Terraform 第3版 : Infrastructure as Codeを実現する

詳解 Terraform 第3版 : Infrastructure as Codeを実現する
刊行
2023-11

概要

Terraform で本番運用に耐えるインフラをコードで設計・管理する

想定読者

AWS 等クラウドを業務で使いはじめており、手作業・コンソール操作からコード管理へ移行したいエンジニア。Terraform の経験が浅く、状態管理・モジュール設計・チーム運用まで体系的に習得したい人。

こんな人には向いていない

  • Terraform を既に本番運用し、tfstate の分割設計や Atlantis 等の CD 基盤まで熟知している上級者には基本事項の比重が大きい
  • クラウドそのものの基礎(VPC・IAM・EC2 の概念)がまだ固まっていない段階では、例題コードの意味を追うのに苦労する
  • Docker/Kubernetes の実務経験がない場合、第7章(マルチプロバイダ)のコンテナ関連例はコンテキスト不足で読み解きにくい

読了後にできるようになること

  • tfstate をリモートバックエンド(S3 + DynamoDB)で管理し、複数人での競合を防ぐロック戦略を実装できる
  • モジュール設計の原則を理解し、環境間(dev/staging/prod)で再利用可能なインフラコードを構成できる
  • create_before_destroy や zero-downtime deployment パターンを使ってダウンタイムなしの変更を適用できる
  • シークレット管理の基本方針を理解し、credentials をコードに埋め込まない設計ができる
  • Terratest を使ったインフラコードの自動テスト手法を概観し、CI/CD パイプラインと統合する方向性をつかめる
  • Terraform を組織全体に展開する際のワークフロー(プルリクエスト連携・権限設計)を検討できる

本書のキー概念(章解説)

  • 第 1 章 なぜ Terraform を使うのか — IaC の必要性と他ツール(Ansible/CloudFormation)との位置づけを整理する導入章
  • 第 2 章 Terraform をはじめる — AWS プロバイダで EC2・ALB・RDS を構築する動く例が豊富。環境構築の出発点として必読
  • 第 3 章 Terraform の状態を管理する — リモートバックエンドと状態ロックの実装。チーム運用の要となる章
  • 第 4 章 Terraform モジュールを使ってインフラを再利用する — モジュール設計の原則。環境間コードの重複を排除したい人が最も恩恵を受ける章
  • 第 5 章 Terraform の高度な構文 — count / dynamic / create_before_destroy など Terraform 固有の機能を集中解説。中級者がつまずく箇所を網羅
  • 第 6 章 シークレットを管理する — credentials のコード外管理方針。基本的なアプローチを押さえる
  • 第 7 章 複数のプロバイダを扱う — Docker/Kubernetes を組み合わせる章。コンテナ未経験者は補足リソースを先に参照するとよい
  • 第 8 章 本番グレードの Terraform コード — 大規模チームを想定した設計パターン。密度が上がるため章末を起点にした逆引き読みも有効
  • 第 9 章 Terraform コードをテストする — Terratest(Go)によるインフラ自動テスト。難易度は高いが CI/CD と統合する設計の基礎を示す
  • 第 10 章 チームで Terraform を使う — PR ベースのワークフローと権限設計。組織導入を推進する立場のエンジニアに特に有用

ハイライト

  • インフラコードに対して自動テストを書くのは、気弱な人には向いていません。(本書がテスト章で示す正直な前置き。自動テストの難易度を正確に伝える本書のトーンを端的に示す箇所)
  • Terraform 管理を始めたら Terraform 外で絶対に変更を加えない、という原則が組織全体のガバナンスを支える。(読者が実務で最も重要と振り返る原則。コンソール操作との二重管理リスクを警告する本書の立場が明確)

外部からの言及

  • Terraform 経験2ヶ月程度の初心者でもスルスル読めた、という声が複数あり、入門から実務適用までを一冊でカバーする構成が評価されている。一方で、上級者には基本事項の比重が大きいとの指摘もある(qiita)
  • 第5章(高度な構文)と第10章(チーム運用)が特に有用という評価が目立つ。一方で第7章以降の Docker/Kubernetes 例はコンテキストがないと追いにくいとの注記が複数の読書メモに見られる(qiita)
  • 本書執筆後に Terraform 1.7 のネイティブテスト機能がリリースされており、第9章(Terratest)との内容ギャップを補足として意識する必要があるという指摘がある(qiita)

編集メモ

Qiita 言及記事 4 件 / 累計 likes 約 22。件数は少ないが記事内で具体的な写経・完走メモが複数あり、実際に手を動かして読まれていることが確認できる。Rakuten ランキング情報なし。定番(essential)には言及量が届かないが、実務での採用度を裏付ける記事群がある実務向け良書と判定

読む前に押さえておきたいこと

  • AWS の基本サービス(VPC・EC2・IAM・S3)を自分で作成・削除した経験
  • コマンドライン操作と Git の基本(clone / commit / push 程度)
  • HCL の文法を知らなくても問題ないが、JSON/YAML 等の設定ファイル形式の読み書きに慣れていると理解が速い

学習のコツ

  • 第2章の例題コードは実際に AWS 環境で動かしながら読むと、state ファイルの変化が体感できる。ただし作成したリソースは章末の destroy を必ず実行してコストを抑えること
  • 第3章(状態管理)は第2章直後に読むことを強く推奨。ローカル state の危うさを実感したタイミングで読むと定着が早い
  • 第9章(テスト)は難易度が高いため、初読時は概観だけつかんで飛ばし、CI/CD 整備のフェーズで戻る読み方が現実的
  • 第7章の Docker/Kubernetes 例は、コンテナ未経験の場合は『Docker/Kubernetes 実践コンテナ開発入門』等で前提を補ってから挑むとコードの意図が把握しやすい
  • 本書のサンプルコードは AWS の一部リソース定義が出版後の API 変更で動かないケースがある。公式の GitHub リポジトリ(brikis98/terraform-up-and-running-code)のエラッタを合わせて参照するとよい
出版社による内容紹介

Terraformを総合的に解説! Terraformとは、コードからインフラリソースを作成し、コードでインフラを管理するためのツールです。本書では、Terraformの基本からはじまり、Terraformを使ったインフラストラクチャの状態を管理、Terraformモジュールを使った再利用可能なインフラストラクチャの構築、高度なTerraform構文を使用したダウンタイムゼロの導入などTerraformの一通りの機能と使い方を学びます。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。