Поделиться через


Как программно управлять обновлениями для виртуальных машин 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`

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

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

Свойство Описание
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 Список KB ID обновлений Windows, которые должны быть установлены. Будут установлены все обновления, относящиеся к классификациям, указанным в classificationsToInclude списке. kbNumbersToInclude — это необязательный список конкретных ключевых объектов, которые необходимо установить в дополнение к классификациям. Например: 1234
windowsParameters - kbNumbersToExclude Список идентификаторов базы знаний центра обновления Windows, которые не должны быть установлены. Этот параметр переопределяетwindowsParameters - classificationsToInclude, то есть идентификатор обновления Windows KB, указанный здесь, не будет установлен, даже если он относится к классификации, указанной в параметре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`

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

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

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

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

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

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

Чтобы связать виртуальную машину с расписанием конфигурации обслуживания, укажите следующий запрос 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/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"
}'

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

Чтобы удалить компьютер из расписания, получите все имена назначений конфигурации для компьютера, созданного для связывания компьютера с текущим расписанием из 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`

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

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