Condividi tramite


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`

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, 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 .
maxPatchPublishDate Viene usato per installare le patch pubblicate in o prima della data massima di pubblicazione specificata.
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`

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