Controllare gli aggiornamenti con configurazioni di manutenzione e Azure PowerShell
Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows ✔️ set di scalabilità flessibili ✔️ set di scalabilità uniformi
È possibile usare la funzionalità Configurazioni di manutenzione per controllare quando applicare gli aggiornamenti della piattaforma a varie risorse di Azure. Questo articolo illustra le opzioni di Azure PowerShell per host dedicati e macchine virtuali isolate. Per altre informazioni sui vantaggi dell'uso della funzionalità Configurazioni di manutenzione, delle relative limitazioni e di altre opzioni di gestione, vedere Gestione degli aggiornamenti della piattaforma con configurazioni di manutenzione.
Per informazioni sull'uso delle configurazioni di manutenzione per i set di scalabilità, vedere Controllo di manutenzione per Azure set di scalabilità di macchine virtuali.
Importante
Gli ambiti specifici supportano determinati tipi di computer e pianificazioni. Assicurarsi di selezionare l'ambito corretto per la macchina virtuale.
Abilitare il modulo Azure PowerShell
Assicurarsi che PowerShellGet
sia aggiornato:
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Installare il Az.Maintenance
modulo Azure PowerShell:
Install-Module -Name Az.Maintenance
Verificare di eseguire la versione più recente di Az.Maintenance
(versione 1.2.0):
Get-Module -ListAvailable -Name Az.Maintenance
Assicurarsi di eseguire la versione appropriata di Az.Maintenance
:
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Se si esegue l'installazione in locale, assicurarsi di aprire il prompt di Azure PowerShell come amministratore.
Potrebbe essere richiesto di confermare che si vuole eseguire l'installazione da un repository non attendibile. Immettere Y o selezionare Sì a tutti per installare il modulo.
Creare una configurazione della manutenzione
Il primo passaggio per la creazione di una configurazione di manutenzione consiste nel creare un gruppo di risorse come contenitore per la configurazione. Questo esempio crea un gruppo di risorse denominato myMaintenanceRG in eastus. Se si ha già un gruppo di risorse che si vuole usare, è possibile ignorare questa parte e sostituire il nome del gruppo di risorse con il proprio nel resto degli esempi.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
È possibile dichiarare una finestra pianificata in cui Azure applicherà in modo ricorrente gli aggiornamenti alle risorse. Dopo aver creato una finestra pianificata, non è più necessario applicare gli aggiornamenti manualmente.
È possibile esprimere la ricorrenza della manutenzione come giornaliera, settimanale o mensile. Di seguito sono riportati alcuni esempi.
- Giornaliero:
RecurEvery
valore di"Day"
o"3Days"
. - Settimanale:
RecurEvery
valore di"3Weeks"
o"Week Saturday,Sunday"
. - Mensile:
RecurEvery
valore o"Month day23,day24"
"Month Last Sunday"
."Month Fourth Monday"
Host
In questo esempio viene creata una configurazione di manutenzione denominata Host
myConfig con ambito , con una finestra pianificata di 5 ore il quarto lunedì di ogni mese. Il duration
valore della pianificazione per questo ambito deve essere di almeno due ore. Per iniziare, definire i parametri per New-AzMaintenanceConfiguration
:
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
Dopo aver definito i parametri, è possibile usare il New-AzMaintenanceConfiguration
cmdlet per creare la configurazione:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
L'uso di $scope = "Host"
assicura che la configurazione di manutenzione venga usata per controllare gli aggiornamenti nei computer host. Assicurarsi di creare una configurazione per l'ambito specifico dei computer di destinazione. Altre informazioni sugli ambiti.
Immagine del sistema operativo
In questo esempio viene creata una configurazione di manutenzione denominata osimage
myConfig con ambito , con una finestra pianificata di 8 ore ogni 5 giorni. Il duration
valore della pianificazione per questo ambito deve essere di almeno 5 ore. Questo ambito consente un massimo di 7 giorni per la ricorrenza della pianificazione.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
Dopo aver definito i parametri, è possibile usare il New-AzMaintenanceConfiguration
cmdlet per creare la configurazione:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Guest
L'aggiunta più recente alla funzionalità Configurazioni di manutenzione è l'ambito InGuestPatch
. Questo esempio illustra come creare una configurazione di manutenzione per un ambito guest usando Azure PowerShell. Per altre informazioni su questo ambito, vedere Guest.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
Dopo aver definito i parametri, è possibile usare il New-AzMaintenanceConfiguration
cmdlet per creare la configurazione:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
Se si tenta di creare una configurazione con lo stesso nome ma in un percorso diverso, verrà visualizzato un errore. I nomi di configurazione devono essere univoci per il gruppo di risorse.
È possibile verificare se le configurazioni di manutenzione sono state create correttamente usando Get-AzMaintenanceConfiguration:
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Assegnare la configurazione
Dopo aver creato la configurazione, è consigliabile assegnarvi anche i computer usando Azure PowerShell. È possibile usare il cmdlet New-AzConfigurationAssignment .
Macchina virtuale isolata
Assegnare la configurazione a una macchina virtuale usando l'ID della configurazione. Specificare -ResourceType VirtualMachines
. Specificare il nome della macchina virtuale per -ResourceName
e specificare il gruppo di risorse della macchina virtuale per -ResourceGroupName
.
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Host dedicato
Per applicare una configurazione a un host dedicato, è necessario includere -ResourceType hosts
, -ResourceParentName
con il nome del gruppo host e -ResourceParentType hostGroups
:
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Set di scalabilità di macchine virtuali
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Ospite
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Verificare la presenza di aggiornamenti in sospeso
Verificare la presenza di aggiornamenti in sospeso, usare Get-AzMaintenanceUpdate. Usare -subscription
per specificare la sottoscrizione di Azure della macchina virtuale, se è diversa da quella a cui si è connessi.
Se non sono presenti aggiornamenti da visualizzare, questo comando non restituisce nulla. In caso contrario, restituisce un PSApplyUpdate
oggetto :
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
Macchina virtuale isolata
Verificare la presenza di aggiornamenti in sospeso per una macchina virtuale isolata. In questo esempio l'output viene formattato come tabella per la leggibilità:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Host dedicato
Verificare la presenza di aggiornamenti in sospeso per un host dedicato. In questo esempio l'output viene formattato come tabella per la leggibilità:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
Set di scalabilità di macchine virtuali
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
Applica aggiornamenti
Usare New-AzApplyUpdate per applicare gli aggiornamenti in sospeso. L'applicazione delle chiamate di aggiornamento può richiedere fino a 2 ore per il completamento.
Questo cmdlet funziona solo per gli ambiti dell'immagine host e del sistema operativo. Non funziona per l'ambito guest.
Macchina virtuale isolata
Creare una richiesta per applicare gli aggiornamenti a una macchina virtuale isolata:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
In caso di esito positivo, questo comando restituisce un PSApplyUpdate
oggetto . È possibile usare l'attributo Name
nel Get-AzApplyUpdate
comando per controllare lo stato dell'aggiornamento, come descritto più avanti in questo articolo.
Host dedicato
Applicare gli aggiornamenti a un host dedicato:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
Set di scalabilità di macchine virtuali
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Verificare lo stato aggiornamenti
Per controllare lo stato di un aggiornamento, usare Get-AzApplyUpdate. I comandi seguenti mostrano lo stato dell'aggiornamento più recente usando default
per il -ApplyUpdateName
parametro . È possibile sostituire il nome dell'aggiornamento (restituito dal comando New-AzApplyUpdate) per ottenere lo stato di un aggiornamento specifico.
Questo cmdlet funziona solo per gli ambiti dell'immagine host e del sistema operativo. Non funziona per l'ambito guest.
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
è l'ora in cui l'aggiornamento è terminato, indipendentemente dal fatto che sia stato avviato dall'aggiornamento o dalla piattaforma perché non è stata usata la finestra di manutenzione automatica. Se un aggiornamento non è mai stato applicato tramite configurazioni di manutenzione, LastUpdateTime
mostra il valore predefinito.
Macchina virtuale isolata
Verificare la disponibilità di aggiornamenti per una macchina virtuale specifica:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Host dedicato
Verificare la disponibilità di aggiornamenti a un host dedicato:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Set di scalabilità di macchine virtuali
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Eliminare una configurazione della manutenzione
Per eliminare una configurazione di manutenzione, usare Remove-AzMaintenanceConfiguration:
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
Passaggi successivi
Per altre informazioni, vedere Manutenzione per le macchine virtuali in Azure.