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 Azure Update Manager in Azure. Se non si ha familiarità con Gestione aggiornamenti e si vuole ottenere altre informazioni, vedere panoramica di Gestione 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.

Gestione 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`

Corpo 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, PT4H ad esempio (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 windowsParameters - classificationsToIncludedi , ovvero un ID KB di Windows Update specificato qui non verrà installato anche se appartiene alla classificazione specificata nel classificationsToInclude parametro .
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 linuxParameters - packageNameMasksToExcludedi , ovvero un pacchetto specificato qui non verrà installato anche se appartiene alla classificazione fornita nel classificationsToInclude parametro .

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`

Corpo della richiesta

Nella tabella seguente vengono descritti gli elementi del corpo della richiesta:

Proprietà Descrizione
id Identificatore completo della risorsa
location Ottiene o imposta la posizione della risorsa
name Nome della risorsa
properties.extensionProperties Ottiene o imposta extensionProperties dell'oggetto maintenanceConfiguration
properties.maintenanceScope Ottiene o imposta la manutenzioneScope 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 delimitato da virgole facoltativo dei giorni feriali lunedì-domenica]. 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 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.
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 di risorsa

Per specificare la richiesta POST, è possibile usare la chiamata api REST di Azure seguente con parametri e valori validi.

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"
        ]
      }
    }
  }
}'

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/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"
}'

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 risolvere i problemi, vedere Risolvere i problemi di Gestione aggiornamenti.