Terraform を使用して Cloud Build リソースをプロビジョニングする

Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。Google Cloud 用の Terraform プロバイダを使用すると、Cloud Build などの Google Cloud リソースをプロビジョニングして管理できます。

Terraform の仕組み

Terraform には宣言型で構成指向の構文があり、これを使用して、Google Cloud プロジェクトにプロビジョニングするインフラストラクチャを記述できます。1 つまたは複数の Terraform 構成ファイルで構成を作成し、Terraform CLI を使用して、この構成を Cloud Build リソースに適用できます。

以降のステップでは、Terraform の仕組みについて説明します。

  1. Terraform 構成ファイルに、プロビジョニングするインフラストラクチャを記述します。インフラストラクチャのプロビジョニング方法を記述するコードを記述する必要はありません。Terraform がインフラストラクチャをプロビジョニングします。
  2. terraform plan コマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。
  3. 次に、terraform apply コマンドを実行します。これにより、次のアクションが実行されます。
    1. 対応する Cloud Build API をバックグラウンドで呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
    2. Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースを実際のインフラストラクチャのリソースにマッピングする JSON ファイルです。Terraform は、このファイルを使用してインフラストラクチャの最新状態の記録を保持し、リソースを作成、更新、破棄するタイミングを決定します。
    3. terraform apply を実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャとコードと比較し、必要に応じて更新を行います。
      • 構成ファイルで定義されているリソース オブジェクトが状態ファイル内に存在しない場合は、Terraform によって作成されます。
      • リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
      • 状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。

    Cloud Build の Terraform ベースのガイド

    次の表に、Cloud Build のすべての Terraform ベースの入門ガイドとチュートリアルを示します。

    ガイド Details(詳細)
    GitHub リポジトリに接続する このガイドでは、Terraform を使用して GitHub リポジトリを 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 このモジュールは、Cloud Foundation Toolkit(CFT)の使用を開始するために必要なすべてのリソースと権限を作成し、Google Cloud 組織をブートストラップするのに役立ちます。基盤コードに Cloud Build と Cloud Source Repositories を使用するユーザー向けに、このモジュールには、必要なすべてのリソースをブートストラップするサブモジュールが含まれています。

    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

    次のステップ