如何以编程方式管理已启用 Azure Arc 的服务器的更新

本文指导你完成使用 Azure REST API 在 Azure 中通过 Azure 更新管理器在已启用 Azure Arc 的服务器上触发评估和更新部署的过程。 如果不熟悉 Azure 更新管理器且想要了解详细信息,请参阅更新管理器概述。 若要使用 Azure REST API 管理 Azure 虚拟机,请参阅如何以编程方式使用 Azure 虚拟机。

通过 Azure 更新管理器,可以使用 Azure REST API 以编程方式进行访问。 此外,还可在 Azure PowerShell 和 Azure CLI 中使用适当的 REST 命令。

可通过更新管理器虚拟机扩展支持 Azure REST API 管理已启用 Azure Arc 的服务器。

更新评估

若要在已启用 Azure Arc 的服务器上触发更新评估,请指定以下 POST 请求:

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

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

更新部署

若要对已启用 Azure Arc 的服务器触发更新部署,请指定以下 POST 请求:

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

请求正文

下表介绍了请求正文的元素:

properties 说明
maximumDuration OS 更新操作可以花费的最长时间,以分钟为单位。 此值必须是符合 ISO 8601 标准的持续时间字符串,例如 PT100M。
rebootSetting 标志用于指示是否应重新启动计算机,即 Azure 更新管理器(AUM)是否应在更新作业中重新启动计算机。 可接受的值:IfRequired, NeverReboot, AlwaysReboot。
windowsParameters 运行受支持的 Microsoft Windows Server 操作系统的计算机上的来宾 OS 更新的参数选项。
windowsParameters - classificationsToInclude 要应用的 OS 更新的类别或分类列表,由 Windows Server OS 支持和提供。 可接受的值:Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude 计算机可用且需要安装的 Windows 更新 KB ID 列表。 如果已包含任何“classificationsToInclude”,则会安装类别中可用的 KB。 “kbNumbersToInclude”是一个选项,用于提供除你要安装的 KB 以外的特定 KB ID 列表。 例如:1234
windowsParameters - kbNumbersToExclude 适用于计算机且 不应 安装的 Windows 更新 KB ID 列表。 如果已包含任何“classificationsToInclude”,则将会安装类别中可用的 KB。 “kbNumbersToExclude”是一个选项,用于提供你希望确保不安装的特定 KB ID 列表。 例如:5678
maxPatchPublishDate 它用于安装此给定最晚发布日期或之前发布的补丁。
linuxParameters 当计算机运行受支持的 Linux 发行版时来宾 OS 更新的参数选项
linuxParameters - classificationsToInclude 要应用的 OS 更新的类别或分类列表,由使用的 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 CLI az rest 命令。

az rest --method post --url https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/Test/providers/Microsoft.HybridCompute/machines/WIN-8/installPatches?api-version=2020-08-15-preview @body.json

对于 2020-08-15 版,请求正文的格式如下所示:

{
        "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`

请求正文

下表介绍了请求正文的元素:

properties 说明
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: [整数频率]['天数']。 如果未提供任何频率,则默认频率为 1。 每日计划示例为 recurEvery: Day, recurEvery: 3Days。 每周计划的格式为重复:[频率为整数]['周'] [可选逗号分隔的星期一至星期日列表]。 每周日程安排示例为 recurEvery: 3Weeks, recurEvery: Week Saturday, 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、西欧标准时间、韩国标准时间、 澳大利亚中部标准时间。
properties.namespace 获取或设置资源的命名空间
properties.visibility 获取或设置配置的可见性。 默认值为“Custom”
systemData 包含 createdBy 和 modifiedBy 信息的 Azure 资源管理器元数据。
tags 获取或设置资源的标记
type 资源的类型
az maintenance configuration create \
   --resource-group myMaintenanceRG \
   --resource-name myConfig \
   --maintenance-scope InGuestPatch \
   --location eastus \
   --maintenance-window-duration "02:00" \
   --maintenance-window-recur-every "20days" \
   --maintenance-window-start-date-time "2022-12-30 07:00" \
   --maintenance-window-time-zone "Pacific Standard Time" \
   --install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
   --install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
   --reboot-setting "IfRequired" \
   --extension-properties InGuestPatchMode="User"

将 VM 与计划相关联

若要将 VM 与维护配置计划相关联,请指定以下 PUT 请求:

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
az maintenance assignment create \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

从日程安排中删除计算机

若要从日程安排中移除计算机,请获取已创建的计算机的所有配置分配名称,以便将计算机与 Azure Resource Graph 中的当前日程安排相关联,如下所示:

az maintenance configuration delete \
   --resource-group myMaintenanceRG \
   --location eastus \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --configuration-assignment-name myConfig \
   --maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"

后续步骤