Programmgesteuertes Verwalten von Updates für Azure-VMs

Dieser Artikel führt Sie durch den Prozess der Verwendung der Azure REST-API zum Auslösen einer Bewertung und einer Updatebereitstellung auf Ihrem virtuellen Azure-Computer mit Azure Update Manager in Azure. Wenn Sie mit Update Manager noch nicht fertig sind und mehr erfahren möchten, lesen Sie die Übersicht über den Azure Update Manager. Wie Sie die Azure REST-API zur Verwaltung von Arc-aktivierten Servern verwenden können, finden Sie unter Programmatische Arbeit mit Arc-aktivierten Servern.

Azure Update Manager in Azure ermöglicht Ihnen die verwendung der Azure REST-API für den programmgesteuerten Zugriff. Darüber hinaus können Sie die entsprechenden REST-Befehle aus Azure PowerShell und Azure CLI verwenden.

Die Unterstützung für die Azure REST-API zum Verwalten von Azure-VMs ist über die Erweiterung des virtuellen Update-Managers verfügbar.

Updatebewertung

Um eine Updatebewertung auf Ihrer Azure-VM auszulösen, geben Sie die folgende POST-Anforderung an:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

Um die POST-Anforderung anzugeben, können Sie den Befehl "Azure CLI az vm assess-patches" verwenden.

az vm assess-patches -g MyResourceGroup -n MyVm

Updatebereitstellung

Um eine Updatebbereitstellung auf Ihrer Azure-VM auszulösen, geben Sie die folgende POST-Anforderung an:

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

Anforderungstext

In der folgenden Tabelle werden die Elemente des Anforderungstexts beschrieben:

Eigenschaft Beschreibung
maximumDuration Maximale Zeit, die der Vorgang ausführt. Es muss eine ISO 8601-kompatible Dauerzeichenfolge sein, z.B. PT4H (4 Stunden).
rebootSetting Flag to state if machine should be rebooted and if Guest OS update installation requires it for completion. Folgende Werte sind zulässig: IfRequired, NeverReboot, AlwaysReboot.
windowsParameters Parameteroptionen für das Gastbetriebssystemupdate auf Azure-VMs, die ein unterstütztes Microsoft Windows Server-Betriebssystem ausführen.
windowsParameters - classificationsToInclude Liste der Kategorien/Klassifizierungen, die zum Auswählen der auf dem Computer installierten Updates verwendet werden sollen. Folgende Werte sind zulässig: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude Liste der Windows Update KB-Ids, die installiert werden sollen. Alle Updates, die zu den in der Liste bereitgestellten classificationsToInclude Klassifizierungen gehören, werden installiert. kbNumbersToInclude ist eine optionale Liste spezifischer KBs, die zusätzlich zu den Klassifizierungen installiert werden sollen. Beispiel: 1234
windowsParameters - kbNumbersToExclude Liste der Windows Update KB-Ids, die nicht installiert werden sollen. Dieser Parameter setzt außer Kraft windowsParameters - classificationsToInclude, was bedeutet, dass eine hier angegebene Windows Update KB-ID auch dann nicht installiert wird, wenn er zur unter classificationsToInclude parameter bereitgestellten Klassifizierung gehört.
linuxParameters Parameteroptionen für das Gastbetriebssystemupdate auf Azure-VMs, die ein unterstütztes Linux Server-Betriebssystem ausführen.
linuxParameters - classificationsToInclude Liste der Kategorien/Klassifizierungen, die zum Auswählen der auf dem Computer installierten Updates verwendet werden sollen. Folgende Werte sind zulässig: Critical, Security, Other
linuxParameters - packageNameMasksToInclude Liste der Linux-Pakete, die installiert werden sollen. Alle Updates, die zu den in der Liste bereitgestellten classificationsToInclude Klassifizierungen gehören, werden installiert. packageNameMasksToInclude ist eine optionale Liste von Paketnamen, die zusätzlich zu den Klassifizierungen installiert werden sollen. Beispiel: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Liste der Updates, die nicht installiert werden sollten. Dieser Parameter setzt außer Kraft linuxParameters - packageNameMasksToExclude, was bedeutet, dass ein hier angegebenes Paket nicht installiert wird, auch wenn es zur unter classificationsToInclude parameter bereitgestellten Klassifizierung gehört.

Um die POST-Anforderung anzugeben, können Sie den folgenden Azure REST-API-Aufruf mit gültigen Parametern und Werten verwenden.

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

Erstellen eines Wartungskonfigurationszeitplans

Um einen Wartungskonfigurationsplan zu erstellen, geben Sie die folgende PUT-Anforderung an:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

Anforderungstext

In der folgenden Tabelle werden die Elemente des Anforderungstexts beschrieben:

Eigenschaft Beschreibung
id Vollqualifizierter Bezeichner der Ressource
location Speicherort der Ressource abrufen oder festlegen
name Name der Ressource
properties.extensionProperties „extensionProperties“ von „maintenanceConfiguration“ abrufen oder festlegen
properties.maintenanceScope „maintenanceScope“ der Konfiguration abrufen oder festlegen
properties.maintenanceWindow.duration Dauer des Wartungsfensters im HH:MM-Format. Wenn nicht angegeben, wird der Standardwert basierend auf Standard bereitgestellten Gültigkeitsbereich verwendet. z. B. 05:00.
properties.maintenanceWindow.expirationDateTime Effektives Ablaufdatum des Wartungsfensters im JJJJ-MM-TT hh:mm-Format. Das Fenster wird in der Zeitzone erstellt, die für Sommereinsparungen gemäß dieser Zeitzone bereitgestellt wird. Das Ablaufdatum muss auf ein Datum in der Zukunft festgelegt werden. Wenn nicht angegeben, wird sie auf die maximale Datumszeit 9999-12-31 23:59:59:59 festgelegt.
properties.maintenanceWindow.recurEvery Rate, bei der ein Wartungsfenster wieder auftreten soll. Die Rate kann als täglicher, wöchentlicher oder monatlicher Zeitplan ausgedrückt werden. Tägliche Zeitpläne werden als "recurEvery" formatiert: [Häufigkeit als ganze Zahl]['Tag(n)']. Wird keine Rate angegeben, wird die Standardrate 1 verwendet. Beispiele für tägliche Zeitpläne sind recurEvery: Day, recurEvery: 3Days. Wöchentliche Zeitpläne werden als "recurEvery" formatiert: [Häufigkeit als ganze Zahl]['Woche(n)'] [Optionale kommagetrennte Liste der Wochentage Montag-Sonntag]. Wöchentliche Zeitplanbeispiele sind recurEvery: 3Weeks, recurEvery: Woche Samstag, Sonntag. Ein monatlicher Zeitplan wird als „recurEvery: [Rate als Ganzzahl]['Month(s)] [Kommagetrennte Liste von Monatstagen]“ oder „recurEvery: [Rate als Ganzzahl]['Month(s)] [Woche des Monats (First, Second, Third, Fourth, Last)] [Wochentag Monday-Sunday]“ formatiert. Beispiele für einen monatlichen Zeitplan sind recurEvery: Monat, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Montag.
properties.maintenanceWindow.startDateTime Effektives Startdatum des Wartungsfensters im JJJJ-MM-TT hh:mm-Format. Sie können das Startdatum entweder auf das aktuelle Datum oder das zukünftige Datum festlegen. Das Fenster wird in der angegebenen Zeitzone erstellt und an die entsprechende Sommerzeit dieser Zeitzone angepasst.
properties.maintenanceWindow.timeZone Name der Zeitzone. Eine Liste der Zeitzonen kann durch Ausführen von [System.TimeZoneInfo]:GetSystemTimeZones() in PowerShell abgerufen werden. Beispiel: Pacific Normalzeit, UTC, Mitteleuropäische Zeit, Koreanische Normalzeit, Zentralaustralische Normalzeit.
properties.namespace Namespace der Ressource abrufen oder festlegen
properties.visibility Sichtbarkeit der Konfiguration abrufen oder festlegen. Der Standardwert lautet „Custom“.
systemData Azure Resource Manager-Metadaten mit createdBy- und modifiedBy-Informationen.
tags Tags der Ressource abrufen oder festlegen
type Typ der Ressource

Um die POST-Anforderung anzugeben, können Sie den folgenden Azure REST-API-Aufruf mit gültigen Parametern und Werten verwenden.

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

Verknüpfen einer VM mit einem Zeitplan

Um eine VM mit einem Wartungskonfigurationsplan zu verknüpfen, geben Sie die folgende PUT-Anforderung an:

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

Um die PUT-Anforderung anzugeben, können Sie den folgenden Azure REST-API-Aufruf mit gültigen Parametern und Werten verwenden.

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

Computer aus dem Zeitplan entfernen

Um einen Computer aus dem Zeitplan zu entfernen, rufen Sie alle Konfigurationszuweisungsnamen für den Computer ab, der erstellt wurde, um den Computer dem aktuellen Zeitplan aus azure Resource Graph zuzuordnen, wie aufgeführt:

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

Nachdem Sie den Namen von oben abgerufen haben, löschen Sie die Konfigurationszuweisung, indem Sie der DELETE-Anforderung folgen -

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

Nächste Schritte

  • Informationen zum Anzeigen von Updatebewertungs- und Bereitstellungsprotokollen, die von Update Manager generiert werden, finden Sie unter Abfrageprotokolle.
  • Informationen zur Problembehandlung finden Sie unter "Problembehandlung beim Update-Manager".