你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何以编程方式管理 Azure VM 的更新
本文指导你完成使用 Azure REST API 在 Azure 虚拟机上使用 Azure 更新管理器触发评估和更新部署的过程。 如果不熟悉更新管理器并想要了解详细信息,请参阅 Azure 更新管理器概述。 要使用 Azure REST API 管理已启用 Arc 的服务器,请参阅如何以编程方式使用已启用 Arc 的服务器。
使用 Azure 中的 Azure 更新管理器, 可以使用 Azure REST API 以编程方式访问。 此外,还可在 Azure PowerShell 和 Azure CLI 中使用适当的 REST 命令。
可通过 Update Manager 虚拟机扩展支持 Azure REST API 来管理 Azure VM。
更新评估
要在 Azure VM 上触发更新评估,请指定以下 POST 请求:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`
若要指定 POST 请求,可以使用 Azure CLI az vm assess-patchs 命令。
az vm assess-patches -g MyResourceGroup -n MyVm
更新部署
要在 Azure VM 上触发更新部署,请指定以下 POST 请求:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`
请求正文
下表描述了请求正文的元素:
properties | 说明 |
---|---|
maximumDuration |
操作的最长运行时间。 它必须是符合 ISO 8601 标准的持续时间字符串,例如 PT4H (4 小时)。 |
rebootSetting |
如果计算机应重新启动,并且来宾 OS 更新安装需要它才能完成,则为状态标记。 可接受的值:IfRequired, NeverReboot, AlwaysReboot 。 |
windowsParameters |
运行受支持的 Microsoft Windows Server 操作系统的 Azure VM 上的来宾 OS 更新的参数选项。 |
windowsParameters - classificationsToInclude |
用于选择要安装在计算机上的更新的类别/分类列表。 可接受的值:Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates |
windowsParameters - kbNumbersToInclude |
应安装的 Windows 更新 KB ID 的列表。 将安装属于 classificationsToInclude 列表中提供的分类的所有更新。 kbNumbersToInclude 是除分类之外要安装的特定 KB 的可选列表。 例如:1234 |
windowsParameters - kbNumbersToExclude |
不应安装的 Windows 更新 KB ID 的列表。 此参数替代windowsParameters - classificationsToInclude ,这意味着即使它属于参数下classificationsToInclude 提供的分类,此处指定的Windows 更新 知识库(KB) ID 也不会安装。 |
linuxParameters |
运行受支持的 Linux 服务器操作系统的 Azure VM 上的来宾 OS 更新的参数选项。 |
linuxParameters - classificationsToInclude |
用于选择要安装在计算机上的更新的类别/分类列表。 可接受的值:Critical, Security, Other |
linuxParameters - packageNameMasksToInclude |
应安装的 Linux 包列表。 将安装属于 classificationsToInclude 列表中提供的分类的所有更新。 packageNameMasksToInclude 是除分类之外要安装的包名称的可选列表。 例如:mysql, libc=1.0.1.1, kernel* |
linuxParameters - packageNameMasksToExclude |
不应安装的更新列表。 此参数替代 linuxParameters - packageNameMasksToExclude ,这意味着即使包属于参数下 classificationsToInclude 提供的分类,也不会安装此处指定的包。 |
若要指定 POST 请求,可以结合有效的参数和值使用以下 Azure REST API 调用。
POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01
{
"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 |
维护时段预计重现的频率。 该频率可以表示为每日、每周或每月计划。 每日计划的格式为递归:[频率为整数]['Day(s)']。 如果未提供任何频率,则默认频率为 1。 每日计划示例为 recurEvery: Day, recurEvery: 3Days。 每周计划的格式为递归:[频率为整数]['Week(s)'] [可选逗号分隔的工作日星期一-星期日列表]。 每周计划示例为 recurEvery:3Weeks、recurEvery:Week Saturday、Sunday。 每月计划的格式为 [整数形式的频率]['月数'] [逗号分隔的月份日期列表] 或 [整数形式的频率]['月数'] [一个月中的哪一周 (First, Second, Third, Fourth, Last)] [周一至周六星期名称]。 每月计划示例为 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 |
资源的类型 |
若要指定 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`