排定修補工作

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

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

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

事前準備

  • 查看 OS 設定配額。
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

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

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。

  • 設定預設地區和區域。
  • REST

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

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

您可以使用 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 分鐘才會填入資料。

主控台

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

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

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

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

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

    1. 指定修補程式的「名稱」。
    2. 選取作業系統的必要更新。詳情請參閱「OS 修補工作包含哪些內容」。
  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-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"
  }
}

列出修補程式部署作業

主控台

  1. 在 Google Cloud 控制台中,依序前往「Compute Engine」 >「VM 管理員」 >「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 管理員」 >「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 管理員」 >「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:修補程式部署作業名稱。

後續步驟