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

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

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

Свойство Description
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 КБ, доступных компьютеру и необходимых для установки. Если вы включили какие-либо классификацииToInclude, установлены КБ, доступные в категории. KbNumbersToInclude — это возможность предоставить список определенных идентификаторов КБ более поздних версий, которые необходимо установить. Например: 1234
windowsParameters - kbNumbersToExclude Список идентификаторов Обновл. Windows КБ, доступных на компьютере и которые не должны быть установлены. Если вы включили какие-либо классификацииToInclude, будут установлены КБ, доступные в категории. KbNumbersToExclude — это возможность предоставить список определенных идентификаторов КБ, которые требуется убедиться, что не установлены. Например: 5678
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", пакеты, доступные в категории, будут установлены. 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`

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

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

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

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