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

実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing))
- 作者: 野村友規
- 出版社/メーカー: インプレスR&D
- 発売日: 2019/09/20
- メディア: Kindle版
- この商品を含むブログを見る
また、9/22の技術書典7でも頒布します。イベントに参加しないと買えないですが、ココで買うのが一番オトクになります。
実践Terraformとは
『実践Terraform』は、Terraform初級者から中級者向けの解説書です。 技術書典6とBOOTHで累計1,600部以上を販売した「Pragmatic Terraform on AWS」という同人誌をベースに、100ページ近く加筆して商業誌化しました。
技術書典7
技術書典7では発売記念ということで、紙と電子書籍のセットを50部限定で頒布します! 価格は2,500円の予定です。紙でも電子でも読みたい方は、実質一冊分の値段で両方手に入るチャンスです。またとない機会なので、ぜひ遊びに来てください。
『実践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さんのプレスリリースもあわせてご覧ください。
発売日
- 2019年9月20日
価格
- 印刷書籍 2,400円(税別) : 2,592円(消費税8%) or 2,640円(消費税10%)
- 電子書籍 2,200円(税別) : 2,376円(消費税8%) or 2,420円(消費税10%)
仕様
販売ストア
- 印刷書籍 Amazon.co.jp、三省堂書店オンデマンド、hontoネットストア、楽天ブックス
- 電子書籍 Amazon Kindleストア、楽天koboイーブックストア、Apple Books、紀伊國屋書店 Kinoppy、Google Play Store、honto電子書籍ストア、Sony Reader Store、BookLive!、BOOK☆WALKER