您可以使用 Cloud Scheduler 和 Cloud Build 自動建構觸發條件,排定週期性 Image Builder 執行作業。排定自訂 OS 映像檔建構作業後,Cloud Build 會自動使用作業系統修補程式和組織安全性政策更新基準映像檔,不需手動介入。
事前準備
- 完成「準備環境」中的環境設定步驟。
-
如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Cloud de Confiance by S3NS 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
gcloud
-
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud init
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
設定 gcloud CLI,使用您的聯合身分。
詳情請參閱「 使用聯合身分登入 gcloud CLI」。
-
為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果傳回驗證錯誤,請確認您已 使用聯合身分登入 gcloud CLI。
Go
如要在本機開發環境中使用本頁面的 Go 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 為本機開發環境設定驗證機制」。
必要的角色
如要取得建立觸發條件及排定建構作業所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Cloud Build 編輯者 (
roles/cloudbuild.builds.editor) - Cloud Scheduler 工作執行者 (
roles/cloudscheduler.jobRunner) 或 Cloud Scheduler 管理員 (roles/cloudscheduler.admin) - 服務帳戶使用者 (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
建立排定的建構管道
您可以使用 gcloud CLI 或 Go 用戶端程式庫,設定週期性映像檔建構作業:
gcloud
如要使用 gcloud CLI 排定週期性 OS 映像檔建構作業,請完成下列步驟:
執行
gcloud builds triggers create manual指令,建立指定目標cloudbuild.yaml檔案的手動 Cloud Build 自動建構觸發條件。由於 Cloud Scheduler 是手動叫用這項觸發條件,而非在存放區事件中叫用,因此請勿指定推送或提取要求篩選器:gcloud builds triggers create manual \ --name="TRIGGER_NAME" \ --region=REGION \ --build-config=CLOUDBUILD_YAML_PATH \ --project=PROJECT_ID執行
gcloud builds triggers describe指令,擷取為新觸發條件產生的專屬 ID (trigger_id):gcloud builds triggers describe TRIGGER_NAME \ --region=REGION \ --format="value(id)" \ --project=PROJECT_ID如要建立 Cloud Scheduler 工作,根據所需的 Unix cron 排程 (例如使用
'0 6 * * 1'在每週一上午 6:00) 向 Cloud Build API (projects.locations.triggers.run) 傳送HTTP POST要求,請執行gcloud scheduler jobs create http指令:gcloud scheduler jobs create http JOB_NAME \ --schedule="CRON_SCHEDULE" \ --uri="https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/triggers/TRIGGER_ID:run" \ --message-body="{}" \ --oauth-service-account-email="SERVICE_ACCOUNT_EMAIL" \ --location=REGION \ --project=PROJECT_ID
更改下列內容:
TRIGGER_NAME:手動 Cloud Build 觸發條件的名稱,例如weekly-ubuntu-builder。REGION:要建立觸發條件的區域,例如us-central1。CLOUDBUILD_YAML_PATH:本機目錄中cloudbuild.yaml檔案的路徑,例如cloudbuild.yaml。PROJECT_ID:您的專案 ID。JOB_NAME:Cloud Scheduler cron 工作的名稱,例如weekly-custom-os-patching。CRON_SCHEDULE:Unix cron 排程運算式,例如'0 6 * * 1'。TRIGGER_ID:為觸發條件產生的專屬 ID (trigger_id)。SERVICE_ACCOUNT_EMAIL:授權 Cloud Scheduler 叫用觸發條件的服務帳戶電子郵件。這個服務帳戶需要roles/cloudbuild.builds.editor權限。
Go
如要使用 Cloud Build 和 Cloud Scheduler Go 用戶端程式庫,透過程式輔助方式排定管道,請使用 scheduleBuild 函式。
執行這個範例前,請先完成下列必要條件:
- 將
imagebuilder.yaml設定檔上傳至 Cloud Storage bucket,例如gs://STAGING_BUCKET/imagebuilder.yaml。 - 將專案的 Cloud Build 編輯者角色 (
roles/cloudbuild.builds.editor) 和執行建構作業的服務帳戶的服務帳戶使用者角色 (roles/iam.serviceAccountUser),授予排程服務帳戶cloud-build-trigger-scheduler@PROJECT_ID.s3ns.iam.gserviceaccount.com。詳情請參閱 Cloud Build 說明文件中的「排定建構作業」。