如何以编程方式管理已启用 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 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.chinacloudapi.cn/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`
请求正文
下表介绍了请求正文的元素:
properties | 说明 |
---|---|
maximumDuration |
OS 更新操作可以花费的最长时间,以分钟为单位。 此值必须是符合 ISO 8601 标准的持续时间字符串,例如 PT100M 。 |
rebootSetting |
如果应重新启动计算机,并且来宾 OS 更新安装需要它才能完成,则在状态中添加标志。 可接受的值: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 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`
请求正文
下表介绍了请求正文的元素:
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: [整数形式的频率]['周数'] [逗号分隔的可选周一至周日星期名称列表]。 每周日程安排示例为 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 |
资源的类型 |
若要指定 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`