Come gestire gli aggiornamenti a livello di codice per le macchine virtuali di Azure
Questo articolo illustra il processo di uso dell'API REST di Azure per attivare una valutazione e una distribuzione degli aggiornamenti nella macchina virtuale di Azure con Gestore aggiornamenti di Azure in Azure. Se non si ha familiarità con Gestore aggiornamenti e si vuole ottenere altre informazioni, vedere panoramica di Gestore aggiornamenti di Azure. Per usare l'API REST di Azure per gestire i server abilitati per Arc, vedere Come usare a livello di codice i server abilitati per Arc.
Gestore aggiornamenti di Azure in Azure consente di usare l'API REST di Azure per l'accesso a livello di codice. È anche possibile usare i comandi REST appropriati da Azure PowerShell e dall'interfaccia della riga di comando di Azure.
Il supporto per l'API REST di Azure per gestire le macchine virtuali di Azure è disponibile tramite l'estensione macchina virtuale di Gestione aggiornamenti.
Valutazione aggiornamenti
Per attivare una valutazione degli aggiornamenti nella macchina virtuale di Azure, specificare la richiesta POST seguente:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`
Per specificare la richiesta POST, è possibile usare il comando az vm assess-patches dell'interfaccia della riga di comando di Azure.
az vm assess-patches -g MyResourceGroup -n MyVm
Aggiorna distribuzione
Per attivare una distribuzione di aggiornamento nella macchina virtuale di Azure, specificare la richiesta POST seguente:
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`
Testo della richiesta
Nella tabella seguente vengono descritti gli elementi del corpo della richiesta:
Proprietà | Descrizione |
---|---|
maximumDuration |
Tempo massimo di esecuzione dell'operazione. Deve essere una stringa di durata conforme a ISO 8601, ad esempio PT4H (4 ore). |
rebootSetting |
Contrassegnare lo stato se il computer deve essere riavviato e se l'installazione dell'aggiornamento del sistema operativo guest lo richiede per il completamento. I valori accettabili sono: IfRequired, NeverReboot, AlwaysReboot . |
windowsParameters |
Opzioni dei parametri per l'aggiornamento del sistema operativo guest nelle macchine virtuali di Azure che eseguono un sistema operativo Microsoft Windows Server supportato. |
windowsParameters - classificationsToInclude |
Elenco di categorie/classificazioni da usare per selezionare gli aggiornamenti da installare nel computer. I valori accettabili sono: Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Updates |
windowsParameters - kbNumbersToInclude |
Elenco di ID kB di Windows Update che devono essere installati. Verranno installati tutti gli aggiornamenti appartenenti alle classificazioni fornite nell'elenco classificationsToInclude . kbNumbersToInclude è un elenco facoltativo di kB specifici da installare oltre alle classificazioni. Ad esempio: 1234 |
windowsParameters - kbNumbersToExclude |
Elenco di ID KB di Windows Update che non devono essere installati. Questo parametro esegue l'override di windowsParameters - classificationsToInclude , ovvero un ID kB di Windows Update specificato qui non verrà installato anche se appartiene alla classificazione specificata nel parametro classificationsToInclude . |
maxPatchPublishDate |
Viene utilizzato per installare le patch pubblicate alla data massima di pubblicazione o prima di tale data. |
linuxParameters |
Opzioni dei parametri per l'aggiornamento del sistema operativo guest nelle macchine virtuali di Azure che eseguono un sistema operativo server Linux supportato. |
linuxParameters - classificationsToInclude |
Elenco di categorie/classificazioni da usare per selezionare gli aggiornamenti da installare nel computer. I valori accettabili sono: Critical, Security, Other |
linuxParameters - packageNameMasksToInclude |
Elenco di pacchetti Linux che devono essere installati. Verranno installati tutti gli aggiornamenti appartenenti alle classificazioni fornite nell'elenco classificationsToInclude . packageNameMasksToInclude è un elenco facoltativo di nomi di pacchetti da installare oltre alle classificazioni. Ad esempio: mysql, libc=1.0.1.1, kernel* |
linuxParameters - packageNameMasksToExclude |
Elenco di aggiornamenti che non devono essere installati. Questo parametro esegue l'override di linuxParameters - packageNameMasksToExclude , ovvero un pacchetto specificato qui non verrà installato anche se appartiene alla classificazione fornita nel parametro classificationsToInclude . |
Per specificare la richiesta POST, è possibile usare la chiamata API REST di Azure seguente con parametri e valori validi.
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"
]
}
}'
Creare una pianificazione della configurazione di manutenzione
Per creare una pianificazione della configurazione di manutenzione, specificare la richiesta PUT seguente:
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`
Testo della richiesta
Nella tabella seguente vengono descritti gli elementi del corpo della richiesta:
Proprietà | Descrizione |
---|---|
id |
Identificatore completo della risorsa |
location |
Ottiene o imposta il percorso della risorsa |
name |
Nome della risorsa |
properties.extensionProperties |
Ottiene o imposta extensionProperties della maintenanceConfiguration |
properties.maintenanceScope |
Ottiene o imposta il maintenanceScope della configurazione |
properties.maintenanceWindow.duration |
Durata della finestra di manutenzione in formato HH:MM. Se non specificato, il valore predefinito viene usato in base all'ambito di manutenzione specificato. Esempio: 05:00. |
properties.maintenanceWindow.expirationDateTime |
Data di scadenza effettiva della finestra di manutenzione in formato AAAA-MM-GG hh:mm. La finestra viene creata nel fuso orario fornito all'ora legale in base a tale fuso orario. La data di scadenza deve essere impostata su una data futura. Se non specificato, viene impostato sul valore datetime massimo 9999-12-31 23:59:59. |
properties.maintenanceWindow.recurEvery |
Frequenza di ripetizione di una finestra di manutenzione. Il tasso può essere espresso come pianificazioni giornaliere, settimanali o mensili. Le pianificazioni giornaliere vengono formattate come ricorsive: [Frequenza come numero intero][giorno/i']. Se non viene specificata alcuna frequenza, la frequenza predefinita è 1. Gli esempi di pianificazione giornaliera sono ricorsivi: Day, recurEvery: 3Days. Le pianificazioni settimanali vengono formattate come ricorsive: [Frequenza come numero intero][Settimana/i][ Elenco fdelimitato da virgole dei giorni feriali lunedì-domenica facoltativo]. Gli esempi di pianificazione settimanale sono ricorsiva: 3Weeks, recurEvery: Week Saturday, Sunday. Le pianificazioni mensili vengono formattate come [Frequenza come numero intero][Mese/i][Elenco delimitato da virgole di giorni mensili] o [Frequenza come numero intero][Mese/i][Settimana del mese (Primo, Secondo, Terzo, Quarto, Ultimo)] [Lunedì-domenica giorno]. Gli esempi di pianificazione mensile sono recurEvery: Month, recurEvery: 2Months, recury: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Monday. |
properties.maintenanceWindow.startDateTime |
Data di inizio effettiva della finestra di manutenzione in formato AAAA-MM-GG hh:mm. È possibile impostare la data di inizio sulla data corrente o sulla data futura. La finestra verrà creata nel fuso orario specificato e regolata con l’ora legale in base al fuso orario. |
properties.maintenanceWindow.timeZone |
Nome del fuso orario. È possibile ottenere l'elenco dei fusi orari eseguendo [System.TimeZoneInfo]:GetSystemTimeZones() in PowerShell. Esempio: Ora solare pacifico, UTC, Ora solare W. Europa, Ora solare corea, Cen. Ora solare Australia centrale. |
properties.namespace |
Ottiene o imposta lo spazio dei nomi della risorsa |
properties.visibility |
Ottiene o imposta la visibilità della configurazione. Il valore predefinito è 'Custom' |
systemData |
Metadati di Azure Resource Manager contenenti le informazioni createdBy e modifiedBy. |
tags |
Ottiene o imposta i tag della risorsa |
type |
Tipo della risorsa |
Per specificare la richiesta POST, è possibile usare la chiamata API REST di Azure seguente con parametri e valori validi.
PUT on '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"
]
}
}
}
}'
Associare una macchina virtuale a una pianificazione
Per associare una macchina virtuale a una pianificazione della configurazione di manutenzione, specificare la richiesta PUT seguente:
PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
Per specificare la richiesta PUT, è possibile usare la chiamata API REST di Azure seguente con parametri e valori validi.
PUT on '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview
{
"properties": {
"maintenanceConfigurationId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
},
"location": "eastus2euap"
}'
Rimuovere il computer dalla pianificazione
Per rimuovere un computer dalla pianificazione, ottenere tutti i nomi delle assegnazioni di configurazione per il computer creato per associare il computer alla pianificazione corrente da Azure Resource Graph come indicato:
maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id
Dopo aver ottenuto il nome da sopra, eliminare l'assegnazione di configurazione seguendo la richiesta DELETE:
DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`
Passaggi successivi
- Per visualizzare i log di valutazione e distribuzione degli aggiornamenti generati da Gestione aggiornamenti, vedere Log di query.
- Per la risoluzione dei problemi, vedere Risolvere i problemi di Gestione aggiornamenti.