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