除了視需要執行修補工作,您可能還想建立修補部署,讓修補工作根據設定的時間表自動執行。
每個修補程式部署可以設定一次性排程,在特定日期和時間執行修補工作,也可以設定週期性排程,在指定的間隔執行修補工作。
執行個體篩選器可讓您同時修補多個執行個體。這些篩選器會在個別修補作業執行時套用。這樣就能確保即時擷取專案中的變更。舉例來說,假設您建立修補程式部署作業,以便從現在起兩週內,將修補程式套用至區域 asia-souteast1-b
中的所有執行個體。在建立修補程式時,您在該區域有 20 個執行個體,但幾天後,有 40 個新執行個體加入該區域。由於篩選器會在修補程式開始時套用,因此會更新所有 60 個執行個體。這樣一來,您就能新增及移除執行個體,而無須更新修補程式部署時程。
事前準備
- 查看 OS Config 配額。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST 安排修補工作。
權限
專案擁有者具備建立及管理修補程式部署作業的完整存取權。您必須授予其他使用者權限,您可以授予下列精細角色:
roles/osconfig.patchDeploymentAdmin
:包含建立、刪除、取得及列出修補程式部署作業的權限。roles/osconfig.patchDeploymentViewer
:包含取得及列出修補程式部署作業的唯讀存取權。
舉例來說,如要授予使用者管理員修補程式部署權限,請執行下列指令:
gcloud projects add-iam-policy-binding project-id \ --member user:user-id@gmail.com \ --role roles/osconfig.patchDeploymentAdmin
更改下列內容:
project-id
:專案 ID。user-id
:使用者的 Google Workspace 使用者名稱。
建立修補程式部署作業
建立修補程式部署作業時,修補程式部署作業的名稱必須符合下列命名規則:
- 每個名稱在專案中不得重複
- 只能包含小寫英文字母、數字和連字號
- 以英文字母開頭
- 結尾須為數字或英文字母
- 長度介於 1 至 63 個字元之間
在 Google Cloud CLI 和 REST 中,修補程式部署作業的名稱稱為 patch-deployment-id
。
開始部署修補程式後,您可以使用修補程式資訊主頁監控修補程式。修補工作開始後,系統大約需要 30 分鐘才能在資訊主頁上填入資料。
主控台
- 在 Google Cloud 控制台中依序前往「Compute Engine」 >「VM Manager」 >「Patch」頁面。
- 按一下「新增修補程式部署作業」。
在「目標 VM」部分中,選取含有要修補的 VM 的區域。你也可以選擇選取所有區域。
舉例來說,如要修補位於所選可用區的特定 VM,請輸入類似下列的名稱和標籤篩選條件:
- 名稱前置字串:
test-
- 標籤:
env=dev
和app=web
- 名稱前置字串:
在「修補程式設定」部分中,設定修補程式。
- 指定修補程式的「名稱」。
- 選取作業系統的必要更新。詳情請參閱「作業系統修補作業包含的內容」。
在「Scheduling」部分,完成下列操作:
- 選取時間表。您可以安排一次性修補工作或週期性修補工作。
- (選用) 設定時間長度或維護期間。
在「Rollout options」部分,設定修補程式發布選項:
- 選取要一次修補一個可用區,還是要同時修補多個可用區。
- 設定中斷預算。中斷預算是指在一個區域中,您希望修補程序一次中斷的 VM 數量或百分比。
(選用) 在「進階選項」部分,您可以完成下列工作:
- 選取重新啟動選項。
- 上傳修補前和修補後指令碼。如要進一步瞭解修補前和修補後指令碼,請參閱「指定修補前和修補後指令碼」。
按一下「部署」。
gcloud
使用 os-config patch-deployments create
指令建立修補程式部署。
gcloud compute os-config patch-deployments create patch-deployment-id \ --file patch-deployment-file
更改下列內容:
patch-deployment-id
:修補程式部署名稱。patch-deployment-file
:包含修補程式部署設定的 YAML 或 JSON 檔案路徑。
範例修補程式部署 YAML 檔案
您可以使用下列 YAML 檔案範例,為區域 us-west2-b
和 us-west2-c
中的所有執行個體建立週期性排程。週期性排程的規格如下:
- 開始日期為 2019 年 1 月 9 日晚上 7 點 30 分
- 結束日期為 2020 年 1 月 9 日晚上 7 點 30 分
- 使用的時區為「America/Los_Angeles」
- 每週星期二執行
instanceFilter: zones: - us-west2-b - us-west2-c recurringSchedule: frequency: WEEKLY weekly: dayOfWeek: TUESDAY timeOfDay: hours: 19 minutes: 30 timeZone: id: America/Los_Angeles startTime: '2019-09-01T12:00:00Z' endTime: '2020-09-01T12:00:00Z'
REST
在 API 中建立 POST
要求,以建立新的修補程式部署作業。您必須明確定義所有必要的設定欄位,如 patchDeployments.create
API 說明文件所述。舉例來說,包含最少必要欄位 (執行個體篩選器和排程) 的修補部署作業如下所示。請將 project-id
替換為您的專案 ID。
POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute { "instanceFilter": instance-filter // Add one of the following parameters: "recurringSchedule": schedule "oneTimeSchedule": schedule }
更改下列內容:
project-id
:您的專案 ID。instance-filter
:所需的篩選器參數。如要進一步瞭解執行個體篩選器,請參閱「執行個體篩選器」。schedule
:提供oneTimeSchedule
或recurringSchedule
參數,詳細說明排程參數,例如執行修補工作日期、時間和頻率。
範例
範例 1:建立一次性排程,在 2020 年 1 月 10 日凌晨 12 點 (世界標準時間) 執行修補工作,並針對區域 us-west2-b
和 us-west2-c
中的所有執行個體執行。
{ "instanceFilter":{ "zones":[ "us-west2-b", "us-west2-c" ] }, "oneTimeSchedule": { "executeTime": "2020-01-10T00:00:00Z" } }
範例 2:為 us-west2-b
和 us-west2-c
區域中的所有執行個體建立週期性排程。週期性排程的規格如下:
- 開始日期為 2019 年 1 月 9 日晚上 7 點 30 分
- 結束日期為 2020 年 1 月 9 日晚上 7 點 30 分
- 使用的時區為「America/Los_Angeles」
- 每週星期二執行
POST https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments { "instanceFilter":{ "zones":[ "us-west2-b", "us-west2-c" ] }, "recurringSchedule":{ "frequency":"WEEKLY", "weekly":{ "dayOfWeek":"TUESDAY" }, "timeOfDay":{ "hours":19, "minutes":30 }, "timeZone":{ "id":"America/Los_Angeles" }, "startTime":"2019-09-01T12:00:00Z", "endTime":"2020-09-01T12:00:00Z" } }
列出修補程式部署作業
主控台
- 在 Google Cloud 控制台中依序前往「Compute Engine」 >「VM Manager」 >「Patch」頁面。
- 選取「排定部署」分頁標籤。
gcloud
使用 os-config patch-deployments list
指令列出修補程式部署作業。
gcloud compute os-config patch-deployments list
這個指令會傳回所有修補程式部署作業。輸出內容會類似以下內容:
NAME LAST_RUN NEXT_RUN FREQUENCY first-deployment 2019-12-18T00:07:00.738Z --- Once: Scheduled for 2019-12-18T00:07:00.000Z my-deployment1 2020-01-05T14:00:00.228Z 2020-01-12T14:00:00Z Recurring - Weekly my-deployment2 --- 2020-01-15T05:30:00Z Recurring - Monthly on specific date(s)
您可以使用更多旗標來限制及設定搜尋格式。舉例來說,如要列出第 2 頁的頭 10 個修補程式部署作業,請執行下列指令。請將 project-id
替換為您的專案 ID。
gcloud compute os-config patch-deployments list --limit 10 --page-size 2
REST
在 API 中,建立目標為 patchDeployments.list
方法的 GET
要求。請將 project-id
替換為您的專案 ID。
GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments
說明修補程式部署作業
主控台
- 在 Google Cloud 控制台中依序前往「Compute Engine」 >「VM Manager」 >「Patch」頁面。
- 選取「排定部署」分頁標籤。
- 按一下要查看的部署名稱。
gcloud
使用 os-config patch-deployments describe
指令說明修補程式部署作業。將 patch-deployment-id
替換為修補程式部署的名稱。
gcloud compute os-config patch-deployments describe patch-deployment-id
REST
在 API 中,建立目標為 patchDeployments.get
方法的 GET
要求。
GET https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id
更改下列內容:
project-id
:您的專案 ID。patch-deployment-id
:修補程式部署名稱。
刪除修補程式部署作業
主控台
- 在 Google Cloud 控制台中依序前往「Compute Engine」 >「VM Manager」 >「Patch」頁面。
- 選取「排定部署」分頁標籤。
- 按一下要刪除的部署名稱。
- 按一下「刪除這項排程」。
gcloud
使用 os-config patch-deployments delete
指令刪除修補程式部署作業。將 patch-deployment-id
替換為修補程式部署的名稱。
gcloud compute os-config patch-deployments delete patch-deployment-id
REST
在 API 中建立目標為 patchDeployments.delete
方法的 DELETE
要求。
DELETE https://osconfig.googleapis.com/v1/projects/project-id/patchDeployments/patch-deployment-id
更改下列內容:
project-id
:您的專案 ID。patch-deployment-id
:修補程式部署名稱。