Jak programowo zarządzać aktualizacjami maszyn wirtualnych platformy Azure

W tym artykule przedstawiono proces korzystania z interfejsu API REST platformy Azure w celu wyzwolenia oceny i wdrożenia aktualizacji na maszynie wirtualnej platformy Azure za pomocą usługi Azure Update Manager na platformie Azure. Jeśli dopiero zaczynasz korzystać z rozwiązania Update Manager i chcesz dowiedzieć się więcej, zobacz omówienie usługi Azure Update Manager. Aby zarządzać serwerami z obsługą usługi Arc przy użyciu interfejsu API REST platformy Azure, zobacz Jak programowo pracować z serwerami z obsługą usługi Arc.

Usługa Azure Update Manager na platformie Azure umożliwia programowe korzystanie z interfejsu API REST platformy Azure. Ponadto możesz użyć odpowiednich poleceń REST z poziomu programu Azure PowerShell i interfejsu wiersza polecenia platformy Azure.

Obsługa interfejsu API REST platformy Azure do zarządzania maszynami wirtualnymi platformy Azure jest dostępna za pośrednictwem rozszerzenia maszyny wirtualnej programu Update Manager.

Ocena aktualizacji

Aby wyzwolić ocenę aktualizacji na maszynie wirtualnej platformy Azure, określ następujące żądanie POST:

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

Aby określić żądanie POST, możesz użyć polecenia az vm assess-patches interfejsu wiersza polecenia platformy Azure.

az vm assess-patches -g MyResourceGroup -n MyVm

Wdrażanie aktualizacji

Aby wyzwolić wdrożenie aktualizacji na maszynie wirtualnej platformy Azure, określ następujące żądanie POST:

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

Treść żądania

W poniższej tabeli opisano elementy treści żądania:

Właściwości opis
maximumDuration Maksymalny czas wykonywania operacji. Musi to być ciąg czasu trwania zgodny ze standardem ISO 8601, taki jak PT4H (4 godziny).
rebootSetting Flaga do stanu, jeśli maszyna powinna zostać ponownie uruchomiona, a instalacja aktualizacji systemu operacyjnego gościa wymaga jej ukończenia. Dopuszczalne wartości to: IfRequired, NeverReboot, AlwaysReboot.
windowsParameters Opcje parametrów aktualizacji systemu operacyjnego gościa na maszynach wirtualnych platformy Azure z obsługiwanym systemem operacyjnym Microsoft Windows Server.
windowsParameters - classificationsToInclude Lista kategorii/klasyfikacji, które mają być używane do wybierania aktualizacji do zainstalowania na maszynie. Dopuszczalne wartości to: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude Lista identyfikatorów bazy wiedzy usługi Windows Update, które powinny być zainstalowane. Zostaną zainstalowane wszystkie aktualizacje należące do klasyfikacji podanych na classificationsToInclude liście. kbNumbersToInclude jest opcjonalną listą określonych baz danych do zainstalowania oprócz klasyfikacji. Na przykład: 1234.
windowsParameters - kbNumbersToExclude Lista identyfikatorów bazy wiedzy usługi Windows Update, których nie należy instalować. Ten parametr zastępuje windowsParameters - classificationsToIncludewartość , co oznacza, że identyfikator bazy wiedzy usługi Windows Update określony w tym miejscu nie zostanie zainstalowany, nawet jeśli należy do klasyfikacji podanej w parametrze classificationsToInclude .
linuxParameters Opcje parametrów aktualizacji systemu operacyjnego gościa na maszynach wirtualnych platformy Azure z obsługiwanym systemem operacyjnym Linux.
linuxParameters - classificationsToInclude Lista kategorii/klasyfikacji, które mają być używane do wybierania aktualizacji do zainstalowania na maszynie. Dopuszczalne wartości to: Critical, Security, Other
linuxParameters - packageNameMasksToInclude Lista pakietów systemu Linux, które powinny być zainstalowane. Zostaną zainstalowane wszystkie aktualizacje należące do klasyfikacji podanych na classificationsToInclude liście. packageNameMasksToInclude to opcjonalna lista nazw pakietów, które mają być zainstalowane oprócz klasyfikacji. Na przykład: mysql, libc=1.0.1.1, kernel*.
linuxParameters - packageNameMasksToExclude Lista aktualizacji, których nie należy instalować. Ten parametr zastępuje linuxParameters - packageNameMasksToExcludewartość , co oznacza, że pakiet określony tutaj nie zostanie zainstalowany, nawet jeśli należy do klasyfikacji podanej w parametrze classificationsToInclude .

Aby określić żądanie POST, możesz użyć następującego wywołania interfejsu API REST platformy Azure z prawidłowymi parametrami i wartościami.

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

Tworzenie harmonogramu konfiguracji konserwacji

Aby utworzyć harmonogram konfiguracji konserwacji, określ następujące żądanie PUT:

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

Treść żądania

W poniższej tabeli opisano elementy treści żądania:

Właściwości opis
id W pełni kwalifikowany identyfikator zasobu
location Pobiera lub ustawia lokalizację zasobu
name Nazwa zasobu
properties.extensionProperties Pobiera lub ustawia rozszerzenieWłaściwości konserwacjiKonfiguracja
properties.maintenanceScope Pobiera lub ustawia konserwacjęZakres konfiguracji
properties.maintenanceWindow.duration Czas trwania okna obsługi w formacie HH:MM. Jeśli nie zostanie podana, wartość domyślna jest używana na podstawie podanego zakresu konserwacji. Przykład: 05:00.
properties.maintenanceWindow.expirationDateTime Data wygaśnięcia okna obsługi w formacie RRRR-MM-DD hh:mm. Okno jest tworzone w strefie czasowej podanej w celu oszczędności światła dziennego zgodnie z tym strefą czasową. Data wygaśnięcia musi być ustawiona na datę przyszłej. Jeśli nie zostanie podana, zostanie ustawiona maksymalna data/godzina 9999-12-31 23:59:59.
properties.maintenanceWindow.recurEvery Szybkość, z jaką okno obsługi ma się powtarzać. Stawka może być wyrażona jako harmonogramy dzienne, tygodniowe lub miesięczne. Harmonogramy dzienne są formatowane jako recurEvery: [Frequency as integer]['Day(s)']. Jeśli nie podano żadnej częstotliwości, domyślna częstotliwość to 1. Przykłady harmonogramu codziennego są recurEvery: Day, recurEvery: 3Days. Harmonogramy tygodniowe są formatowane jako recurEvery: [Frequency as integer]['Week(s)'] [Opcjonalna lista rozdzielana przecinkami dni powszednie poniedziałek-niedziela]. Przykłady harmonogramu tygodniowego to recurEvery: 3Weeks, recurEvery: Week Saturday, Sunday. Harmonogramy miesięczne są formatowane jako [Frequency as integer]['Month(s)'] [Przecinki rozdzielone listą dni miesiąca] lub [Frequency as integer]['Month(s)] [Week of Month (Pierwszy, Drugi, Trzeci, Czwarty, Last)] [Weekday monday-sunday]. Przykłady harmonogramu miesięcznego to recurEvery: Month, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Czwarty poniedziałek.
properties.maintenanceWindow.startDateTime Data rozpoczęcia okna obsługi w formacie RRRR-MM-DD hh:mm. Możesz ustawić datę rozpoczęcia na bieżącą datę lub datę przyszłą. Okno zostanie utworzone w podanej strefie czasowej i dostosowane do oszczędności światła dziennego zgodnie z tym strefą czasową.
properties.maintenanceWindow.timeZone Nazwa strefy czasowej. Listę stref czasowych można uzyskać, wykonując polecenie [System.TimeZoneInfo]:GetSystemTimeZones() w programie PowerShell. Przykład: Pacyfik (czas standardowy), UTC, Europa (czas standardowy), Korea (czas standardowy), Cen (Cen). Australia (czas standardowy).
properties.namespace Pobiera lub ustawia przestrzeń nazw zasobu
properties.visibility Pobiera lub ustawia widoczność konfiguracji. Wartość domyślna to "Niestandardowy"
systemData Metadane usługi Azure Resource Manager zawierające informacje createdBy i modifiedBy.
tags Pobiera lub ustawia tagi zasobu
type Typ zasobu

Aby określić żądanie POST, możesz użyć następującego wywołania interfejsu API REST platformy Azure z prawidłowymi parametrami i wartościami.

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

Kojarzenie maszyny wirtualnej z harmonogramem

Aby skojarzyć maszynę wirtualną z harmonogramem konfiguracji konserwacji, określ następujące żądanie PUT:

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

Aby określić żądanie PUT, możesz użyć następującego wywołania interfejsu API REST platformy Azure z prawidłowymi parametrami i wartościami.

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

Usuwanie maszyny z harmonogramu

Aby usunąć maszynę z harmonogramu, pobierz wszystkie nazwy przypisań konfiguracji dla maszyny, która została utworzona w celu skojarzenia maszyny z bieżącym harmonogramem z usługi Azure Resource Graph, jak pokazano na liście:

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

Po uzyskaniu nazwy z powyższego usuń przypisanie konfiguracji, postępując zgodnie z żądaniem DELETE —

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

Następne kroki