本文指导你完成使用 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"
后续步骤
- 若要查看更新管理器生成的更新评估和部署日志,请参阅 查询日志
- 若要排查问题,请参阅更新管理器疑难解答
- PowerShell 参考 Az.Maintenance 模块