如何以程序設計方式管理 Azure VM 的更新
本文將逐步引導您使用 Azure REST API,在 Azure 中使用 Azure Update Manager 在 Azure 虛擬機上觸發評量和更新部署。 如果您是更新管理員的新手,而且想要深入瞭解,請參閱 Azure Update Manager 概觀。 若要使用 Azure REST API 來管理已啟用 Arc 的伺服器,請參閱 如何以程式設計方式使用已啟用 Arc 的伺服器。
Azure 中的 Azure 更新管理員可讓您使用 Azure REST API ,以程式設計方式存取。 此外,您可以從 Azure PowerShell 和 Azure CLI 使用適當的 REST 命令。
支援 Azure REST API 來管理 Azure VM,可透過 Update Manager 虛擬機擴充功能取得。
更新評估
若要在您的 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`
要求本文
下表描述要求本文的元素:
屬性 | 說明 |
---|---|
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 Update KB 識別符清單。 將會安裝屬於清單中所提供 classificationsToInclude 分類的所有更新。 kbNumbersToInclude 是除了分類之外要安裝的特定 KB 的選擇性清單。 例如:1234 |
windowsParameters - kbNumbersToExclude |
不應該安裝的 Windows Update KB 識別符清單。 此參數會 windowsParameters - classificationsToInclude 覆寫 ,這表示即使它屬於參數下 classificationsToInclude 提供的分類,這裡指定的 Windows Update KB 識別符也不會安裝。 |
maxPatchPublishDate |
這是用來安裝在此指定發佈日期上限之前或之前發佈的修補程式。 |
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`
要求本文
下表描述要求本文的元素:
屬性 | 說明 |
---|---|
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。 每月排程的格式為 [Frequency as integer]['Month(s)'] [以逗號分隔的月份天數列表] 或 [Frequency as integer]['Month(s)] [Month of Month (First, Second, Third, Fourth, Last)] [Weekday Monday-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、W. 歐洲標準時間、韓國標準時間、Cen。 澳大利亞標準時間。 |
properties.namespace |
取得或設定資源的命名空間 |
properties.visibility |
取得或設定組態的可見性。 預設值為 'Custom' |
systemData |
包含 createdBy 和 modifiedBy 資訊的 Azure Resource Manager 元數據。 |
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`
下一步
- 若要檢視更新管理員所產生的更新評量和部署記錄,請參閱 查詢記錄。
- 若要針對問題進行疑難解答,請參閱 針對更新管理員進行疑難解答 。