排定修補工作

除了視需要執行修補程式工作,您也可以建立修補程式部署作業,讓修補程式工作根據設定的排程自動執行。

每個修補程式部署作業都可以設定一次性排程,在特定日期和時間執行修補程式工作,也可以設定週期性排程,在指定間隔執行修補程式工作。

執行個體篩選器可讓您同時修補多個執行個體。這些篩選器會在每個修補程式作業執行時套用。確保系統能即時擷取專案變更。 舉例來說,假設您建立修補程式部署作業,要從兩週後開始,將修補程式套用至區域 asia-souteast1-b 中的所有執行個體。建立修補程式時,區域中有 20 個執行個體,但幾天後,區域中新增了 40 個執行個體。由於篩選器是在修補程式開始時套用,因此所有 60 個執行個體都會更新。這樣一來,您就能新增及移除執行個體,不必更新修補程式部署時間表。

事前準備

  • 查看 OS 設定配額
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 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

    1. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

您可以使用 Google Cloud 控制台Google Cloud CLIREST,排定修補程式工作。

權限

專案擁有者有權建立及管理修補程式部署作業。 如要授予其他使用者權限,您可以授予下列其中一項精細角色:

  • 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 分鐘,資訊主頁才會填入資料。

主控台

  1. 在 Google Cloud 控制台中,依序前往「Compute Engine」 >「VM Manager」 >「Patch」(修補程式) 頁面。

    前往「Patch」(修補程式) 頁面

  2. 按一下「新增修補程式部署作業」
  3. 在「目標 VM」部分中,選取要修補的 VM 所在的區域。你也可以選擇選取所有區域。

    舉例來說,如要修補所選可用區中的特定 VM,請輸入名稱和標籤篩選條件,類似於下列範例:

    • 名稱前置字元:test-
    • 標籤:「env=dev」和「app=web
  4. 在「修補程式設定」部分中,設定修補程式。

    1. 指定修補程式的「名稱」
    2. 選取作業系統的必要更新。詳情請參閱「作業系統修補程式工作包含哪些內容」。
  5. 在「排程」部分中,完成下列操作:

  6. 在「推出選項」部分,設定修補程式推出選項

    • 選取要一次修補一個可用區,還是同時修補多個可用區。
    • 設定中斷預算。中斷預算是指您希望修補程序一次中斷的區域 VM 數量或百分比。
  7. (選用) 在「Advanced options」(進階選項) 部分,您可以完成下列工作:

  8. 按一下 [Deploy] (部署)

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-bus-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:提供 oneTimeSchedulerecurringSchedule 參數,詳細說明排程參數,例如執行修補程式工作的日期、時間和頻率。

範例

範例 1:建立一次性排程,在 2020 年 1 月 10 日世界標準時間凌晨 12 點,對 us-west2-bus-west2-c 區域中的所有執行個體執行修補程式工作。

{
 "instanceFilter":{
   "zones":[
     "us-west2-b",
     "us-west2-c"
   ]
 },
 "oneTimeSchedule": {
   "executeTime": "2020-01-10T00:00:00Z"
 }
}

範例 2:為可用區 us-west2-bus-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"
  }
}

列出修補程式部署作業

主控台

  1. 在 Google Cloud 控制台中,依序前往「Compute Engine」 >「VM Manager」 >「Patch」(修補程式) 頁面。

    前往「Patch」(修補程式) 頁面

  2. 選取「排定的部署作業」分頁標籤。

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

描述修補程式部署作業

主控台

  1. 在 Google Cloud 控制台中,依序前往「Compute Engine」 >「VM Manager」 >「Patch」(修補程式) 頁面。

    前往「Patch」(修補程式) 頁面

  2. 選取「排定的部署作業」分頁標籤。
  3. 按一下要查看的部署作業名稱。

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:修補程式部署作業名稱。

刪除修補程式部署作業

主控台

  1. 在 Google Cloud 控制台中,依序前往「Compute Engine」 >「VM Manager」 >「Patch」(修補程式) 頁面。

    前往「Patch」(修補程式) 頁面

  2. 選取「排定的部署作業」分頁標籤。
  3. 按一下要刪除的部署作業名稱。
  4. 按一下「刪除這項排程」

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:修補程式部署作業名稱。

後續步驟