使用維護設定和 Azure CLI 來控制更新
適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集
您可以使用維護設定功能來控制何時將平臺更新套用至各種 Azure 資源。 本文涵蓋使用這項功能的 Azure CLI 選項。 如需使用維護組態的優點、其限制和其他管理選項的詳細資訊,請參閱 使用維護設定管理平臺更新。
重要
特定 範圍 支援特定電腦類型和排程。 請務必為您的虛擬機 (VM) 選取正確的範圍。
建立維修設定
建立維護設定的第一個步驟是建立資源群組作為組態的容器。 此範例會在eastus中建立名為 myMaintenanceRG 的資源群組。 若已有要使用的資源群組,則可跳過此部分,且在其餘範例中以您自己的資源群組名稱來取代。
az group create \
--location eastus \
--name myMaintenanceRG
建立資源群組之後,請使用 az maintenance configuration create
來建立維護設定。
Host
此範例會建立名為 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
或"3Days"
的值"Day"
。 - 每周:
maintenance-window-recur-every
或"Week Saturday,Sunday"
的值"3Weeks"
。 - 每月:
maintenance-window-recur-every
"Month day23,day24"
或"Month Last Sunday"
的值Month Fourth Monday
。
虛擬機器擴展集
此範例會建立名為 myConfig 的維護組態,其中虛擬機擴展集的 OS 映射範圍為 5 小時,每個月第四個星期一的排程時間範圍為 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 小時。 深入瞭解客體 VM 上的維護設定。
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
使用組態的標識碼,將設定套用至隔離的主機 VM。 指定 --resource-type virtualMachines
。 提供的 VM --resource-name
名稱、VM 的資源群組 --resource-group
,以及的 --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
參數是主機的識別碼。 您可以使用 az-vm-host-get-instance-view 來取得專用主機的識別碼。
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 的訂用帳戶標識碼。
如果沒有更新,命令會傳回包含文字 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 中虛擬機的維護。