你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用维护配置和 Azure CLI 来控制更新
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
可以使用维护配置功能来控制何时将平台更新应用到各种 Azure 资源。 本文介绍了用于使用此功能的 Azure CLI 选项。 若要详细了解使用维护配置的好处、该功能的限制以及其他管理选项,请参阅使用维护配置管理平台更新。
重要
特定的范围支持特定的机器类型和计划。 请务必为虚拟机 (VM) 选择正确的范围。
创建维护配置
创建维护配置的第一步是创建一个资源组作为你的配置的容器。 此示例在 eastus 中创建一个名为 myMaintenanceRG 的资源组。 如果你已有一个可供使用的资源组,则可跳过此部分,并在其余示例中将资源组名称替换为你自己的名称。
az group create \
--location eastus \
--name myMaintenanceRG
创建该资源组后,使用 az maintenance configuration create
创建维护配置。
主机
此示例创建一个名为 myConfig 的维护配置,该配置的作用域为主机,其计划时段为每月第四个星期一的 5 个小时:
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope host \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
使用 --maintenance-scope host
可确保使用维护配置来控制对主机基础结构的更新。 如果尝试创建同名但位于不同位置的配置,则会收到错误。 配置名称对于资源组必须是唯一的。
若要检查是否已成功创建了维护配置,可以使用 az maintenance configuration list
来查询可用的维护配置:
az maintenance configuration list
--query "[].{Name:name, ID:id}"
--output table
可以将维护重复周期表示为每日、每周或每月。 以下是一些示例:
- 每日:
maintenance-window-recur-every
值为"Day"
或"3Days"
。 - 每周:
maintenance-window-recur-every
值为"3Weeks"
或"Week Saturday,Sunday"
。 - 每月:
maintenance-window-recur-every
值为"Month day23,day24"
、"Month Last Sunday"
或Month Fourth Monday
。
虚拟机规模集
此示例创建一个名为 myConfig 的维护配置,该配置的作用域为虚拟机规模集的操作系统映像,其计划时段为每月第四个星期一的 5 个小时:
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope osimage \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
来宾 VM
此示例创建一个名为 myConfig 的维护配置,该配置的作用域为来宾计算机(VM 和已启用 Azure Arc 的服务器),其计划时段为每 20 天 2 个小时。 详细了解来宾虚拟机的维护配置。
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"
分配配置
使用 az maintenance assignment create
将配置分配给你的计算机。
隔离的 VM
使用此配置的 ID 将配置应用于独立主机 VM。 指定 --resource-type virtualMachines
。 为 --resource-name
提供 VM 的名称,为 --resource-group
提供 VM 的资源组,为 --location
提供 VM 的位置。
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"
专用主机
若要将配置应用到专用主机,需要包含 --resource-type hosts
、带主机组名称的 --resource-parent-name
,以及 --resource-parent-type hostGroups
。
参数 --resource-id
是主机的 ID。 可以使用 az-vm-host-get-instance-view 获取专用主机的 ID。
az maintenance assignment create \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myDhResourceGroup/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig" \
--location eastus \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
虚拟机规模集
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
来宾 VM
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"
检查配置
可以验证是否正确应用了配置,或者使用 az maintenance assignment list
来检查当前应用了哪种配置。
隔离的 VM
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
专用主机
az maintenance assignment list \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--query "[].{ResourceGroup:resourceGroup,configName:name}" \
--output table
虚拟机规模集
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
来宾 VM
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
检查挂起的更新
使用 az maintenance update list
查看是否存在挂起的更新。 将 --subscription
更新为包含 VM 的订阅的 ID。
如果没有更新,该命令会返回一条错误消息,其中包含文本:Resource not found...StatusCode: 404
。
如果存在更新,即使多个更新处于待执行状态,该命令也仅返回一个更新。 此更新的数据在对象中返回:
[
{
"impactDurationInSec": 9,
"impactType": "Freeze",
"maintenanceScope": "Host",
"notBefore": "2020-03-03T07:23:04.905538+00:00",
"resourceId": "/subscriptions/9120c5ff-e78e-4bd0-b29f-75c19cadd078/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
"status": "Pending"
}
]
隔离的 VM
检查隔离的 VM 的挂起更新。 在此示例中,输出的格式为表格,方便你阅读:
az maintenance update list \
--subscription {subscription ID} \
--resource-group myMaintenanceRg \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--output table
专用主机
检查专用主机的挂起更新。 在此示例中,输出的格式为表格,方便你阅读。 将资源的值替换为你自己的值。
az maintenance update list \
--subscription {subscription ID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parentname myHostGroup \
--resource-parent-type hostGroups \
--output table
应用更新
使用 az maintenance apply update
来应用挂起的更新。 成功后,此命令返回包含更新详细信息的 JSON。 应用更新调用可能需要长达 2 小时才能完成。
隔离的 VM
创建向独立 VM 应用更新的请求:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute
专用主机
将更新应用到专用主机:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
虚拟机规模集
将更新应用于规模集:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute
检查应用更新的状态
可以使用 az maintenance applyupdate get
检查更新进度。
若要查看上次更新的结果,请使用 default
作为更新名称。 或者将 myUpdateName
替换为运行 az maintenance applyupdate create
时返回的更新的名称。
Status : Completed
ResourceId : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name : default
Type : Microsoft.Maintenance/applyUpdates
LastUpdateTime
是更新完成的时间,不管是你发起的更新,还是平台因为你没有使用自行维护时段而发起的更新。 如果从未通过维护配置应用更新,则 LastUpdateTime
会显示默认值。
隔离的 VM
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
专用主机
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
虚拟机规模集
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
删除维护配置
若要删除维护配置,请使用 az maintenance configuration delete
。 删除配置时,会从关联的资源中删除维护控制。
az maintenance configuration delete \
--subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
-resource-group myResourceGroup \
--resource-name myConfig
后续步骤
若要了解详细信息,请参阅 Azure 中虚拟机的维护。