排定修補工作

除了視需要執行修補工作,您也可以建立修補部署作業,讓修補工作按照設定的時間表自動執行。

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

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

事前準備

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

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 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. 按一下「New patch deployment」(新增修補程式部署作業)。
  3. 在「Target VMs」(目標 VM) 區段中,選取要修補的 VM 所在可用區。也可以選擇選取所有可用區。

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

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

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

  6. 在「Rollout options」(推出選項) 區段中,設定修補程式推出選項:

    • 選取要一次修補一個可用區,還是同時修補多個可用區。
    • 設定中斷預算。中斷預算是指在一個可用區中,您希望修補程序一次中斷的 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)

您可以使用更多旗標來限制及設定搜尋格式。舉例來說,如要列出前 10 個修補程式部署作業,每頁顯示 2 個,請執行下列指令。將 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:修補程式部署作業名稱。

疑難排解

如果您在環境中排定或管理修補程式部署作業時遇到問題,請參閱下列資源:

後續步驟