詳解 Terraform 第3版

Infrastructure as Codeを実現する

4,180円
Ebook Storeで電子版を購入:
価格4,180円
カートに入れる

内容

本書は、Terraformのシンプルな宣言的表現によって、コマンド操作で、インフラをデプロイし管理する方法を豊富なサンプルコードを使って解説します。
Terraformがインフラの状態をどのように管理し、ファイルのレイアウト、分離、ロックにどのように影響するかを学びます。またTerraformを使ったサーバクラスタやロードバランサ、データベースのデプロイ、Terraformモジュールでの再利用可能なインフラの作成、ゼロダウンタイムデプロイを実現するための高度なTerraformの文法を解説します。さらにTerraformの各種ファイルにスケーラビリティを持たせた状態で管理する方法や、パスワードなどの機密情報をTerraformでうまく管理する方法、テストまでを詳述します。
Terraformの基本から、大規模なトラフィックと多数の開発者チームをサポートするフルスタックの運用までを包括的に学ぶ本書は、開発者、システム管理者必携の一冊です。Terraformバージョン1.0以降対応。

関連書籍

目次

はじめに

1章 なぜTerraformを使うのか
    1.1 DevOpsとは何か
    1.2 Infrastructure as Codeとは何か
        1.2.1 アドホックなスクリプト
        1.2.2 設定管理ツール
        1.2.3 サーバテンプレーティングツール
        1.2.4 オーケストレーションツール
        1.2.5 プロビジョニングツール
    1.3 Infrastructure as Codeの利点とは
    1.4 Terraformはどう動くのか
    1.5 Terraformと他のIaCツールとはどう違うのか
        1.5.1 設定管理ツールか、プロビジョニングツールか
        1.5.2 ミュータブルなインフラか、イミュータブルなインフラか
        1.5.3 手続き型言語か、宣言型言語か
        1.5.4 汎用言語かドメイン特化言語か
        1.5.5 マスタか、マスタレスか
        1.5.6 エージェントか、エージェントレスか
        1.5.7 有償か、無償か
        1.5.8 大きなコミュニティか、小さなコミュニティか
        1.5.9 成熟か、最先端か
        1.5.10 複数のツールの組み合わせ
    1.6 まとめ

2章 Terraformをはじめよう
    2.1 AWSアカウントのセットアップ
    2.2 Terraformのインストール
    2.3 サーバ1台のデプロイ
    2.4 Webサーバ 1台のデプロイ
    2.5 設定変更可能なWebサーバのデプロイ
    2.6 Webサーバのクラスタのデプロイ
    2.7 ロードバランサのデプロイ
    2.8 後片付け
    2.9 まとめ 

3章 Terraformステートを管理する
    3.1 Terraformステートとは
    3.2 ステートファイルの共有ストレージ
    3.3 Terraformバックエンドの制限
    3.4 ステートファイルの分離
        3.4.1 ワークスペースによる分離
        3.4.2 ファイルレイアウトによる分離
    3.5 terraform_remote_stateデータソース
    3.6 まとめ 

4章 モジュールで再利用可能なインフラを作る
    4.1 モジュールの基本
    4.2 モジュールの入力
    4.3 モジュールのローカルな値
    4.4 モジュールの出力
    4.5 モジュールの注意点
        4.5.1 ファイルパス
        4.5.2 インラインブロック
    4.6 モジュールのバージョン管理
    4.7 まとめ 

5章 Terraformを使うためのヒントとコツ:ループ、条件分岐、デプロイ、その他つまずきポイント
    5.1 ループ
        5.1.1 countパラメータによるループ
        5.1.2 for_each式によるループ
        5.1.3 for式によるループ
        5.1.4 forの文字列ディレクティブを使ったループ
    5.2 条件分岐
        5.2.1 countパラメータを使った条件分岐
        5.2.2 for_eachとforを使った条件分岐
        5.2.3 if文字列ディレクティブを使った条件分岐
    5.3 ゼロダウンタイムデプロイ
    5.4 Terraformのつまずきポイント
        5.4.1 countとfor_eachの制限事項
        5.4.2 ゼロダウンタイムデプロイの制限事項
        5.4.3 有効なプランも失敗することがある
        5.4.4 リファクタリングは難しい
    5.5 まとめ 

6章 シークレットを管理する
    6.1 シークレット管理の基本
    6.2 シークレット管理ツール
        6.2.1 保存するシークレットの種類
        6.2.2 シークレットの保存方法
        6.2.3 シークレットにアクセスするインタフェイス
        6.2.4 シークレット管理ツールの比較
    6.3 シークレット管理ツールとTerraform
        6.3.1 プロバイダ
        6.3.2 リソースとデータソース
        6.3.3 ステートファイルとプランファイル
    6.4 まとめ 

7章 複数のプロバイダを使う
    7.1 1つのプロバイダを使う
        7.1.1 プロバイダとは何か
        7.1.2 プロバイダをどのようにインストールするのか
        7.1.3 プロバイダをどのように使うのか
    7.2 同じプロバイダのコピーを複数使う
        7.2.1 複数のAWSリージョンを使う
        7.2.2 複数のAWSアカウントを使う
        7.2.3 複数のプロバイダを使えるモジュールを作る
    7.3 異なる複数のプロバイダを使う
        7.3.1 Docker短期集中コース
        7.3.2 Kubernetes短期集中コース
        7.3.3 Elastic Kubernetes Service(EKS)を使ったAWSへのDockerコンテナのデプロイ
    7.4 まとめ 

8章 本番レベルのTerraformコード
    8.1 本番レベルのインフラを構築するのに時間がかかる理由
    8.2 本番レベルのインフラのチェックリスト
    8.3 本番レベルのインフラモジュール
        8.3.1 小さなモジュール
        8.3.2 組み合わせ可能なモジュール
        8.3.3 テスト可能なモジュール
        8.3.4 バージョン管理されたモジュール
        8.3.5 Terraformモジュールの先へ
    8.4 まとめ 

9章 Terraformのコードをテストする
    9.1 手動テスト
        9.1.1 手動テストの基礎
        9.1.2 テスト後の後片付け
    9.2 自動テスト
        9.2.1 ユニットテスト
        9.2.2 統合テスト
        9.2.3 E2Eテスト
        9.2.4 その他のテスト手法
    9.3 まとめ 

10章 チームでTerraformを使う
    10.1 チームでInfrastructure as Codeを採用する
        10.1.1 上司を説得する
        10.1.2 少しずつ進める
        10.1.3 学ぶ時間をチームに与える
    10.2 アプリケーションコードのデプロイワークフロー
        10.2.1 バージョン管理する
        10.2.2 コードをローカルで実行する
        10.2.3 コードに変更を加える
        10.2.4 変更に対するレビューを依頼する
        10.2.5 自動テストを実行する
        10.2.6 マージしてリリースする
        10.2.7 デプロイする
    10.3 インフラコードのデプロイワークフロー
        10.3.1 バージョン管理する
        10.3.2 コードをローカルで実行する
        10.3.3 コードに変更を加える
        10.3.4 変更に対するレビューを依頼する
        10.3.5 自動テストを実行する
        10.3.6 マージしてリリースする
        10.3.7 デプロイする
    10.4 すべてを組み合わせよう
    10.5 まとめ

付録A 参考文献
    A.1 書籍
    A.2 ブログ
    A.3 講演
    A.4 ニュースレター
    A.5 オンラインフォーラム

訳者あとがき
索引

コラム目次
    ネットワークの分離
    タグに関するルールを強制する
    1つのメールアドレスで複数のエイリアスを使う方法
    プロビジョナとユーザーデータ

正誤表