建立修補工作

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

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

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

事前準備

  • 查看 OS 設定配額
  • 如要產生 VM 管理員事件的稽核記錄,請啟用資料存取稽核記錄
  • 查看 Patch 的限制
  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 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 進行驗證」。

設定 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 管理員」 >「Patch」(修補程式) 頁面。

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

  2. 按一下「建立修補工作」
  3. 在「目標 VM」部分,指定選取要修補的 VM 的條件。

    1. 選取含有要修補 VM 的可用區。你也可以選擇選取所有區域。

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

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

      • 名稱前置字元:test-
      • 標籤:「env=dev」和「app=web
    2. 在「其他選項」部分,指定下列項目:

      • 允許修補 MIG 執行個體:選取這個選項後,修補工作會在代管執行個體群組 (MIG) 中的 VM 上執行。
      • 略過無法修補的 VM:選取這個選項後,修補工作會略過無法修補的 VM (例如執行 Container-Optimized OS 的 VM)。詳情請參閱「MIG 中的 VM 和無法修補的 VM 設定」。
  4. 在「修補程式設定」部分,設定修補程式。

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

  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 \
    --skip-unpatchable-vms

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

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"
    },
    "skipUnpatchableVms": true
}

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

MIG 中的 VM 和無法修補的 VM 設定

如要指定 VM 管理員處理代管執行個體群組 (MIG) 中的 VM,或執行不支援修補作業的作業系統的 VM,請在修補程式設定中使用下列布林選項:

  • 允許修補 MIG 執行個體:根據預設,VM 管理員不會修補任何屬於 MIG 的 VM。如要修補 MIG 中的 VM,請將 migInstancesAllowed 設為 true。如要進一步瞭解修補 MIG 中 VM 的限制,請參閱「限制」一節。
  • 略過無法修補的 VM:如果將 skipUnpatchableVms 設為 true,只要符合下列任一條件,VM 管理員就會略過 VM 修補作業:

    • VM 的作業系統不支援修補。例如 Container-Optimized OS。請參閱「支援的作業系統」。
    • VM 屬於 MIG,且 migInstancesAllowed 設為 false

    如果是使用 Google Cloud 控制台建立的修補工作,系統預設會選取「略過無法修補的 VM」選項。

    如果 skipUnpatchableVms 設為 true,修補工作會將無法修補的 VM 修補程式狀態回報為 SKIPPED。此外,如果沒有發生其他錯誤,修補工作會針對閒置 VM 回報 COMPLETED_WITH_INACTIVE_VMS 狀態,而非 COMPLETED_WITH_ERRORS

維護期間

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

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

重新啟動選項

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

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

修補前和修補後指令碼

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

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

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

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

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

如要使用 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 bucket,然後選取 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

後續步驟