Как программно управлять обновлениями для виртуальных машин 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/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`
Следующие шаги
- Сведения об оценке обновлений и журналах развертывания, созданных Диспетчером обновлений, см . в журналах запросов.
- Сведения об устранении неполадок см. в разделе "Устранение неполадок с диспетчером обновлений".