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 HostmyConfig 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 osimagemyConfig 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

Ospite

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 -ResourceNamee 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.