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


Как программно управлять обновлениями для серверов с поддержкой Azure Arc?

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

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

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

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

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

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview`
{
}

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

az rest --method post --url https://management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview --body @body.json

Формат текста запроса для версии 2020-08-15 выглядит следующим образом:

{
}

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

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

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview`

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

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

Свойство Описание
maximumDuration Максимальное время в минутах может занять операция обновления ОС. Это должна быть строка длительности, совместимая с ISO 8601, например PT100M.
rebootSetting Флаг, указывающий, нужно ли перезагрузить компьютер и требуется ли это для завершения установки обновлений гостевой операционной системы. Допустимые значения: IfRequired, NeverReboot, AlwaysReboot
windowsParameters Параметры для обновления гостевой ОС на компьютере под управлением поддерживаемой операционной системы Microsoft Windows Server.
windowsParameters - classificationsToInclude Список категорий или классификаций обновлений ОС, которые необходимо применить и которые поддерживаются и предоставляются ОС Windows Server. Допустимые значения: Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Update
windowsParameters - kbNumbersToInclude Список идентификаторов обновлений Windows KB, доступных для компьютера и требующих установки. Если вы включили любые «классификации для включения», устанавливаются базы знаний, доступные в категории. 'kbNumbersToInclude' — это параметр, позволяющий предоставить список специфических идентификаторов обновлений баз знаний, которые вы хотите установить в дополнение к уже имеющимся. Например: 1234
windowsParameters - kbNumbersToExclude Список идентификаторов базы знаний обновлений Windows, доступных на компьютере, которые не должны быть установлены. Если вы включили какие-либо классификации для включения, то будут установлены базы знаний, доступные в категории. "kbNumbersToExclude" — это параметр, позволяющий предоставить список определённых идентификаторов базы знаний, которые вы хотите удостовериться, не будут установлены. Например: 5678
maxPatchPublishDate Это используется для установки исправлений, опубликованных до указанной максимальной даты публикации.
linuxParameters Параметры для обновления гостевой ОС, когда машина работает с поддерживаемым дистрибутивом Linux
linuxParameters - classificationsToInclude Список категорий или классификаций обновлений ОС, которые следует применить, как поддерживается и предоставляется менеджером пакетов ОС Linux. Допустимые значения: Critical, Security, Others Дополнительные сведения см. в разделе "Диспетчер пакетов Linux" и поддержка ОС.
linuxParameters - packageNameMasksToInclude Список пакетов Linux, доступных для компьютера и которые должны быть установлены. Если вы включили любой "classificationsToInclude", пакеты, доступные в категории, будут установлены. PackageNameMasksToInclude — это параметр для предоставления списка пакетов более поздних версий, которые необходимо установить. Например: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude Список пакетов Linux, доступных для компьютера, которые не должны быть установлены. Если вы включили любой "classificationsToInclude", пакеты, доступные в категории, будут установлены. Option 'packageNameMasksToExclude' позволяет предоставить список определенных пакетов, которые не должны быть установлены. Например: mysql, libc=1.0.1.1, kernel*

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

POST on 'subscriptions/subscriptionI/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview

{
        "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 Возвращает или задает maintenanceScope конфигурации
properties.maintenanceWindow.duration Длительность периода обслуживания в формате HH:mm. Если это не указано, значение по умолчанию будет использоваться в зависимости от заданной области обслуживания. Пример: 05:00.
properties.maintenanceWindow.expirationDateTime Срок действия периода обслуживания в формате ГГГГ-ММ-ДД hh:MM. Окно создается в указанном часовом поясе, с учетом перехода на летнее время в этом часовом поясе. Необходимо задать дату окончания срока действия на будущую дату. Если оно не указано, оно будет установлено на максимальное значение даты и времени 9999-12-31 23:59:59.
properties.maintenanceWindow.recurEvery Частота, с которой ожидается повторение окна обслуживания. Ставка может быть выражена на основе ежедневного, еженедельного или ежемесячного расписания. Ежедневное расписание можно форматировать как recurEvery: [Частота в виде целого числа]['Day(s)']. Если частота не указана, частота по умолчанию — 1. Примеры ежедневного расписания — recurEvery: Day, recurEvery: 3Days. Еженедельные расписания форматируются как recurEvery: [Частота как целое число]['Неделя(и)'] [Необязательный список дней недели через запятую, например, Понедельник-Воскресенье]. Примеры еженедельного расписания — recurEvery: 3Weeks, recurEvery: Неделя суббота, воскресенье. Вы можете форматировать ежемесячные расписания как [Частота как целое число]['Месяцы'] [список дней месяца, разделенный запятыми] или [Частота как целое число]['Месяцы'] [Неделя месяца (первая, вторая, третья, четвертая, последняя)] [День недели Понедельник-Воскресенье]. Примеры ежемесячного расписания — recurEvery: Месяц; recurEvery: 2Месяца; recurEvery: Месяц день23, день24; recurEvery: Месяц Последнее воскресенье; recurEvery: Месяц Четвертый понедельник.
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, как указано ниже.

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`

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