『実践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