『実践Terraform』刊行のお知らせと技術書典7での頒布について #技術書典 #Terraform

実践Terraform』を、9/20より発売開始します!Amazonなどから購入可能で、本日より予約できます。紙で買う場合は2,400円(税別)、電子書籍だと2,200円(税別) です。本の正式タイトルは『実践Terraform AWSにおけるシステム設計とベストプラクティス』で、インプレスR&Dさんより刊行します。

また、9/22の技術書典7でも頒布します。イベントに参加しないと買えないですが、ココで買うのが一番オトクになります。

実践Terraformとは

『実践Terraform』は、Terraform初級者から中級者向けの解説書です。 技術書典6とBOOTHで累計1,600部以上を販売した「Pragmatic Terraform on AWS」という同人誌をベースに、100ページ近く加筆して商業誌化しました。

nekopunch.hatenablog.com

技術書典7

技術書典7では発売記念ということで、紙と電子書籍のセットを50部限定で頒布します! 価格は2,500円の予定です。紙でも電子でも読みたい方は、実質一冊分の値段で両方手に入るチャンスです。またとない機会なので、ぜひ遊びに来てください。

techbookfest.org

『実践Terraform』は「【お20C】KOS-MOS」にて頒布します。なお、技術書典7は2019/09/22 (日) 11:00〜17:00の日程で開催されます。場所は「池袋サンシャインシティ 展示ホールC/D(文化会館ビル2/3F)」です。「お20C」は3Fです。

表紙

表紙はイラストレーターのはこしろさんに描いていただきました!

マジ、カッコいい…。最高すぎる……。同人誌のときは自分で表紙デザインしたので、プロの方に描いていただいて感動です。本当にありがとうございますって気持ちです。もうこれだけのために買ってもいいぐらいです。

はこしろさんははこしろ工房というサイトからコンタクトできるので、気になる方はぜひこちらもご覧ください。

無料サンプル

最初の2章だけですが、無料のサンプルPDFを公開する許可をいただいたので掲載します。目次だけで10ページぐらいありますが、ぜひななめ読みしていってください。

目次

第1章から第3章が「入門編」で、Terraform初心者が基礎知識を一気に習得できるように構成しています。

第4章から第16章が「実践編」で、AWSの各種リソースをTerraformで実装します。VPC・ALB・ECS Fargate・CodePipeline・Session Manager・Kinesis Data Firehoseなど、Webサービスを構築して運用するためのリソースを一通りTerraformで実装します。すべて写経すれば、主要なAWSリソースが自由に作れるようになります。

そして第17章から第28章が「運用・設計編」で、本番運用に欠かせない考え方を学びます。コードの構造化・リファクタリング・モジュール設計・既存リソースのインポート・チーム開発など、なかなか体系的に学ぶことができない中級者向けのノウハウを公開します。運用・設計に正解はありませんが、出発点とするには十分な情報を提供します。商業誌化にあたり、ここはもっとも気合を入れて書きました。7〜8割は書き下ろしです。

 1章 セットアップ
   1.1 AWS
      1.1.1 IAMユーザー
      1.1.2 AWS CLI
      1.1.3 クレデンシャル
   1.2 Terraform
      1.2.1 Homebrew
      1.2.2 tfenv
      1.2.3 Dockernized Terraform
   1.3 git-secrets
 2章 基本操作
   2.1 リソースの作成
      2.1.1 HCL(HashiCorp Configuration Language)
      2.1.2 terraform init
      2.1.3 terraform plan
      2.1.4 terraform apply
   2.2 リソースの更新
      2.2.1 リソースの設定変更
      2.2.2 リソースの再作成
   2.3 tfstateファイル
   2.4 リソースの削除
 3章 基本構文
   3.1 変数
   3.2 ローカル変数
   3.3 出力値
   3.4 データソース
   3.5 プロバイダ
   3.6 参照
   3.7 組み込み関数
   3.8 モジュール
      3.8.1 モジュールの定義
      3.8.2 モジュールの利用
 4章 全体設計
   4.1 システム要件
   4.2 アーキテクチャ設計
   4.3 テクノロジースタック
   4.4 ファイルレイアウト
 5章 権限管理
   5.1 ポリシー
      5.1.1 ポリシードキュメント
      5.1.2 IAMポリシー
   5.2 ロール
      5.2.1 信頼ポリシー
      5.2.2 IAMロール
      5.2.3 IAMポリシーのアタッチ
      5.2.4 IAMロールのモジュール化
 6章 ストレージ
   6.1 プライベートバケット
      6.1.1 S3バケット
      6.1.2 ブロックパブリックアクセス
   6.2 パブリックバケット
   6.3 ログバケット
      6.3.1 ログローテーションバケット
      6.3.2 バケットポリシー
 7章 ネットワーク
   7.1 パブリックネットワーク
      7.1.1 VPC(Virtual Private Cloud)
      7.1.2 パブリックサブネット
      7.1.3 インターネットゲートウェイ
      7.1.4 ルートテーブル
   7.2 プライベートネットワーク
      7.2.1 プライベートサブネット
      7.2.2 NATゲートウェイ
      7.2.3 暗黙的な依存関係
   7.3 マルチAZ
      7.3.1 パブリックネットワークのマルチAZ化
      7.3.2 プライベートネットワークのマルチAZ化
   7.4 ファイアウォール
      7.4.1 セキュリティグループ
      7.4.2 セキュリティグループのモジュール化
 8章 ロードバランサーとDNS
   8.1 ALBの構成要素
   8.2 HTTP用ロードバランサー
      8.2.1 アプリケーションロードバランサー
      8.2.2 リスナー
      8.2.3 HTTPアクセス
   8.3 Route 53
      8.3.1 ドメインの登録
      8.3.2 ホストゾーン
      8.3.3 DNSレコード
      8.3.4 独自ドメインへのアクセス
   8.4 ACM(AWS Certificate Manager)
      8.4.1 SSL証明書の作成
      8.4.2 SSL証明書の検証
   8.5 HTTPS用ロードバランサー
      8.5.1 HTTPSリスナー
      8.5.2 HTTPのリダイレクト
      8.5.3 HTTPSアクセス
   8.6 リクエストフォワーディング
      8.6.1 ターゲットグループ
      8.6.2 リスナールール
 9章 コンテナオーケストレーション
   9.1 ECSの構成要素
   9.2 ECSの起動タイプ
      9.2.1 EC2起動タイプ
      9.2.2 Fargate起動タイプ
   9.3 Webサーバーの構築
      9.3.1 ECSクラスタ
      9.3.2 タスク定義
      9.3.3 ECSサービス
      9.3.4 コンテナの動作確認
   9.4 Fargateにおけるロギング
      9.4.1 CloudWatch Logs
      9.4.2 ECSタスク実行IAMロール
      9.4.3 Dockerコンテナのロギング
10章 バッチ
   10.1 バッチ設計
      10.1.1 バッチ設計の基本原則
      10.1.2 ジョブ管理
   10.2 ECS Scheduled Tasks
      10.2.1 バッチ用タスク定義
      10.2.2 CloudWatchイベントIAMロール
      10.2.3 CloudWatchイベントルール
      10.2.4 CloudWatchイベントターゲット
      10.2.5 バッチの動作確認
11章 鍵管理
   11.1 KMS(Key Management Service)
      11.1.1 カスタマーマスターキー
      11.1.2 エイリアス
12章 設定管理
   12.1 コンテナの設定管理
   12.2 SSMパラメータストア
      12.2.1 AWS CLIによる操作
      12.2.2 Terraformによるコード化
      12.2.3 SSMパラメータストアとECSの統合
13章 データストア
   13.1 RDS(Relational Database Service)
      13.1.1 DBパラメータグループ
      13.1.2 DBオプショングループ
      13.1.3 DBサブネットグループ
      13.1.4 DBインスタンス
      13.1.5 マスターパスワードの変更
   13.2 ElastiCache
      13.2.1 ElastiCacheパラメータグループ
      13.2.2 ElastiCacheサブネットグループ
      13.2.3 ElastiCacheレプリケーショングループ
14章 デプロイメントパイプライン
   14.1 デプロイメントパイプラインの設計
   14.2 コンテナレジストリ
      14.2.1 ECRリポジトリ
      14.2.2 ECRライフサイクルポリシー
      14.2.3 Dockerイメージのプッシュ
   14.3 継続的インテグレーション
      14.3.1 CodeBuildサービスロール
      14.3.2 CodeBuildプロジェクト
      14.3.3 ビルド仕様
   14.4 継続的デリバリー
      14.4.1 CodePipelineサービスロール
      14.4.2 アーティファクトストア
      14.4.3 GitHubトークン
      14.4.4 CodePipeline
      14.4.5 CodePipeline Webhook
      14.4.6 GitHubプロバイダ
      14.4.7 GitHub Webhook
15章 SSHレスオペレーション
   15.1 オペレーションサーバーの設計
      15.1.1 運用
      15.1.2 セキュリティ
      15.1.3 トレーサビリティ
   15.2 Session Manager
      15.2.1 インスタンスプロファイル
      15.2.2 EC2インスタンス
      15.2.3 オペレーションログ
   15.3 ローカル環境
      15.3.1 Session Manager Plugin
      15.3.2 シェルアクセス
16章 ロギング
   16.1 ロギングの種類
      16.1.1 S3へのロギング
      16.1.2 CloudWatch Logsへのロギング
   16.2 ログ検索
      16.2.1 Athena
      16.2.2 CloudWatch Logs Insights
   16.3 ログ永続化
      16.3.1 ログ永続化バケット
      16.3.2 Kinesis Data Firehose IAMロール
      16.3.3 Kinesis Data Firehose配信ストリーム
      16.3.4 CloudWatch Logs IAMロール
      16.3.5 CloudWatch Logsサブスクリプションフィルタ
17章 Terraformベストプラクティス
   17.1 Terraformバージョンを固定する
   17.2 プロバイダバージョンを固定する
   17.3 削除操作を抑止する
   17.4 コードフォーマットをかける
   17.5 バリデーションをかける
   17.6 オートコンプリートを有効にする
   17.7 プラグインキャッシュを有効にする
   17.8 TFLintで不正なコードを検出する
      17.8.1 TFLintのインストール
      17.8.2 TFLintの使い方
      17.8.3 Deep Checking
18章 AWSベストプラクティス
   18.1 ネットワーク系デフォルトリソースの使用を避ける
   18.2 データストア系デフォルトリソースの使用を避ける
   18.3 APIの削除保護機能を活用する
   18.4 暗黙的な依存関係を把握する
   18.5 暗黙的に作られるリソースに注意する
19章 高度な構文
   19.1 三項演算子
   19.2 複数リソース作成
   19.3 リソース作成制御
   19.4 主要なデータソース
      19.4.1 AWSアカウントID
      19.4.2 リージョン
      19.4.3 アベイラビリティゾーン
      19.4.4 サービスアカウント
   19.5 主要な組み込み関数
      19.5.1 Numeric Functions
      19.5.2 String Functions
      19.5.3 Collection Functions
      19.5.4 Filesystem Functions
      19.5.5 その他の組み込み関数
   19.6 ランダム文字列
   19.7 Multipleプロバイダ
      19.7.1 リソースのマルチリージョン定義
      19.7.2 モジュールのマルチリージョン定義
   19.8 Dynamic blocks
      19.8.1 シンプルなDynamic blocks
      19.8.2 複雑なDynamic blocks
      19.8.3 Dynamic blocksの注意点
20章 tfstateファイルの管理
   20.1 ステートバケット
      20.1.1 ステートバケットの作成
      20.1.2 ステートバケットの利用
   20.2 Terraform Cloud
      20.2.1 アカウント登録
      20.2.2 Organizationの作成
      20.2.3 トークンの設定
      20.2.4 Terraform Cloudの利用
      20.2.5 ロックと変更履歴
21章 構造化
   21.1 モノリス
   21.2 モジュールの分離
      21.2.1 別ディレクトリへの分離
      21.2.2 別リポジトリへの分離
   21.3 独立した環境
      21.3.1 ディレクトリ分割
      21.3.2 Workspaces
   21.4 コンポーネント分割
      21.4.1 安定度
      21.4.2 ステートフル
      21.4.3 影響範囲
      21.4.4 組織のライフサイクル
      21.4.5 関心事の分離
   21.5 依存関係の制御
22章 モジュール設計
   22.1 モジュールの設計原則
      22.1.1 Small is beautiful
      22.1.2 疎結合
      22.1.3 高凝集
      22.1.4 認知的負荷
   22.2 優れたモジュールの構成要素
      22.2.1 Standard Module Structure
      22.2.2 ドキュメンテーション
      22.2.3 バージョニング
      22.2.4 バージョン制約
   22.3 公開モジュール
      22.3.1 GitHub
      22.3.2 Terraform Module Registry
      22.3.3 バージョンアップ
      22.3.4 公開モジュールの利用
23章 リソース参照パターン
   23.1 リテラル
      23.1.1 参照対象のリソースの定義
      23.1.2 リテラルによる参照
   23.2 リモートステート
      23.2.1 バックエンドの定義
      23.2.2 リモートステートによる参照
   23.3 SSMパラメータストア連携
      23.3.1 SSMパラメータストアの定義
      23.3.2 SSMパラメータストアによる参照
   23.4 データソースと依存関係の分離
      23.4.1 参照対象のリソースへタグを追加
      23.4.2 データソースによる参照
   23.5 Data-only Modules
      23.5.1 Data-only Modulesの定義
      23.5.2 Data-only Modulesによる参照
24章 リファクタリング
   24.1 tfstateファイルのバックアップ
   24.2 ステートの参照
      24.2.1 terraform state list
      24.2.2 terraform state show
      24.2.3 terraform state pull
   24.3 ステートの上書き
      24.3.1 tfstateファイルの書き換え
      24.3.2 terraform state push
   24.4 ステートからリソースを削除
      24.4.1 terraform state rm
      24.4.2 リソースの存在確認
   24.5 リネーム
      24.5.1 terraform state mvによるリソースのリネーム
      24.5.2 terraform state mvによるモジュールのリネーム
   24.6 tfstateファイル間の移動
      24.6.1 リソースをローカルへ移動
      24.6.2 移動先のtfstateファイルをローカルへコピー
      24.6.3 tfstateファイル間のリソース移動
      24.6.4 移動先のtfstateファイルを上書き
      24.6.5 コードの修正
25章 既存リソースのインポート
   25.1 terraform import
      25.1.1 単一リソースのインポート
      25.1.2 関連リソースのインポート
   25.2 terraformer
      25.2.1 terraformerのインストール
      25.2.2 指定したリソースのインポート
      25.2.3 すべてのリソースのインポート
      25.2.4 関連するリソースのインポート
26章 チーム開発
   26.1 ソースコード管理
   26.2 ブランチ戦略
   26.3 レビュー
      26.3.1 アーキテクチャレビュー
      26.3.2 コードレビュー
      26.3.3 実行計画レビュー
      26.3.4 プルリクエストテンプレート
   26.4 Apply戦略
      26.4.1 手動Apply
      26.4.2 自動Apply
   26.5 コンテキストの理解
      26.5.1 ビジネス目標
      26.5.2 ステークホルダー
      26.5.3 アプリケーション
      26.5.4 システムアーキテクチャ
27章 継続的Apply
   27.1 ワークフロー
   27.2 apply実行環境
      27.2.1 CodeBuildサービスロールの作成
      27.2.2 GitHubトークンの保存
      27.2.3 CodeBuildプロジェクトの作成
      27.2.4 CodeBuild Webhookの作成
   27.3 ビルドリポジトリ
      27.3.1 buildspec.yml
      27.3.2 buildスクリプト
      27.3.3 planスクリプト
      27.3.4 applyスクリプト
   27.4 tfnotify
      27.4.1 installスクリプト
      27.4.2 tfnotifyの設定
      27.4.3 tfnotifyの組み込み
      27.4.4 GitHubへの通知
   27.5 Branch protection rules
28章 落ち穂拾い
   28.1 高速化
   28.2 デバッグログ
   28.3 JSONコメント
   28.4 Terraformのアップグレード
   28.5 AWSプロバイダのアップグレード
   28.6 周辺ツールの探し方
   28.7 公式ドキュメントを読むコツ
   28.8 構成ドリフト
   28.9 未知の未知
 付録A 巨人の肩の上に乗る
   A.1 Terraform
   A.2 AWS
   A.3 インフラストラクチャ
   A.4 システムアーキテクチャ
   A.5 ソフトウェア設計

書籍情報詳細

インプレスR&Dさんのプレスリリースもあわせてご覧ください。

prtimes.jp

発売日

価格

  • 印刷書籍 2,400円(税別) : 2,592円(消費税8%) or 2,640円(消費税10%)
  • 電子書籍 2,200円(税別) : 2,376円(消費税8%) or 2,420円(消費税10%)

仕様

  • 印刷書籍 B5判/カラー/本文232ページ
  • 電子書籍 EPUB3/Kindle Format8

販売ストア