Share via


如何針對 Azure 已啟用 Arc 伺服器進行程式設計式管理更新

本文將逐步引導您使用 Azure REST API,在已啟用 Azure Arc 的伺服器上,使用 Azure 更新管理員在 Azure 中觸發評量和更新部署。 如果您不熟悉 Azure Update Manager,而且想要深入瞭解,請參閱 更新管理員概觀。 若要使用 Azure REST API 來管理 Azure 虛擬機,請參閱 如何以程式設計方式使用 Azure 虛擬機

Azure 中的更新管理員可讓您使用 Azure REST API 以程式設計方式存取。 此外,您可以從 Azure PowerShellAzure CLI 使用適當的 REST 命令。

支援 Azure REST API 來管理已啟用 Azure Arc 的伺服器,可透過 Update Manager 虛擬機擴充功能取得。

更新評估

若要在已啟用 Azure Arc 的伺服器上觸發更新評量,請指定下列 POST 要求:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview`
{
}

若要指定 POST 要求,您可以使用 Azure CLI az rest 命令。

az rest --method post --url https://management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview --body @body.json

2020-08-15 版的要求本文格式如下:

{
}

更新部署

若要觸發已啟用 Azure Arc 之伺服器的更新部署,請指定下列 POST 要求:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview`

要求本文

下表描述要求本文的元素:

屬性 說明
maximumDuration OS 更新作業可能需要幾分鐘的時間上限。 它必須是符合 ISO 8601 規範的持續時間字串,例如 PT100M
rebootSetting 如果應該重新啟動計算機,以及客體OS更新安裝需要它才能完成,則為旗標。 可接受的值為: IfRequired, NeverReboot, AlwaysReboot
windowsParameters 執行支援的 Microsoft Windows Server 作業系統之電腦上的客體 OS 更新參數選項。
windowsParameters - classificationsToInclude 要套用的作業系統更新類別或分類清單,如 Windows Server OS 所支援和提供。 可接受的值為: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude 計算機可用的 Windows Update KB 識別符清單,以及您需要安裝。 如果您已包含任何 「classificationsToInclude」,則會安裝類別中可用的 KB。 'kbNumbersToInclude' 是一個選項,提供您想要安裝的特定 KB 標識符清單。 例如:1234
windowsParameters - kbNumbersToExclude 計算機可用的 Windows Update KB 識別符清單,且不應該安裝。 如果您已包含任何 「classificationsToInclude」,則會安裝類別中可用的 KB。 'kbNumbersToExclude' 是一個選項,可提供您想要確保不會安裝的特定 KB 標識符清單。 例如:5678
maxPatchPublishDate 這是用來安裝在此指定發佈日期上限之前或之前發佈的修補程式。
linuxParameters 機器執行支援的Linux發行版時客體OS更新的參數選項
linuxParameters - classificationsToInclude 要套用的作業系統更新類別或分類清單,如 Linux OS 的套件管理員所支援及提供。 可接受的值為: Critical, Security, Others。 如需詳細資訊,請參閱 Linux 套件管理員和 OS 支援
linuxParameters - packageNameMasksToInclude 可供電腦使用的 Linux 套件清單,且必須安裝。 如果您已包含任何 『classificationsToInclude』,則會安裝類別中可用的套件。 'packageNameMasksToInclude' 是提供您想要安裝之套件列表的選項。 例如:mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude 計算機可用的Linux套件清單,不應安裝。 如果您已包含任何 『classificationsToInclude』,則會安裝類別中可用的套件。 'packageNameMasksToExclude' 是一個選項,可提供您想要確保不會安裝的特定套件清單。 例如:mysql, libc=1.0.1.1, kernel*

若要指定 POST 要求,您可以使用下列 Azure REST API 呼叫搭配有效的參數和值。

POST on 'subscriptions/subscriptionI/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview

{
        "maximumDuration": "PT120M",
        "rebootSetting": "IfRequired",
        "windowsParameters": {
          "classificationsToInclude": [
            "Security",
            "UpdateRollup",
            "FeaturePack",
            "ServicePack"
          ],
          "kbNumbersToInclude": [
            "11111111111",
            "22222222222222"
          ],
          "kbNumbersToExclude": [
            "333333333333",
            "55555555555"
          ]
        }
  }'

建立維護設定排程

若要建立維護設定排程,請指定下列 PUT 要求:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

要求本文

下表描述要求本文的元素:

屬性 說明
id 資源的完整標識碼
location 取得或設定資源的位置
name 資源名稱
properties.extensionProperties 取得或設定 maintenanceConfiguration 的 extensionProperties
properties.maintenanceScope 取得或設定組態的 maintenanceScope
properties.maintenanceWindow.duration HH:mm 格式的維護期間。 如果未提供,則會根據提供的維護範圍使用預設值。 範例:05:00。
properties.maintenanceWindow.expirationDateTime YYYY-MM-DD hh:MM 格式維護期間的有效到期日。 視窗會根據該時區,在提供給日光節約的時區中建立。 您必須將到期日設定為未來的日期。 如果未提供,則會將它設定為日期時間上限 9999-12-31 23:59:59。
properties.maintenanceWindow.recurEvery 維護期間預期會遞迴的速率。 速率可以表示為每日、每周或每月排程。 您可以將每日排程格式化為 recurEvery:[Frequency as integer]['Day(s)']。 如果未提供任何頻率,則默認頻率為1。 每日排程範例為 recurEvery:Day、recurEvery:3Days。 每周排程的格式為 recurEvery: [Frequency as integer]['Week(s)'] [週一-星期日的選擇性逗號分隔列表]。 每周排程範例為 recurEvery:3Weeks、recurEvery:Week Saturday、Sunday。 您可以將每月排程格式化為 [Frequency as integer]['Month(s)'] [以逗號分隔的月日列表] 或 [Frequency as integer]['Month(s)] [Month of Month (First, Second, Third, Fourth, Last)] [Weekday Monday-Sunday]。 每月排程範例為 recurEvery:Month、recurEvery:2Months、recurEvery:Month day23、day24、recurEvery:Month Last Sunday、recurEvery:Month Fourth Monday。
properties.maintenanceWindow.startDateTime YYYY-MM-DD hh:mm 格式維護期間的有效開始日期。 您可以將開始日期設定為目前日期或未來的日期。 視窗將會在提供的時區中建立,並根據該時區調整為日光節約。
properties.maintenanceWindow.timeZone 時區的名稱。 您可以在 PowerShell 中執行 [System.TimeZoneInfo]:GetSystemTimeZones() 來取得時區清單。 範例:太平洋標準時間、UTC、W. 歐洲標準時間、韓國標準時間、Cen。 澳大利亞標準時間。
properties.namespace 取得或設定資源的命名空間
properties.visibility 取得或設定組態的可見性。 預設值為 'Custom'
systemData 包含 createdBy 和 modifiedBy 資訊的 Azure Resource Manager 元數據。
tags 取得或設定資源的標記
type 資源的類型

若要指定 POST 要求,您可以使用下列 Azure REST API 呼叫搭配有效的參數和值。

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestAdv2?api-version=2021-09-01-preview

{
  "location": "eastus2euap",
  "properties": {
    "namespace": null,
    "extensionProperties": {
      "InGuestPatchMode" : "User"
    },
    "maintenanceScope": "InGuestPatch",
    "maintenanceWindow": {
      "startDateTime": "2021-08-21 01:18",
      "expirationDateTime": "2221-05-19 03:30",
      "duration": "01:30",
      "timeZone": "India Standard Time",
      "recurEvery": "Day"
    },
    "visibility": "Custom",
    "installPatches": {
      "rebootSetting": "IfRequired",
      "windowsParameters": {
        "classificationsToInclude": [
          "Security",
          "Critical",
          "UpdateRollup"
        ]
      },
      "linuxParameters": {
        "classificationsToInclude": [
          "Other"
        ]
      }
    }
  }
}'

建立 VM 與排程的關聯

若要建立 VM 與維護設定排程的關聯,請指定下列 PUT 要求:

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

若要指定 PUT 要求,您可以使用下列 Azure REST API 呼叫搭配有效的參數和值。

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
  },
  "location": "eastus2euap"
}'

從排程中移除電腦

若要從排程中移除計算機,請取得您所建立機器的所有組態指派名稱,以將計算機與 Azure Resource Graph 中目前的排程產生關聯,如下所示:

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

從上述取得名稱之後,請遵循 DELETE 要求來刪除組態指派 -

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

下一步