Как программно управлять обновлениями для виртуальных машин Azure

В этой статье описывается процесс использования REST API Azure для активации оценки и развертывания обновлений на виртуальной машине Azure с помощью Azure Update Manager в Azure. Если вы не знакомы с Диспетчером обновлений и хотите узнать больше, ознакомьтесь с обзором Диспетчера обновлений Azure. Сведения об использовании REST API Azure для управления серверами с поддержкой Arc см. в статье "Как программно работать с серверами с поддержкой Arc".

Диспетчер обновлений Azure в Azure позволяет использовать REST API Azure для программного доступа. Кроме того, можно использовать соответствующие команды REST из Azure PowerShell и Azure CLI.

Поддержка REST API Azure для управления виртуальными машинами Azure доступна через расширение виртуальной машины Update Manager.

Оценка обновлений

Чтобы активировать оценку обновления на виртуальной машине Azure, укажите следующий запрос POST:

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

Чтобы указать запрос POST, можно использовать команду Azure CLI az vm assess-patches .

az vm assess-patches -g MyResourceGroup -n MyVm

Обновление развертывания

Чтобы активировать развертывание обновления на виртуальной машине Azure, укажите следующий запрос POST:

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

Текст запроса

В следующей таблице описываются элементы текста запроса:

Свойство Description
maximumDuration Максимальное время выполнения операции. Это должна быть строка длительности, совместимая с ISO 8601, например PT4H (4 часа).
rebootSetting Помечайте состояние, если компьютер должен быть перезагружен, и если для завершения установки обновления гостевой ОС требуется. Допустимые значения: IfRequired, NeverReboot, AlwaysReboot
windowsParameters Параметры для обновления гостевой ОС на виртуальных машинах Azure под управлением поддерживаемой операционной системы Microsoft Windows Server.
windowsParameters - classificationsToInclude Список категорий и классификаций, используемых для выбора обновлений, установленных на компьютере. Допустимые значения: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude Список установленных идентификаторов Обновл. Windows КБ. Будут установлены все обновления, относящиеся к классификациям, указанным в classificationsToInclude списке. kbNumbersToInclude— это необязательный список определенных КБ, которые необходимо установить в дополнение к классификациям. Например: 1234
windowsParameters - kbNumbersToExclude Список идентификаторов Обновл. Windows КБ, которые не должны быть установлены. Этот параметр переопределяетсяwindowsParameters - classificationsToInclude, то есть идентификатор Обновл. Windows КБ, указанный здесь, не будет установлен, даже если он принадлежит классификации, предоставленной в параметреclassificationsToInclude.
maxPatchPublishDate Это используется для установки исправлений, опубликованных до указанной максимальной даты публикации.
linuxParameters Параметры для обновления гостевой ОС на виртуальных машинах Azure под управлением поддерживаемой операционной системы сервера Linux.
linuxParameters - classificationsToInclude Список категорий и классификаций, используемых для выбора обновлений, установленных на компьютере. Допустимые значения: Critical, Security, Other
linuxParameters - packageNameMasksToInclude Список установленных пакетов Linux. Будут установлены все обновления, относящиеся к классификациям, указанным в classificationsToInclude списке. packageNameMasksToInclude — это необязательный список имен пакетов, которые необходимо установить в дополнение к классификациям. Например: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Список обновлений, которые не должны быть установлены. Этот параметр переопределяется linuxParameters - packageNameMasksToExclude, то есть пакет, указанный здесь, не будет установлен, даже если он принадлежит классификации, предоставленной в параметре classificationsToInclude .

Чтобы указать запрос POST, можно использовать следующий вызов REST API Azure с допустимыми параметрами и значениями.

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

Создание расписания конфигурации обслуживания

Чтобы создать расписание конфигурации обслуживания, укажите следующий запрос PUT:

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

Текст запроса

В следующей таблице описываются элементы текста запроса:

Свойство Description
id Полный идентификатор ресурса
location Возвращает или задает расположение ресурса
name Имя ресурса.
properties.extensionProperties Возвращает или задает extensionProperties для обслуживанияConfiguration
properties.maintenanceScope Возвращает или задает обслуживаниеScope конфигурации
properties.maintenanceWindow.duration Длительность периода обслуживания в формате HH:MM. Если это не указано, значение по умолчанию используется на основе предоставленных область обслуживания. Пример: 05:00.
properties.maintenanceWindow.expirationDateTime Дата истечения срока действия периода обслуживания в формате ГГГГ-ММ-ДД чч:мм. Окно создается в часовом поясе, предоставленном в соответствии с этим часовой поясом. Дата окончания срока действия должна быть задана в будущем. Если оно не указано, оно установлено в качестве максимального значения datetime 9999-12-31 23:59:59.59.
properties.maintenanceWindow.recurEvery Скорость, с которой ожидается повторная обработка периода обслуживания. Ставка может быть выражена как ежедневные, еженедельные или ежемесячные расписания. Ежедневные расписания форматируются как recurEvery: [Частота в виде целочисленного числа]['Day(s)]. Если частота не указана, частота по умолчанию — 1. Примеры ежедневного расписания — recurEvery: Day, recurEvery: 3Days. Еженедельные расписания форматируются как recurEvery: [Частота как целочисленное число][Неделя()]] [Необязательный список запятых разделенных списков еженедельных дней в понедельник-воскресенье]. Примеры еженедельного расписания — recurEvery: 3Weeks, recurEvery: Неделя суббота, воскресенье. Ежемесячные расписания форматируются как [частота в виде целочисленного числа]['Месяцы)] [разделенный запятыми список дней месяца] или [Частота как целое число][месяцы)] [Неделя месяца (первая, третья, четвертая, последняя)] [Weekday понедельник-воскресенье]. Примеры ежемесячного расписания — recurEvery: Month, recurEvery: 2Months, recurEvery: Month day23, day24, recurEvery: Month Last Sunday, recurEvery: Month Fourth Monday.
properties.maintenanceWindow.startDateTime Дата начала периода обслуживания в формате ГГГГ-ММ-ДД hh:mm. Вы можете задать дату начала либо текущей, либо будущей. Окно будет создано в часовом поясе, предоставленном и скорректировано в соответствии с дневной экономией в соответствии с этим часовом поясом.
properties.maintenanceWindow.timeZone Имя часового пояса. Список часовых поясов можно получить путем выполнения [System.TimeZoneInfo]:GetSystemTimeZones() в PowerShell. Пример: Тихоокеанское стандартное время, UTC, W. Europe Standard Time, Корея Standard Time, Cen. Стандартное время Австралии.
properties.namespace Возвращает или задает пространство имен ресурса
properties.visibility Возвращает или задает видимость конфигурации. Значение по умолчанию — Custom
systemData Метаданные Azure Resource Manager, содержащие данные createdBy и modifiedBy.
tags Возвращает или задает теги ресурса
type Тип ресурса

Чтобы указать запрос POST, можно использовать следующий вызов REST API Azure с допустимыми параметрами и значениями.

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

Связывание виртуальной машины с расписанием

Чтобы связать виртуальную машину с расписанием конфигурации обслуживания, укажите следующий запрос PUT:

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

Чтобы указать запрос PUT, можно использовать следующий вызов REST API Azure с допустимыми параметрами и значениями.

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

Удаление компьютера из расписания

Чтобы удалить компьютер из расписания, получите все имена назначений конфигурации для компьютера, созданного для связывания компьютера с текущим расписанием из Azure Resource Graph, как указано ниже.

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

После получения имени из выше удалите назначение конфигурации, выполнив запрос DELETE.

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

Следующие шаги

  • Сведения об оценке обновлений и журналах развертывания, созданных Диспетчером обновлений, см . в журналах запросов.
  • Сведения об устранении неполадок см. в разделе "Устранение неполадок с диспетчером обновлений".