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

La creazione di configurazioni di manutenzione consente di decidere quando applicare gli aggiornamenti della piattaforma a varie risorse di Azure. Questo argomento illustra le opzioni di Azure PowerShell per host dedicati e macchine virtuali isolate. Per altre informazioni sui vantaggi dell'uso delle configurazioni di manutenzione, delle relative limitazioni e di altre opzioni di gestione, vedere Gestione degli aggiornamenti della piattaforma con configurazioni di manutenzione.

Per informazioni sulle configurazioni di manutenzione per i set di scalabilità, vedere Controllo di manutenzione per i set di scalabilità di macchine virtuali.

Importante

Esistono diversi ambiti che supportano determinati tipi di computer e pianificazioni, quindi assicurarsi di selezionare l'ambito appropriato per la macchina virtuale.

Abilitare il modulo PowerShell

Assicurarsi che PowerShellGet sia aggiornato.

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Installare il modulo PowerShell Az.Maintenance.

Install-Module -Name Az.Maintenance

Verificare di eseguire la versione più recente del modulo PowerShell Az.Maintenance (versione 1.2.0)

Get-Module -ListAvailable -Name Az.Maintenance

Assicurarsi di eseguire la versione appropriata di Az.Maintenance usando

Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0

Se si esegue l'installazione in locale, assicurarsi di aprire il prompt di PowerShell come amministratore.

Potrebbe anche essere richiesto di confermare di voler eseguire l'installazione da un repository non attendibile. Digitare Y o selezionare Sì a tutti per installare il modulo.

Creare una configurazione della manutenzione

Il primo passaggio per creare una configurazione di manutenzione consiste nel creare un gruppo di risorse come contenitore per la configurazione. In questo esempio viene creato 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 manualmente gli aggiornamenti. La ricorrenza di manutenzione può essere espressa come giornaliera, settimanale o mensile. Alcuni esempi sono:

  • giornaliera- RecurEvery "Day" o "3Days"
  • settimanale- RecurEvery "3Weeks" o "Week Saturday,Sunday"
  • mensile- RecurEvery "Month day23,day24" o "Month Last Sunday" or "Month Fourth Monday"

Host

Questo esempio crea una configurazione di manutenzione denominata myConfig con ambito host con una finestra pianificata di 5 ore il quarto lunedì di ogni mese. È importante notare che la durata della pianificazione per questo ambito deve essere di almeno due ore. Per iniziare, sarà necessario definire tutti i parametri necessari 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, è ora possibile usare il cmdlet New-AzMaintenanceConfiguration 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. Sarà necessario assicurarsi di creare una configurazione per l'ambito specifico dei computer di destinazione. Per altre informazioni sugli ambiti, vedere Ambiti di configurazione della manutenzione.

Immagine sistema operativo

In questo esempio verrà creata una configurazione di manutenzione denominata myConfig con ambito per osimage e con una finestra pianificata di 8 ore ogni 5 giorni. È importante notare che la durata della pianificazione per questo ambito deve essere di almeno 5 ore. Un'altra differenza fondamentale da notare è che 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, è ora possibile usare il cmdlet New-AzMaintenanceConfiguration 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 all'offerta di configurazione di manutenzione è l'ambito InGuestPatch. Questo esempio illustra come creare una configurazione di manutenzione per l'ambito guest usando 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, è ora possibile usare il cmdlet New-AzMaintenanceConfiguration 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, è possibile assegnare anche i computer usando PowerShell. A tale scopo, si userà New-AzConfigurationAssignment.

Macchina virtuale isolata

Assegnare la configurazione a una macchina virtuale usando l'ID della configurazione. Specificare -ResourceType VirtualMachines e specificare il nome della macchina virtuale per -ResourceName e 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 anche -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

Usare Get-AzMaintenanceUpdate per verificare se sono presenti aggiornamenti in sospeso. 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 restituirà nulla. In caso contrario, restituirà un oggetto PSApplyUpdate:

{
   "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. Le chiamate di applicazione degli aggiornamenti possono richiedere fino a 2 ore. Questo cmdlet funziona solo per gli ambiti Host e OSImage. NON funzionerà 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 restituirà un oggetto PSApplyUpdate. È possibile usare l'attributo Name nel comando Get-AzApplyUpdate per controllare lo stato dell'aggiornamento. Vedere Controllare lo stato dell'aggiornamento.

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

Usare Get-AzApplyUpdate per verificare lo stato di un aggiornamento. I comandi illustrati di seguito mostrano lo stato dell'aggiornamento più recente usando default per il parametro -ApplyUpdateName. È 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 Host e OSImage. NON funzionerà 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 sarà l'ora in cui l'aggiornamento è stato completato, avviato dall'utente o dalla piattaforma nel caso in cui la finestra di manutenzione automatica non sia stata usata. Se non è mai stato applicato un aggiornamento tramite configurazioni di manutenzione, verrà visualizzato 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

Usare Remove-AzMaintenanceConfiguration per eliminare una configurazione di manutenzione.

Remove-AzMaintenanceConfiguration `
   -ResourceGroupName "myResourceGroup" `
   -Name "configName"

Passaggi successivi

Per altre informazioni, vedere Manutenzione e aggiornamenti.