そもそも HCP Terraform についてだが、一言でいうと「Terraform をチーム・組織で運用していく上でいろんな便利な機能を備えた SaaS サービス」である。
What is HCP Terraform? | Terraform | HashiCorp Developer
HCP Terraform is an application that helps teams use Terraform to provision infrastructure. Learn how HCP Terraform can help you collaborate, manage remote state, and automate workflows.
developer.hashicorp.com
tfstate ファイルの管理については、チーム開発だとローカルで管理する訳にはいかないので、自前でリモートバックエンド(例えば AWS だと S3 のようなオブジェクトストレージ)を使った管理になるだろう。しかし、競合や破損、アクセス権限の管理、バックアップ運用、そもそもそのバックエンドの S3 などは Terraform で管理しないのかなど、、、クリティカルなものを扱うが故に地味に検討するポイントが多かった。
HCP Terraform では、各ワークスペースごとに tfstate ファイルを自動的に管理され、ロックやバージョン管理も標準でサポートされている。そのため、複数人での同時作業でも tfstate ファイルの競合や上書き事故を防ぐことができ、過去のバージョンを GUI から簡単にロールバックできる。
HCP Terraform のもう一つの大きな特徴が、GitHub や GitLab、Bitbucket など主要なバージョン管理システム(VCS)とシームレスに連携できる点だ。
VCS で Terraform コードを管理しつつ、手組で CI/CD を構築する必要があった。具体的には、CI 上で AWS などのクラウドのリソースをプロビジョニングするためのアクセスキー(あるいは assume role)などを設定しておく必要がある。
上記の図の通り、「どのブランチにコードが push されたら、どの環境にデプロイをする」といったことを HCP Terraform 内に workspace を GUI で切って設定をするだけで簡単に実現できる。
HCP Terraform では、組織的なセキュリティやガバナンスを強化するためのさまざまな機能が標準で提供されている。例えば、コードによるポリシー管理(Policy as Code)によって、組織独自のルールやコンプライアンス要件を自動的に適用できる。
また、RBAC 機能によりユーザーやチームごとに細かく権限を設定できたり、重要な変更に対して承認フローを組み込むことで、意図しない操作やヒューマンエラーを防止でききる。すべての操作履歴は監査ログとして記録されるため、後から誰が何をしたかを追跡でき、セキュリティやガバナンスの観点でも Terraform を安心して利用可能な体制を作ることができる。
細かいことを言えば、Private Registry や Const Estimation などまだまだ語り足りないところもあるがが SaaS 版を契約する際にコストメリットに最も関わる部分はこのあたりかなと思う。
What is HCP Terraform? | Terraform | HashiCorp Developer
HCP Terraform is an application that helps teams use Terraform to provision infrastructure. Learn how HCP Terraform can help you collaborate, manage remote state, and automate workflows.
developer.hashicorp.com
AWSで始めるHCP Terraform入門
📚 このZenn Bookについて
HCP Terraformには、組織でTerraformを運用する際に便利な機能が様々あります。Terraformは知っているけど、HCP Terraformは知らない人向けにAWSを使ってHCP Terraformの各種機能を説明します。
zenn.dev
実践Terraform AWSにおけるシステム設計とベストプラクティス (技術の泉シリーズ(NextPublishing))
本書は、Terraformを使ってAWS上にシステムを構築するノウハウを、200以上のサンプルコードとともに紹介する、Terraform初級者から中級者向け解説書です。ECS Fargateなどのマネージドサービスを中心にアーキテクチャ設計を行い、Terraformで実装します。サンプルコードはGitHubでも公開していますので、手を動かしながら一緒に学びましょう。
【目次】
1章 セットアップ
2章 基本操作
3章 基本構文
4章 全体設計
5章 権限管理
6章 ストレージ
7章 ネットワーク
8章 ロードバランサーとDNS
9章 コンテナオーケストレーション
10章 バッチ
11章 鍵管理
12章 設定管理
13章 データストア
14章 デプロイメントパイプライン
15章 SSHレスオペレーション
16章 ロギング
17章 Terraformベストプラクティス
18章 AWSベストプラクティス
19章 高度な構文
20章 tfstateファイルの管理
21章 構造化
22章 モジュール設計
23章 リソース参照パターン
24章 リファクタリング
25章 既存リソースのインポート
26章 チーム開発
27章 継続的Apply
28章 落ち穂拾い
付録A 巨人の肩の上に乗る
続きを読む
amazon.co.jp
[詳解]AWS Infrastructure as Code――使って比べるTerraform&AWS CDK エンジニア選書
(概要)
※この商品はリフロー型epubで作成されております。デバイスに合わせて文字の大きさやレイアウトが変更可能です。また,電子書籍内で検索をかけたり,マーカーを引いたり,自動読み上げを行うことも可能です。
本書は、Amazon Web Services(AWS)のリソースを対象とした、コードによるインフラ管理――Infrastructure as Code(IaC)をテーマにした実践的な解説書です。IaCツールの中でも、幅広いシステムに対応できる「Terraform」と、抽象的なリソース記述が可能な「AWS CDK」を取り上げます。それぞれのツールの基本的な使い方や仕組みを解説するとともに、VPCやECSの構築といった具体例を通じてこれら2つのツールを横断的に比較・理解します。両ツールの「宣言的なコード記述」という共通点や、コード記述法や差分抽出プロセスの違いを掘り下げながら、AWSにおけるIaCの汎用的なスキルを習得できる内容となっています。IaCをこれから始めるユーザーに加え、Terraformユーザー、AWS CDKユーザーのどちらにも、新たな視点とスキルを提供します。
(こんな方におすすめ)
・すでにTerraform、AWS CDKを利用している人。AWSにおいてIaCをこれから始める人
(目次)
第1章 クラウドとInfrastructure as Code
1.1 クラウドとその利点
1.2 AWSサービスとリソース
1.3 Infrastructure as Code(IaC)
1.4 AWSのIaCのためのツール
1.5 CloudTrailを活用したアクションの実行ログの追跡
1.6 本書の構成
第2章 IaC環境の構築
2.1 AWS CLIのインストール
2.2 AWS IAM Identity Centerとその設定
2.3 Terraformのインストール
2.4 CDKのインストールとブートストラップ
2.5 開発環境・ツール
2.6 まとめ
第3章 [体験]IaCによるリソースのデプロイ
3.1 題材
3.2 AWSマネジメントコンソールによるリソースのデプロイ
3.3 Terraformによるリソースのデプロイ
3.4 CloudFormationによるリソースのデプロイ
3.5 CDKによるリソースのデプロイ
3.6 リソースの属性を変更する
3.7 IaCで構築したリソースの削除
3.8 まとめ
第4章 Terraform詳細解説
4.1 Terraformによるリソースのデプロイの基本的な流れ
4.2 Terraformのコンフィグファイルの記述
4.3 Terraformのコードの構成単位
4.4 ルートモジュールの記述
4.5 子モジュールの記述
4.6 子モジュールとその呼び出し
4.7 コンフィグファイルの記述に便利なその他の機能
4.8 Terraformのモジュールの配置
4.9 Terraformのコマンド
4.10 利用するTerraformやプロバイダのバージョン更新
4.11 まとめ
第5章 AWS CDK詳細解説
5.1 CDKによるリソースのデプロイの基本的な流れ
5.2 CDK最初の一歩:CDKプロジェクトの作成
5.3 初期のディレクトリ構成
5.4 Node.jsアプリとしてのCDK
5.5 リソースの記述とデプロイ
5.6 CDKのコンストラクタとツリー構造
5.7 スタックのコンストラクタ
5.8 複数の環境へのデプロイ
5.9 cdk.context.json
5.10 タグ
5.11 エスケープハッチとrawオーバーライド
5.12 スタック間の参照
5.13 CDKのスナップショットテスト
5.14 ブートストラップの役割
5.15 CloudFormationのスタックの操作に失敗したとき
5.16 まとめ
第6章 VPCのIaCによる記述
6.1 VPCを構成するリソース
6.2 構築するVPCの仕様
6.3 TerraformによるVPCの記述
6.4 CDKによるVPCの記述
6.5 まとめ
第7章 ECSサービスのIaCによる記述
7.1 構築するECSサービスの仕様
7.2 デプロイするアプリの仕様とコード
7.3 Terraformによるリソースの記述
7.4 CDKによるリソースの記述
7.5 まとめ
第8章 Terraform & AWS CDK注意すべき相違点
8.1 手動で変更されたリソースの差分検出
8.2 実行計画(差分)作成プロセス
8.3 差分表示のプロセス
8.4 既存のリソースの参照
8.5 IaCの管理下からリソースを除外する
8.6 リソースの置換と処理順序
8.7 まとめ
第9章 既存リソースのインポート
9.1 既存のリソースのインポートの必要性
9.2 題材
9.3 Terraformにおけるインポート
9.4 CDKにおけるインポート
9.5 CloudFormationからCDKへの移行
9.6 まとめ
第10章 Lambda関数のデプロイ
10.1 Lambda関数のデプロイ
10.2 題材
10.4 Terraformを用いたアセット分離戦略によるLambda関数のデプロイ
10.5 CDKを用いたアセット分離戦略によるLambda関数のデプロイ
10.6 アセット統合戦略によるLambda関数のデプロイ
10.7 CDKを用いたアセット統合戦略によるLambda関数のデプロイ
10.8 Terraformを用いたアセット統合戦略によるLambda関数のデプロイ
10.9 まとめ
第11章 IaCにおけるLambda関数の活用
11.1 CloudFormation(CDK)でLambda関数を活用する仕組み
11.3 カスタムリソースの最初の実践:Lambdaに渡されるイベントの記録
11.4 カスタムリソースの更新と物理ID
11.5 イベントタイプによって挙動が異なるLambda関数の例
11.6 カスタムリソースプロバイダの活用
11.7 TerraformにおけるLambda関数の活用
11.8 まとめ
続きを読む
amazon.co.jp
詳解 Terraform 第3版 ―Infrastructure as Codeを実現する
本書は、Terraformのシンプルな宣言的表現によって、コマンド操作でインフラをデプロイし管理する方法を豊富なサンプルコードを使って解説します。
Terraformがインフラの状態をどのように管理し、ファイルのレイアウト、分離、ロックにどのように影響するかを学びます。またTerraformを使ったサーバクラスタやロードバランサ、データベースのデプロイ、Terraformモジュールでの再利用可能なインフラの作成、ゼロダウンタイムデプロイを実現するための高度なTerraformの文法を解説します。さらにTerraformの各種ファイルにスケーラビリティを持たせた状態で管理する方法や、パスワードなどの機密情報をTerraformでうまく管理する方法、テストまでを詳述します。
Terraformの基本から、大規模なトラフィックと多数の開発者チームをサポートするフルスタックの運用までを包括的に学ぶ本書は、開発者、システム管理者必携の一冊です。Terraformバージョン1.0以降対応。
amazon.co.jp