インプレス[コンピュータ・IT]ムック 入門Terraform クラウド時代のインフラ統合管理
インプレス / 2024年11月26日 / 全335ページ
本書はIaC(Infrastructure as Code)ツールであるTerraformを解説した実践的入門書です。Terraformはシステムの構成をコードとして記述できるツールで、複数のクラウドを含むさまざまなインフラの構築と管理を自動化します。本書では、Terraformを使ってIaCによるシステム管理を現場で実現するための情報を紹介します。Terraformの基礎から、組織による実践的な活用法まで学べる1冊です。
目次
- クレジット・正誤情報
- はじめに
- 本書の構成/著者の各担当/本書のサンプルコードについて
- 第1章 Terraform概要/1.1 クラウドとシステム運用の課題/1.1.1 クラウドがもたらした変化
- 1.1.2 クラウド化による課題
- 1.1.3 解決策としての自動化
- 1.2 Terraformとは何か/1.2.1 Terraformの歩み
- 1.2.2 ライセンス
- 1.2.3 Terraformの仕組み
- 1.3 Infrastructure as Codeとは
- 1.3.1 手作業によるインフラ構築の問題点
- 1.3.2 Infrastructure as Codeのメリット
- 1.3.3 HashiCorp Configuration Language
- 1.4 その他のツールとの違い
- 1.4.1 他のOSSとの違い
- 1.4.2 クラウドの構築自動化ツールとの違い
- 第2章 Terraformの基本的な操作/2.1 本章で構築する構成と目的
- 2.1.1 Terraformのセットアップ
- 2.1.2 Dockerの準備
- 2.2 リソースを作成する/2.2.1 TFファイルの作成
- クレジット・正誤情報
- はじめに
- 本書の構成/著者の各担当/本書のサンプルコードについて
- 第1章 Terraform概要/1.1 クラウドとシステム運用の課題/1.1.1 クラウドがもたらした変化
- 1.1.2 クラウド化による課題
- 1.1.3 解決策としての自動化
- 1.2 Terraformとは何か/1.2.1 Terraformの歩み
- 1.2.2 ライセンス
- 1.2.3 Terraformの仕組み
- 1.3 Infrastructure as Codeとは
- 1.3.1 手作業によるインフラ構築の問題点
- 1.3.2 Infrastructure as Codeのメリット
- 1.3.3 HashiCorp Configuration Language
- 1.4 その他のツールとの違い
- 1.4.1 他のOSSとの違い
- 1.4.2 クラウドの構築自動化ツールとの違い
- 第2章 Terraformの基本的な操作/2.1 本章で構築する構成と目的
- 2.1.1 Terraformのセットアップ
- 2.1.2 Dockerの準備
- 2.2 リソースを作成する/2.2.1 TFファイルの作成
- 2.2.2 初期化 —terraform init—
- 2.2.3 構築 —terraform plan—/2.2.4 実行 —terraform apply—
- 2.3 コードを読み解く
- 2.3.1 terraformブロック
- 2.3.2 providerブロック/2.3.3 resourceブロック
- 2.3.4 構成されるインフラオブジェクト/2.4 構築された環境を読み解く
- 2.4.1 生成されたファイルの確認/2.4.2 ステートファイルとは
- 2.4.3 ステートファイルの管理について
- 2.5 変数を利用する
- 2.5.1 変数の宣言/2.5.2 変数の利用
- 2.5.3 変数の設定
- 2.6 構築した環境を変更する/2.6.1 TFファイルの更新
- 2.6.2 環境の削除 —terraform destroy—
- 2.7 Terraformのコマンド/2.7.1 よく利用するコマンド
- 2.7.2 コマンドの流れ
- 2.7.3 HCLの整形
- 第3章 AWSで始めるTerraform/3.1 AWSの環境を構築しよう/3.1.1 なぜAWSでTerraformなのか?
- 3.1.2 本章で構築する構成/3.2 AWS環境の準備
- 3.2.1 AWSアカウントの作成/3.2.2 IAMユーザーの作成
- 3.2.3 認証情報の保管/3.3 リソースを作成する
- 3.3.1 TFファイルの作成
- 3.4 Terraformでシステムを作る/3.4.1 Wordpressで必要になる環境
- 3.4.2 main.tfの作成
- 3.4.3 VPC/3.4.4 サブネット
- 3.4.5 インターネットゲートウェイ/3.4.6 ルートテーブル
- 3.4.7 セキュリティグループ
- 3.4.8 RDS
- 3.4.9 EC2 インスタンス
- 3.4.10 WordPress実行環境のセットアップ
- 3.4.11 outputsファイルの作成/3.4.12 構築の実行
- 3.4.13 センシティブな値の取得
- 3.5 複数のリソースを作成する/3.5.1 ループの利用
- 3.5.2 countの利用(非推奨)
- 3.5.3 countの使い道
- 3.6 AWSプロバイダーに権限を渡す方法
- 3.6.1 providerブロック内のコンフィグ(非推奨)/3.6.2 AWS CLI設定ファイル
- 3.6.3 IAMインスタンスプロファイル/3.6.4 Dynamic Provider Credentials A
- 3.7 AWS環境を構築するための情報
- 3.7.1 AWSCCプロバイダーのドキュメント
- 3.7.2 HashiCorp Developer
- 第4章 マルチクラウドでTerraformを活用/4.1 マルチクラウドこそTerraformの強み
- 4.1.1 構築ワークフローの統一
- 4.1.2 クラウドごとの知識は必要
- 4.1.3 Terraformによってクラウドの理解が早まる
- 4.2 Azureでの環境構築
- 4.2.1 構築する構成
- 4.2.2 Azureプロバイダー/4.2.3 Azure環境の準備
- 4.2.4 リソースを作成する
- 4.2.5 構築の実行
- 4.2.6 Azure構築のまとめ
- 4.3 Google Cloudでの環境構築
- 4.3.2 Google Cloud 環境の準備
- 4.3.3 リソースを作成する
- 4.3.4 構築の実行
- 4.3.5 Google Cloud構築のまとめ
- 第5章 HCP Terraformを使ったチーム運用/5.1 HCP Terraformとは何か
- 5.1.1 Terraform単体だと困ること
- 5.1.2 Terraform運用のベストプラクティス
- 5.1.3 HCP Terraformが提供する機能
- 5.2 HCP Terraformのサインアップ/5.3 ステートファイルの移行
- 5.3.1 ローカルでステートファイルを作成しておく
- 5.3.2 HCP Terraform向けの設定を追加
- 5.3.3 ログイン
- 5.3.4 ステートファイルを移行
- 5.3.5 Workspaceを確認する
- 5.4 HCP Terraform上での実行/5.4.1 Planを実行する
- 5.4.2 ローカル実行で確認する
- 5.4.3 リモート実行で確認する
- 5.5 VCSと連携する
- 5.5.1 GitおよびGitHubの準備
- 5.5.2 HCP TerraformとGitHubの連携
- 5.5.3 リポジトリを更新する
- 第6章 モジュールの活用/6.1 Terraformにおけるモジュール/6.1.1 コードの複雑化に伴う問題
- 6.1.2 モジュールとは?
- 6.1.3 モジュールの呼び出し
- 6.1.4 モジュールのメリット
- 6.1.5 モジュールのベストプラクティス
- 6.2 パブリックモジュール
- 6.2.1 AWS
- 6.2.2 AWS VPCモジュールを使ってみる
- 6.2.3 Azure
- 6.2.4 Google Cloud
- 6.3 自作のモジュールを公開する/6.3.1 作成するモジュール
- 6.3.2 モジュールのコーディング
- 6.4 HCP Terraformによるモジュール管理/6.4.1 パブリックモジュールの公開
- 6.4.2 プライベートモジュールの登録
- 6.4.3 登録用モジュールの作成
- 6.4.4 プライベートモジュールレジストリへの登録
- 6.4.5 発展的なユースケース
- 第7章 さまざまなプロバイダー/7.1 さまざまなサービスを組み合わせる
- 7.1.1 サービスを組み合わせるのが「現代風」/7.1.2 Terraformとリソース
- 7.2 Terraform Registry/7.2.1 プロバイダーの情報を取得する
- 7.2.2 プロバイダーのTier
- 7.3 プロバイダー紹介
- 7.3.1 Dockerプロバイダー
- 7.3.2 TFEプロバイダー
- 7.3.3 HashiCorp Cloud Platformプロバイダー
- 7.3.4 HashiCorp Vault プロバイダー
- 7.3.5 VMware vSphereプロバイダー
- 7.3.6 Nutanixプロバイダー
- 7.3.7 Fastlyプロバイダー
- 7.3.8 Datadogプロバイダー
- 7.3.9 Splunk Enterpriseプロバイダー
- 7.3.10 Ansibleプロバイダー
- 第8章 SentinelによるPolicy as Codeの実践/8.1 IaC運用における課題
- 8.1.1 インフラや組織のセキュリティ対策
- 8.1.2 組織のコンプライアンス遵守
- 8.1.3 ベストプラクティスの実践/8.1.4 ポリシー適用自動化の必要性
- 8.1.5 Policy as Code
- 8.1.6 PaCの例
- 8.2 Sentinel/8.2.1 Sentinelの特徴/8.2.2 Sentinelのセットアップ
- 8.2.3 helloworld.sentinel
- 8.2.4 Sentinelの基本的な機能
- 8.2.5 ルールの記述
- 8.2.6 組み込み関数
- 8.2.7 パラメータ
- 8.3 ポリシーテスト
- 8.3.1 テストケースの準備
- 8.3.2 モックテスト
- 8.4 Sentinel CLI設定ファイル/8.4.1 設定ファイルのブロック
- 8.4.2 モジュール
- 8.5 実践的なポリシー実装
- 8.5.1 プロビジョナーの禁止
- 8.5.2 Terraformのバージョンの制限/8.5.3 ポリシー設定のポイント
- 8.6 HCP Terraformとの連携/8.6.1 ポリシーとポリシーセット
- 8.6.2 ポリシーチェックの適用
- 付録 Terraform Tips/A.1 Dynamic Provider Credentials/A.1.1 認証情報を直接与えるリスク
- A.1.2 認証情報を直接与えずにTerraformを使う
- A.1.3 AWSの設定
- A.1.4 HCP Terraformの設定
- A.1.5 動作確認/A.1.6 さまざまなクラウドでの利用
- A.2 読み出し専用のデータソースを定義する/A.2.1 データソースとは
- A.2.2 利用可能なデータソース
- A.3 Terraformファイルの分割方法/A.3.1 Terraformファイルを分割して管理する
- A.3.2 ステートファイルを分割して管理する
- A.4 他のステートファイルを参照する/A.4.1 terraform remote stateデータソース
- A.4.2 HCP Terraformからremote stateを参照する
- A.4.3 remote stateを参照する手順
- A.5 複数のリージョンやアカウントを使う
- A.5.1 複数のリージョンを同時に設定する
- A.5.2 複数のアカウントを利用する
- A.6 ローカル値/A.6.1 再利用したい値を定義する
- A.6.2 ローカル値で設定できること
- A.6.3 local値とvariableとの使い分け
- A.7 ヒアドキュメントとテンプレート構文/A.7.1 ヒアドキュメントで複数行の文字列を扱う
- A.7.2 外部ファイルを読み込む
- A.8 動的にブロックを生成する
- A.8.1 dynamicブロック
- A.9 デバッグとトラブルシューティング/A.9.1 terraform consoleの活用
- A.9.2 ログレベルの調整/A.10 覚えておきたい便利コマンド
- 索引
- 奥付
※このデジタル雑誌には目次に記載されているコンテンツが含まれています。それ以外のコンテンツは、本誌のコンテンツであっても含まれていません のでご注意ください。
※電子版では、紙の雑誌と内容が一部異なる場合や、掲載されないページがある場合があります。