Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。Terraform provider for Google Cloud を使用して、Cloud Build などの Google Cloud リソースをプロビジョニングして管理できます。
このページでは、Cloud Build で Terraform を使用する方法について説明します。Terraform の仕組みの概要と、Terraform と Google Cloudの使用を開始するためのリソースも紹介します。また、Cloud Build の Terraform リファレンス ドキュメント、コード例、Terraform を使用して Cloud Build リソースをプロビジョニングするガイドへのリンクも用意されています。
Google Cloud用 Terraform の使用を開始する手順については、Terraform をインストールして構成するまたは Google Cloud 用 Terraform クイックスタートをご覧ください。
Terraform の仕組み
Terraform には宣言型で構成指向の構文があり、これを使用して、 Google Cloud プロジェクトにプロビジョニングするインフラストラクチャを記述できます。1 つまたは複数の Terraform 構成ファイルで構成を作成し、Terraform CLI を使用して、この構成を Cloud Build リソースに適用できます。
以降のステップでは、Terraform の仕組みについて説明します。
- プロビジョニングするインフラストラクチャを Terraform 構成ファイルに記述します。インフラストラクチャのプロビジョニング方法を記述するコードは必要ありません。Terraform がインフラストラクチャをプロビジョニングします。
terraform plan
コマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。-
次に、
terraform apply
コマンドを実行します。これにより、次のアクションが実行されます。- バックグラウンドで、対応する Cloud Build API を呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
- Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースと実際のインフラストラクチャ内のリソースとのマッピングを行う JSON ファイルです。Terraform は、このファイルを使用してインフラストラクチャの最新状態を記録し、リソースを作成、更新、破棄するタイミングを決定します。
-
terraform apply
を実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャをコードと比較し、必要に応じて更新を行います。- 構成ファイルで定義されたリソース オブジェクトが状態ファイルに存在しない場合、Terraform はリソース オブジェクトを作成します。
- リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
- 状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。
Cloud Build 用の Terraform リソース
リソースは、Terraform 言語の基本要素です。各リソース ブロックは、仮想ネットワークやコンピューティング インスタンスなど、1 つ以上のインフラストラクチャ オブジェクトを記述します。
次の表に、Cloud Build で使用可能な Terraform リソースを示します。
Cloud Build サービス | Terraform リソース | データソース |
---|---|---|
Cloud Build v1 | google_cloudbuild_trigger
|
|
Cloud Build v2 | google_cloudbuildv2_connection_iam_policy |
Cloud Build の Terraform ベースのガイド
次の表に、Cloud Build の Terraform ベースのハウツー ガイドとチュートリアルを示します。
ガイド | 詳細 |
---|---|
GitHub リポジトリに接続する | このガイドでは、Terraform を使用して GitHub リポジトリを Cloud Build に接続する方法について説明します。 |
GitHub Enterprise ホストに接続する | このガイドでは、Terraform を使用して GitHub Enterprise ホストを Cloud Build に接続する方法について説明します。 |
GitHub Enterprise リポジトリに接続する | このガイドでは、Terraform を使用して GitHub Enterprise リポジトリを Cloud Build に接続する方法について説明します。 |
GitLab Enterprise Edition ホストへの接続 | このガイドでは、Terraform を使用して GitLab Enterprise エディション ホストを Cloud Build に接続する方法について説明します。 |
GitLab Enterprise Edition リポジトリへの接続 | このガイドでは、Terraform を使用して GitLab Enterprise Edition リポジトリを Cloud Build に接続する方法について説明します。 |
Bitbucket データセンター ホストに接続する | このガイドでは、Terraform を使用して Bitbucket Data Center ホストを Cloud Build に接続する方法について説明します。 |
Bitbucket データセンター リポジトリに接続する | このガイドでは、Terraform を使用して Bitbucket Data Center リポジトリを Cloud Build に接続する方法について説明します。 |
Bitbucket Cloud ホストに接続する | このガイドでは、Terraform を使用して Bitbucket Cloud ホストを Cloud Build に接続する方法について説明します。 |
Bitbucket Cloud リポジトリに接続する | このガイドでは、Terraform を使用して Bitbucket Cloud リポジトリを Cloud Build に接続する方法について説明します。 |
Compute Engine にデプロイする | このガイドでは、Cloud Build と Terraform を使用して Compute Engine マネージド インスタンス グループ(MIG)でダウンタイムなしの Blue/Green デプロイを行う方法について説明します。 |
Cloud Build の Terraform モジュールとブループリント
モジュールとブループリントを使用すると、 Google Cloud リソースの大規模なプロビジョニングと管理を自動化できます。モジュールとは、Terraform リソースを論理的に抽象化する、再利用可能な一連の Terraform 構成ファイルのことです。ブループリントは、特定のソリューションを実装および文書化した、モジュールとポリシーのパッケージです。このパッケージはデプロイして再利用できます。
次の表に、Cloud Build に関連するモジュールとブループリントを示します。
モジュールまたはブループリント | 詳細 |
---|---|
安全な CI / CD パイプライン | このモジュールにより、 Google Cloud のお客様は、セキュリティのシフトレフトで概説されている機能の多くを実装して、安全な CI/CD パイプラインを迅速にデプロイすることができます。 |
terraform-google-bootstrap |
このモジュールは、 Google Cloud 組織をブートストラップし、Cloud Foundation Toolkit(CFT)の使用を開始するために必要なすべてのリソースと権限を作成します。基盤のコードに Cloud Build と Cloud Source Repositories を使用するユーザーのために、このモジュールには、必要なすべてのリソースをブートストラップするサブモジュールが含まれています。 |
次のステップ
- Cloud Build の Terraform コードサンプル
- Google Cloud の Terraform に関するドキュメント
- HashiCorp のGoogle Cloud プロバイダのドキュメント
- Google Cloudの Infrastructure as Code