建立修補工作

您可以使用「修補程式」,對一組虛擬機器 (VM) 執行個體套用作業系統修補程式。

如要將修補程式套用至 VM,請完成下列步驟:

  1. 設定 VM
  2. 執行修補工作

事前準備

  • 查看 OS 設定配額
  • 如要產生 VM 管理員事件的稽核記錄,請啟用資料存取稽核記錄
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 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. 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.

      2. Set a default region and zone.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.

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

限制

  • 您只能為單一 Google Cloud 專案中的 VM 部署及執行修補程式工作。 您無法跨 Google Cloud 專案執行修補程式作業,即使 VM 位於共用 VPC 中也一樣。不過,您可以查看跨專案的修補程式合規資料
  • 根據預設,VM 管理員不會修補屬於代管執行個體群組 (MIG) 的任何 VM。修補這些 VM 時,修補程式工作會回報失敗。建立修補工作時,您可以覆寫這項預設行為。 修補屬於 MIG 的 VM 時,請注意下列限制:
    • MIG 修復 VM 時,會根據執行個體範本重新建立 VM。這可能會導致 VM 回復為未修補狀態。
    • 如果 MIG 啟用自動調整功能,修補 VM 可能會導致非預期的結果。負載下降時,自動調度器會刪除已修補的 VM,並在負載增加時,使用 MIG 的執行個體範本建立新的 VM,且不套用任何修補程式。舉例來說,如果平均 CPU 使用率低於您為自動調度資源指定的目標使用率,MIG 可以在縮減規模時移除部分已修補的 VM。

支援的作業系統

如需支援修補程式的作業系統和版本完整清單,請參閱「作業系統詳細資料」。

設定 VM

如要使用「修補」功能,請完成下列步驟:

  1. 為所有 VM 設定 VM 管理員
  2. 如果是 Windows VM,Google 建議停用 VM 的自動更新。這樣可減少 Windows 自動更新與修補服務之間的衝突。

權限

Google Cloud 專案擁有者有完整存取權,可執行及管理修補程式作業。如要授予其他使用者權限,您可以授予下列其中一項精細角色:

  • roles/osconfig.patchJobExecutor:包含執行、取消、取得及列出修補工作的權限。此外,這個角色也包含查看修補工作執行個體詳細資料的權限。
  • roles/osconfig.patchJobViewer:包含權限,可取得及列出修補程式作業,但只能讀取。此外,也包含查看修補工作執行個體詳細資料的權限。

舉例來說,如要授予使用者執行修補程式作業的權限,請使用下列指令:

gcloud projects add-iam-policy-binding project-id \
    --member user:user-id@gmail.com \
    --role roles/osconfig.patchJobExecutor

更改下列內容:

  • project-id:專案 ID。
  • user-id:使用者的 Google Workspace 使用者名稱。

執行修補工作

您可以使用 Google Cloud 控制台Google Cloud CLIREST 執行修補程式工作。

執行修補工作時,系統會同時在執行個體篩選條件指定的所有執行個體上,開始修補 VM。

開始修補程式工作後,您可以使用修補程式資訊主頁監控修補程式。修補程式作業開始後,大約需要 30 分鐘,資訊主頁才會填入資料。

主控台

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

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

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

    選取區域後,您可以進一步篩選該區域內的 VM。

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

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

    1. 指定修補程式的「名稱」
    2. 選取作業系統的必要更新。詳情請參閱修補程式設定
  5. 在「Scheduling」(排程) 部分中,完成下列操作:

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

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

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

gcloud

使用 os-config patch-jobs execute 指令執行修補程式工作。將 instance-filter 替換為您想要的執行個體篩選條件。如要進一步瞭解執行個體篩選器,請參閱執行個體篩選器

gcloud compute os-config patch-jobs execute instance-filter

如要進一步瞭解套用的更新,請參閱「OS 修補程式作業包含哪些內容」。如要自訂更新,請使用選用旗標

範例

範例 1 如要執行修補程式工作並採用下列設定:

  • 執行個體名稱:instance-1
  • 可用區:us-east1-b
  • 說明:patch for instance-1

    您會執行下列指令:

gcloud compute os-config patch-jobs execute \
    --instance-filter-names="zones/us-east1-b/instances/instance-1" \
    --description "patch for instance-1"

範例 2 假設您想以非同步方式執行修補工作,並採用下列設定:

  • 您必須在專案中的所有執行個體上執行修補程式。
  • 修補程式工作必須在 1 小時 30 分鐘後逾時並停止。
  • 安裝更新後,機器必須根據系統設定重新啟動。
  • 在執行 Apt 的 VM 上,修補作業是透過 apt dist-upgrade 執行。
  • 在執行 Windows 的 VM 上,只套用KB4339284 更新的修補程式。
  • 在執行 Yum 的 VM 上,修補作業是使用 yum update-minimal --security 公用程式完成。

您會執行下列指令:

gcloud compute os-config patch-jobs execute \
    --instance-filter-all \
    --duration="1h30m" --reboot-config="DEFAULT" \
    --apt-dist --windows-exclusive-patches=4339284 \
    --yum-minimal --yum-security \
    --async

REST

在 API 中,建立 POST 要求來執行新的修補作業。您必須透過 patchJobs.execute API 說明文件,明確定義所有必要的設定欄位。

如要進一步瞭解套用的更新,請參閱「OS 修補程式作業包含哪些內容」。如要自訂更新,請使用 PatchConfig 參數

舉例來說,僅含必填欄位的修補程式工作如下。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter": instance-filter
}

更改下列內容:

  • project-id:您的專案 ID。
  • instance-filter:所需的篩選參數。如要進一步瞭解執行個體篩選器,請參閱執行個體篩選器

範例

範例 1 假設您要在位於 us-east1-binstance1 執行個體上執行修補程式工作。在這個範例中,我們新增了說明,並指定工作執行時間為 1 小時 30 分鐘。將 project-id 替換為您的專案 ID。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "description":"patch instance1 in us-east1-b",
  "duration":"5400s",
  "instanceFilter":{
    "instances":[
      "zones/us-east1-b/instances/instance1"
    ]
  }
}

範例 2 下列修補程式工作會選取具有下列設定的 VM:

  • 具有「env=dev」和「app=web」標籤。
  • 位於 asia-east1-basia-east1-c
  • 前置字串為 test-

請將以下指令中的 project-id 替換為您的專案 ID。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter":{
    "groupLabels":[
      {
        "labels":{
          "env":"dev",
          "app":"web"
        }
      }
    ],
    "instanceNamePrefixes":[
      "test-"
    ],
    "zones":[
      "asia-east1-b",
      "asia-east1-c"
    ]
  }
}

範例 3

假設您想執行修補工作,並採用下列設定:

  • 您必須在專案中的所有執行個體上執行修補程式。
  • 修補程式工作必須在 1 小時 30 分鐘後逾時並停止。API 規定時間必須以秒為單位,因此請將此值設為 5400 秒。
  • 安裝更新後,機器必須根據系統設定重新啟動。
  • 在執行 Apt 的 VM 上,修補作業是透過 apt dist-upgrade 執行。
  • 在執行 Windows 的 VM 上,只套用KB4339284 更新的修補程式。
  • 在執行 Yum 的 VM 上,修補作業是使用 yum update-minimal --security 公用程式完成。

您會建立下列要求:

請將以下指令中的 project-id 替換為您的專案 ID。

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
 "duration":"5400s",
 "instanceFilter":{
   "all":true
 },
 "patchConfig":{
   "rebootConfig":"DEFAULT",
   "apt":{
     "type":"DIST"
   },
   "yum":{
     "security":true,
     "minimal":true
   },
   "windowsUpdate":{
     "exclusivePatches":"4339284"
   }
 }
}

執行個體篩選器

您可以使用篩選器指定要納入修補作業的執行個體。修補程式工作支援下列篩選條件:

  • 依名稱篩選:將修補程式工作限制為僅適用於具有特定名稱的執行個體。 執行個體名稱必須使用完整 URI 指定。支援的 URI 格式包括:

    • zones/zone/instances/instance-name
    • projects/project-id/zones/zone/instances/instance-name
    • https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name
  • 依名稱前置字串篩選:將修補程式工作限制為名稱具有特定前置字串的執行個體。

  • 依可用區篩選:將修補程式作業限制在特定可用區的執行個體。

  • 依標籤篩選:將修補程式工作限制在具有特定標籤的執行個體。

您也可以在 instanceFilter 中將 all 欄位設為 true,在 Google Cloud 專案中的所有執行個體上執行修補程式作業。詳情請參閱執行個體篩選器範例

Google Cloud Google Cloud

執行個體篩選器範例

情境 gcloud 篩選器 API 篩選器
專案中的所有執行個體 Google Cloud
--instance-filter-all
{
  "instanceFilter":{
    "all":"true"
  }
}
名稱為 instance1 的執行個體,位於 us-east1-b 區域。
--instance-filter-names="zones/us-east1-b/instances/instance1"
{
  "instanceFilter":{
    "instances":[
      "zones/us-east1-b/instances/instance1"
    ]
  }
}
前置字串為 app- 的執行個體
--instance-filter-name-prefixes="app-"
{
  "instanceFilter":{
    "instanceNamePrefixes":[
      "app-"
    ]
  }
}
位於 us-east1-bus-east1-c 區域的執行個體
--instance-filter-zones="us-east1-b","us-east1-c"
{
  "instanceFilter":{
    "zones":[
      "us-east1-b",
      "us-east1-c"
    ]
  }
}
標籤組合為 env=devapp=web 的執行個體,以及標籤為 env=devapp=worker 的執行個體。
--instance-filter-group-labels="env=dev,app=web"
--instance-filter-group-labels="env=dev,app=worker"
{
  "instanceFilter":{
    "groupLabels":[
      {
        "labels":{
          "env":"dev",
          "app":"web"
        }
      },
      {
        "labels":{
          "env":"dev",
          "app":"worker"
        }
      }
    ]
  }
}

合併執行個體篩選器

您也可以合併執行個體篩選器。舉例來說,如要為前置字串為 test-、位於 us-east1-c 區域,且具有 env=devapp=web 標籤的執行個體執行修補程式工作,請執行下列指令:

gcloud compute os-config patch-jobs execute \
    --instance-filter-name-prefixes="test-" \
    --instance-filter-zones="us-east1-c" \
    --instance-filter-group-labels="env=prod,app=web"

修補程式設定

執行修補程式作業時,您可以指定參數來控管要套用至 VM 的修補程式。修補程式設定參數取決於平台,通常會傳遞至基礎系統更新工具。實際修補程式的來源是 VM 上設定的套件存放區 (Linux) 或 Windows Update 伺服器 (Windows)。

您可以為 VM 指定下列修補程式設定:

  • 如果是 Windows,請指定要套用的修補程式分類 (例如SecurityCritical) 或指定要排除的 KB。 如要進一步瞭解修補程式分類,請參閱 Microsoft 支援說明文件
  • 對於 RHEL、Rocky Linux 和 CentOS,基礎系統為 yum

    • 如要為 RHEL 和 Rocky Linux VM 安裝修補程式,可以指定 securityminimal 套件。
    • 對於 CentOS VM,CentOS yum 存放區中沒有 security 中繼資料。因此更新安全性套件時,您不需要指定 security 選項。如果未指定任何套件,修補程式工作會更新所有套件,包括含有安全性更新的套件。
    • 您也可以排除特定套裝組合。詳情請參閱 yum 說明文件頁面
  • 對於 Debian 和 Ubuntu,基礎系統為 apt。如要為這些 VM 安裝修補程式,可以指定 dist-upgrade 或標準升級。您也可以排除特定套件。詳情請參閱 Debian 說明文件頁面Ubuntu 說明文件頁面

  • 對於 SuSE,底層系統為 zypper,具體來說是使用 zypper 修補程式。針對以這些 VM 為目標的修補程式,您可以指定下列選項:

    • with update:更新修補程式未涵蓋的所有套件
    • with optional:視需要處理選用修補程式
    • 要套用的修補程式類別或嚴重程度

    您也可以排除特定修補程式。

您也可以選擇只安裝核准的修補程式,方法是針對所有支援的作業系統指定這些更新。您可以在這裡輸入核准的套件或修補程式清單。選取這些核准的修補程式後,系統只會安裝核准的套件或修補程式。更新期間,系統會略過所有其他修補程式設定參數。

範例

主控台

  1. 請按照控制台分頁中列出的步驟,建立修補程式工作修補程式部署作業
  2. 在「修補程式設定」部分,選取修補程式工作的參數。
  3. 視需要為修補程式工作或部署作業進行其他設定。
  4. 按一下 [Deploy] (部署)

gcloud

舉例來說,如要在區域 northamerica-northeast1-a 中所有執行個體上執行修補程式工作,並為不同作業系統設定特定修補程式,請執行 gcloud compute os-config patch-jobs execute 指令:

gcloud compute os-config patch-jobs execute \
    --instance-filter-zones="northamerica-northeast1-a" \
    --apt-dist \
    --yum-security \
    --yum-minimal \
    --zypper-categories=security \
    --windows-classifications=critical,security \
    --reboot-config=default

如要進一步瞭解支援的選項,請執行下列指令:

gcloud compute os-config patch-jobs execute --help

REST

舉例來說,如要在可用區 northamerica-northeast1-a 的所有執行個體上執行修補程式作業,並為不同作業系統設定特定修補程式,請執行下列指令:

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute
{
    "instanceFilter":{
        "zones":[
            "northamerica-northeast1-a"
        ]
    },
    "patchConfig":{
        "apt": {
            "type": "dist-upgrade"
        },
        "yum": {
            "security": true,
            "minimal": true
        },
        "zypper": {
            "categories": ["security"]
        },
        "windowsUpdate": {
            "classifications": ["CRITICAL", "SECURITY"]
        },
        "rebootConfig": "DEFAULT"
    }
}

如要進一步瞭解支援的參數,請參閱 PatchConfig API 說明文件。

維護期間

維護期間是指您允許修補程式工作執行的總時間長度。如果修補程式工作未在指定維護時段內完成,就會逾時。

舉例來說,如果您將維護期間設為 60 minutes,系統就不會在開始時間 60 分鐘後啟動新的修補程式工作。部分程序 (例如下載檔案或重新啟動) 可能會在維護期間外執行,但系統不會啟動新的修補工作。

重新啟動選項

執行修補程式工作時,您可以指定修補程式的重新啟動選項。可用的選項如下:

  • 預設:代理程式會檢查各個 OS 的常見信號,藉此判定是否需要重新啟動。修補期間可能會多次重新啟動,且可能在安裝任何修補程式前發生。
  • 一律重新啟動:機器會在更新作業完成後重新啟動。
  • 永不:機器在更新作業完成後不會重新啟動。在某些情況下,這可能表示並非所有修補程式都已完全套用。

修補前和修補後指令碼

執行修補程式工作時,您可以指定要執行的指令碼,做為修補程序的一部分。這些指令碼可用於執行關閉應用程式和執行健康狀態檢查等工作。

  • 在修補作業展開前運作的修補前指令碼。如果系統必須在修補作業展開前重新啟動,則修補前指令碼會在系統重新啟動前開始運作。
  • 在修補作業完成後運作的修補後指令碼。如果系統必須在修補作業中重新啟動,則修補後指令碼會在系統重新啟動後開始運作。

修補作業可接受 Linux 的修補前和修補後指令碼各一,以及 Windows 的修補前和修補後指令碼各一。使用 Google Cloud CLIRESTGoogle Cloud 控制台指定 Linux 和 Windows 指令碼時,必須使用適當的旗標、參數或區段。Linux 指令碼只能在 Linux VM 上執行,Windows 指令碼只能在 Windows VM 上執行。

這些指令碼檔案可以儲存在 VM 或已啟用版本控管的 Cloud Storage 值區中。

將修補程式指令碼儲存在 Cloud Storage 值區中

如要使用 Cloud Storage bucket 儲存指令碼,請建立 Cloud Storage bucket,並將指令碼上傳至 bucket。使用 Cloud Storage bucket 時,請注意下列事項:

  • 如果 Cloud Storage 物件無法公開讀取,請確保附加至執行個體的服務帳戶具備讀取 Cloud Storage 物件的必要 IAM 權限。如要確認您具備適當權限,請檢查 Cloud Storage 物件的權限設定
  • 使用Google Cloud 控制台從 Cloud Storage 選取指令碼時,系統預設會使用指定 Cloud Storage 物件的最新版本。
  • 如果貴機構強制執行資源位置限制條件,您就必須將指令碼儲存在機構政策允許的區域和可用區的 Cloud Storage 值區中。

主控台

  1. 請按照控制台分頁中列出的步驟,建立修補程式工作修補程式部署作業
  2. 在「Advanced options」(進階選項) 區段中,針對修補前和修補後部分,按一下「Browse」(瀏覽)。系統會顯示 Cloud Storage 物件頁面。
  3. 在 Cloud Storage 物件頁面中,選取含有指令碼的 Cloud Storage 值區,然後選取 Cloud Storage 物件或檔案。
  4. 視需要為修補程式工作或部署作業進行其他設定。
  5. 按一下 [Deploy] (部署)

gcloud

舉例來說,如要在可用區 northamerica-northeast1-a 的所有執行個體上執行修補工作,並為 Linux 和 Windows 執行個體提供修補前和修補後指令碼,請執行下列指令:

gcloud compute os-config patch-jobs execute \
    --instance-filter-zones="northamerica-northeast1-a" \
    --async \
    --pre-patch-linux-executable="/tmp/pre_patch_script.sh" \
    --post-patch-linux-executable="gs://my-patch-scripts/linux/post_patch_script#1523477886880" \
    --pre-patch-windows-executable="C:\\Users\\user\\pre-patch-script.cmd" \
    --post-patch-windows-executable="gs://my-patch-scripts/windows/post_patch_script.ps1#135920493447"

如要進一步瞭解可接受的檔案格式,請執行下列指令:

gcloud compute os-config patch-jobs execute --help

REST

舉例來說,如要在可用區 northamerica-northeast1-a 的所有執行個體上執行修補工作,並為 Linux 和 Windows 執行個體提供修補前和修補後指令碼,請執行下列指令:

POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter":{
    "zones":[
      "northamerica-northeast1-a"
    ]
  },
  "patchConfig":{
    "preStep":{
      "linuxExecStepConfig":{
        "localPath":"/tmp/pre_patch_script.sh"
      },
      "windowsExecStepConfig":{
        "interpreter":"SHELL",
        "localPath":"C:\\Users\\user\\pre-patch-script.cmd"
      }
    },
    "postStep":{
      "linuxExecStepConfig":{
        "gcsObject":{
          "bucket":"my-patch-scripts",
          "generationNumber":"1523477886880",
          "object":"linux/post_patch_script"
        }
      },
      "windowsExecStepConfig":{
        "gcsObject":{
          "bucket":"my-patch-scripts",
          "generationNumber":"135920493447",
          "object":"windows/post_patch_script.ps1"
        },
        "interpreter":"POWERSHELL"
      }
    }
  }
}

如要進一步瞭解可接受的檔案格式,請參閱 PatchConfig API 說明文件的ExecStepConfig一節。

修補程式推出選項

您可以選擇一次修補一個可用區的 VM (逐一修補可用區),或一次修補所有可用區的 VM (並行修補可用區)。

除了選取區域推出作業外,您也可以為 VM 指定區域中斷預算。

可用區服務中斷預算

中斷預算是指各區域在特定時間內受中斷的 VM 數量 (或百分比) 上限。

什麼是中斷的 VM?

修補期間,系統會從通知 OS 設定代理程式開始修補,到修補完成為止,將 VM 視為中斷。這段中斷時間包括完成重新啟動和任何修補後步驟的時間。

如果 VM 符合下列任一條件,也會計入中斷預算:

  • 套用修補程式時,修補作業失敗
  • 執行修補前或修補後步驟時,修補作業失敗
  • 修補作業在逾時前未傳回成功通知

中斷預算的運作方式

如果是逐區推出,如果某個區域超出中斷預算,修補程式工作就會停止。這是因為繼續前往下一個區域前,必須先完成上一個區域的修補程序。

舉例來說,如果中斷預算值為 10,且目前區域中有 8 部 VM 無法修補,修補工作會繼續一次修補 2 部 VM,直到該區域完成修補為止。該區域成功完成修補後,系統會開始修補下一個區域,一次修補 10 部 VM。如果下一個可用區中有 10 部 VM 無法完成修補,修補作業就會停止。

範例

主控台

  1. 請按照控制台分頁中列出的步驟,建立修補程式工作修補程式部署作業
  2. 在「推出選項」部分,設定推出選項:
    • 選取要一次修補一個可用區,還是同時修補所有可用區。
    • 設定中斷預算。中斷預算是指您希望修補程序一次中斷的區域 VM 數量或百分比。
  3. 視需要為修補程式工作或部署作業進行其他設定。
  4. 按一下 [Deploy] (部署)

gcloud

範例 1

本範例顯示如何使用 os-config patch-jobs execute 指令,執行符合下列規格的修補程式工作:

  • 修補專案中的所有 VM
  • 依可用區修補 VM
  • 確保同一可用區中,在特定時間內受中斷的 VM 不超過 10 部
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=zone-by-zone \
   --rollout-disruption-budget=10

示例 2

本範例顯示如何使用 os-config patch-jobs execute 指令,執行符合下列規格的修補程式工作:

  • 修補專案中的所有 VM
  • 同時修補多個可用區
  • 確保同一區域中受中斷的 VM 不超過 50%
gcloud compute os-config patch-jobs execute \
   --instance-filter-all \
   --rollout-mode=concurrent-zones \
   --rollout-disruption-budget-percent=50

REST

這個範例顯示如何使用 patchJobs.execute 方法,以執行符合下列規格的修補程式工作:

  • 修補可用區 us-central1-aus-central1-cus-central1-f 中的所有 VM
  • 同時修補多個可用區
  • 確保同一區域中,在特定時間內中斷的執行個體不超過 25%
POST https://osconfig.googleapis.com/v1/projects/project-id/patchJobs:execute

{
  "instanceFilter":{
    "zones":[
      "us-central1-a",
      "us-central1-c",
      "us-central1-f"
    ]
  },
  "rollout": {
    "disruptionBudget": {
      "percent": 25
    },
    "mode": "CONCURRENT_ZONES"
  }
}

如要進一步瞭解修補程式推出作業,請參閱 PatchRollout API 說明文件。

在 Windows VM 上啟用 Microsoft 軟體修補程式

在 Windows VM 上執行修補程式作業時,Patch 預設只會套用 Windows 作業系統的修補程式。

執行修補程式作業時,您可以為 Windows VM 上執行的 Microsoft 軟體套用更新,例如 Microsoft SQL Server、SharePoint Server 或 .NET Framework。根據預設,系統會停用這些應用程式的修補程式,避免服務中斷,並將這些軟體的排定更新作業分開處理。如要自動修補 Microsoft 軟體,可以使用 Windows UI 或 PowerShell。

Windows UI

  1. 在「Windows 開始」選單中,依序選取「設定」>「更新與安全性」>「Windows Update」
  2. 在「進階選項」部分,開啟「在更新 Windows 時接收其他 Microsoft 產品的更新」

PowerShell

 $service_manager = New-Object -ComObject 'Microsoft.Update.ServiceManager'
 $service_manager.AddService2("7971f918-a847-4430-9279-4a52d1efe18d",7,"")

偵錯修補工作

如果修補程式安裝失敗,請按照下列步驟找出並解決問題。

  1. 查看受影響修補程式工作的執行個體詳細資料。這有助於您找出失敗的執行個體,或執行個體停滯的狀態。執行個體詳細資料清單也會包含每個執行個體的簡短錯誤訊息。

    如果修補程式失敗,且狀態為 NO_AGENT_DETECTEDTIMED_OUT,通常表示服務已傳送要求給代理程式,開始修補作業,但代理程式未回報。請查看下列可能原因和修正方式:

    • 執行個體未處於執行中狀態。如要修正這個問題,請啟動 VM 執行個體
    • 使用驗證檢查清單驗證設定。
    • 虛擬私有雲網路或執行個體上的網路設定,不允許 OS Config 代理程式與 OS Config API 通訊。如要修正這個問題,請檢查網路設定。
  2. 如果執行個體詳細資料提供的資訊不足,請查看 Cloud Logging 記錄或序列埠主控台。OS Config 代理程式會將記錄項目寫入這兩個位置。在 Cloud Logging 中,您可以使用修補程式工作 ID 進行篩選,查看與該修補程式工作相關的所有記錄項目。您也可以在 VM 或專案層級設定 osconfig-log-level=debug 中繼資料值,啟用偵錯記錄。 Google Cloud

後續步驟