將 Cloud Build 自動建構觸發條件連結至 Infrastructure Manager,即可直接從 Git 存放區自動部署基礎架構。在這個工作流程中,提取要求會產生部署預覽,合併的修訂版本則會自動建立或更新部署作業。
事前準備
- 確認已啟用 Infra Manager。
- 請確認您具備建立部署作業所需的 IAM 權限:
roles/config.admin
- 確認您有具備必要權限的服務帳戶。詳情請參閱「設定服務帳戶」。
- 找出包含 Terraform 設定的現有 Git 存放區。 設定本頁所述的自動化功能時,Infra Manager 會使用這項 Terraform 設定更新資源。
- 建議:為 Git 存放區設定分支保護。
自動部署 Google Cloud 資源
以下步驟說明如何設定,自動預覽及部署儲存在 Git 存放區的 Terraform 設定。Terraform 設定的部署作業可以是現有部署作業的修訂版本。修訂版本可能會刪除或取代已佈建的 Google Cloud 資源。
設定完成後,Git 存放區中的提取要求會導致 Infra Manager 建立部署作業的預覽版本。合併提取要求後,Infra Manager 會自動部署 Terraform 設定。
im_cloudbuild_workspace 模組會建立多項資源,包括:
- Cloud Build 存放區連線。
- 建立提取要求時叫用的 Cloud Build 自動建構觸發條件。這個觸發程序會導致 Infra Manager 使用存放區中的 Terraform 設定,建立預覽部署作業。
- 提取要求與 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:用於提取和推送要求觸發條件的 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,請在存放區建立提取要求。
如要查看分叉 Terraform 設定的驗證結果,請在 GitHub 中查看提取要求。
設定好這項自動化作業後,Cloud Build 觸發條件會導致下列情況:
- 向存放區提出提取要求時,Infra Manager 會使用儲存在 Git 存放區的分叉 Terraform 設定,建立預先發布版部署作業。
- 提取要求合併至存放區後,Infra Manager 會使用儲存在 Git 存放區中的 Terraform 設定分支版本,更新部署作業。
後續步驟
- 使用 Cloud Build 查看自動建構觸發條件的建構結果。
- 查看透過 Infra Manager 部署的資源。
- 透過 Infrastructure Manager 稽核記錄監控 Google Cloud 資源。