このページでは、既存のリポジトリと Infrastructure Manager を使用して Google Cloud リソースのデプロイを自動化するために Cloud Build トリガーを設定するプロセスについて説明します。
Infra Manager が Git リポジトリに接続すると、プル リクエストはデプロイのプレビューを呼び出し、コミットはデプロイのプレビューの作成またはデプロイの更新を呼び出します。
始める前に
- Infra Manager が有効になっていることを確認します。
- デプロイメントの作成に必要な IAM 権限があることを確認します。
roles/config.admin
- 必要な権限を持つサービス アカウントがあることを確認します。詳細については、サービス アカウントを構成するをご覧ください。
- Terraform 構成を含む既存の Git リポジトリを特定します。このページで説明する自動化を設定するときに、Infra Manager がリソースの更新に使用する Terraform 構成です。
- 推奨: Git リポジトリにブランチ保護を設定します。
Google Cloud リソースのデプロイを自動化する
次の手順では、Git リポジトリに保存されている Terraform 構成のプレビューとデプロイを自動化するために必要な設定について説明します。Terraform 構成のデプロイは、既存のデプロイのリビジョンにすることができます。リビジョンにより、プロビジョニングされた Google Cloud リソースが削除または置き換えられることがあります。
設定が完了すると、Git リポジトリの pull リクエストにより、Infra Manager でデプロイのプレビューが作成されます。pull リクエストが統合されると、Infra Manager は Terraform 構成を自動的にデプロイします。
im_cloudbuild_workspace
モジュールは、次のような複数のリソースを作成します。
- Cloud Build リポジトリ接続。
- pull リクエストの作成時に呼び出される Cloud Build トリガー。このトリガーにより、Infra Manager はリポジトリ内の Terraform 構成を使用してプレビュー デプロイメントを作成します。
- pull リクエストが Git リポジトリと統合されたときに呼び出される Cloud Build トリガー。このトリガーにより、Infra Manager はリポジトリ内の Terraform 構成を使用してデプロイを作成または更新します。
リポジトリが更新されたときに Terraform 構成のデプロイを自動化するには:
- ご利用の GitHub アカウントか所有する組織に Cloud Build GitHub アプリをインストールします。
-
トークンに有効期限が設定されていないことを確認し、GitHub に指示が表示されたら、
repo
とread:user
の権限を選択します。アプリが組織にインストールされている場合は、read:org
権限も選択してください。個人用のアクセス トークンを生成したら、そのトークンは安全な場所に保存します。生成したトークンは、次の手順で使用します。
im_cloudbuild_workspace
モジュールを Git リポジトリ内のmain.tf
ファイルにコピーします。module "im-workspace" { source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace" version = "~> 7.0" project_id = PROJECT_ID deployment_id = DEPLOYMENT_ID im_deployment_repo_uri = GIT_REPO im_deployment_ref = REF github_app_installation_id = GIT_APP_ID github_personal_access_token = TOKEN }
以下のように置き換えます。
- PROJECT_ID: Infrastructure Manager が実行されるプロジェクト ID。
- DEPLOYMENT_ID: 指定したデプロイ ID。デプロイ ID の制約について詳しくは、デプロイ名をご覧ください。
- GIT_REPO: Git リポジトリの URI。
- REF: 構成の Git リファレンス。参照は省略可能です。参照を指定しない場合は、Git リポジトリのデフォルトで構成されたブランチが使用されます。
- GIT_APP_ID: pull リクエスト トリガーと push リクエスト トリガーに使用される Cloud Build GitHub アプリのインストール ID。
- TOKEN: GitHub リポジトリの個人用アクセス トークン。指定されている場合は、Secret Manager 内にシークレットを作成します。
im_cloudbuild_workspace
モジュールを使用してデプロイメントを作成します(または既存のデプロイメントを更新します)。gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo=GIT_REPO \ --git-source-directory=DIRECTORY \ --git-source-ref=REF
次のように置き換えます。
- PROJECT_ID: Infrastructure Manager が実行されるプロジェクト ID。
- LOCATION: Infra Manager が実行されるロケーション。ロケーションの一覧については、Infrastructure Manager のロケーションをご覧ください。
- DEPLOYMENT_ID: 指定したデプロイ ID。デプロイ ID の制約について詳しくは、デプロイ名をご覧ください。
- SERVICE_ACCOUNT: Infra Manager の呼び出しに使用するサービス アカウントの名前。
- SERVICE_ACCOUNT_PROJECT_ID は、サービス アカウントのプロジェクト ID です。通常、これは Infrastructure Manager が実行されているプロジェクトと同じです。
- GIT_REPO: 公開 Git リポジトリ。
- DIRECTORY: Terraform 構成を含むディレクトリ。
- REF: 構成の Git リファレンス。参照は省略可能です。参照を指定しない場合は、Git リポジトリのデフォルトで構成されたブランチが使用されます。
Git リポジトリが Infra Manager に正しく接続されていることを確認するには、リポジトリに pull リクエストを作成します。
フォークされた Terraform 構成の検証結果を確認するには、GitHub で pull リクエストを表示します。
この自動化が設定されたら、Cloud Build トリガーによって次のことが行われます。
- リポジトリに pull リクエストが送信されると、Infra Manager は、Git リポジトリに保存されているフォークされた Terraform 構成を使用してプレビュー デプロイを作成します。
- pull リクエストがリポジトリに統合されると、Infra Manager は、Git リポジトリに保存されているフォークされた Terraform 構成を使用してデプロイを更新します。
次のステップ
- Cloud Build を使用して、ビルドトリガーのビルド結果を表示します。
- Infra Manager でデプロイされたリソースを表示します。
- Infrastructure Manager の監査ロギングを使用して、 Google Cloud リソースをモニタリングします。