Управление обновлениями с помощью конфигурации обслуживания и Azure CLI
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы
Вы можете использовать функцию конфигураций обслуживания для управления применением обновлений платформы к различным ресурсам Azure. В этой статье рассматриваются параметры Azure CLI для использования этой функции. Дополнительные сведения о преимуществах использования конфигураций обслуживания, ограничений и других параметров управления см. в разделе "Управление обновлениями платформы с помощью конфигураций обслуживания".
Внимание
Определенные области поддерживают определенные типы компьютеров и расписания. Убедитесь, что выбрана правильная область для виртуальной машины.
Создайте конфигурацию обслуживания
Первым шагом при создании конфигурации обслуживания является создание группы ресурсов в качестве контейнера для конфигурации. В этом примере создается группа ресурсов с именем myMaintenanceRG на востоке. Если у вас уже есть группа ресурсов, которую вы хотите использовать, можно пропустить эту часть и заменить имя группы ресурсов собственным именем в остальных примерах.
az group create \
--location eastus \
--name myMaintenanceRG
После создания группы ресурсов используйте az maintenance configuration create
для создания конфигурации обслуживания.
Хост
В этом примере создается конфигурация обслуживания с именем myConfig с областью размещения компьютеров с запланированным окном в 5 часов в четвертом понедельнике каждого месяца:
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope host \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
Использование --maintenance-scope host
гарантирует, что конфигурация обслуживания будет использоваться для управления обновлениями инфраструктуры узла. Если вы попытаетесь создать конфигурацию с тем же именем, но в другом расположении, вы получите ошибку. Имена конфигураций должны быть уникальными для группы ресурсов.
Чтобы проверить, успешно ли вы создали конфигурацию обслуживания, можно запросить доступные конфигурации обслуживания с помощью az maintenance configuration list
:
az maintenance configuration list
--query "[].{Name:name, ID:id}"
--output table
Вы можете выразить повторение обслуживания в виде ежедневного, еженедельного или ежемесячного. Далее приводятся некоторые примеры.
- Ежедневно:
maintenance-window-recur-every
значение"Day"
или"3Days"
. - Еженедельно:
maintenance-window-recur-every
значение"3Weeks"
или"Week Saturday,Sunday"
. - Ежемесячно:
maintenance-window-recur-every
значение"Month day23,day24"
или"Month Last Sunday"
Month Fourth Monday
.
Масштабируемые наборы виртуальных машин
В этом примере создается конфигурация обслуживания с именем myConfig с областью действия образа ОС для масштабируемых наборов виртуальных машин с запланированным окном в 5 часов в четвертом понедельнике каждого месяца:
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope osimage \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
Гостевые виртуальные машины
В этом примере создается конфигурация обслуживания с именем myConfig , ограниченная гостевыми компьютерами (виртуальными машинами и серверами с поддержкой Azure Arc), с запланированным окном каждые 20 дней. Дополнительные сведения о конфигурациях обслуживания на гостевых виртуальных машинах.
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope InGuestPatch \
--location eastus \
--maintenance-window-duration "02:00" \
--maintenance-window-recur-every "20days" \
--maintenance-window-start-date-time "2022-12-30 07:00" \
--maintenance-window-time-zone "Pacific Standard Time" \
--install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
--install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
--reboot-setting "IfRequired" \
--extension-properties InGuestPatchMode="User"
Назначение конфигурации
Используйте az maintenance assignment create
, чтобы назначить конфигурацию для виртуальной машины.
Изолированная виртуальная машина
Примените конфигурацию к изолированной виртуальной машине узла с помощью идентификатора конфигурации. Укажите --resource-type virtualMachines
. Укажите имя виртуальной машины для --resource-name
, группу ресурсов виртуальной машины и --resource-group
расположение виртуальной машины для --location
.
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
Выделенный узел
Чтобы применить конфигурацию к выделенному узлу, необходимо включить --resource-type hosts
, --resource-parent-name
с именем группы узлов и --resource-parent-type hostGroups
.
Параметр --resource-id
— это идентификатор узла. Чтобы получить идентификатор выделенного узла, можно использовать команду az-vm-host-get-instance-view.
az maintenance assignment create \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myDhResourceGroup/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig" \
--location eastus \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
Масштабируемые наборы виртуальных машин
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
Гостевые виртуальные машины
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
Проверка конфигурации
Вы можете проверить правильность применения конфигурации или проверить, какая конфигурация применяется в данный момент с помощью az maintenance assignment list
.
Изолированная виртуальная машина
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
Выделенный узел
az maintenance assignment list \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--query "[].{ResourceGroup:resourceGroup,configName:name}" \
--output table
Масштабируемые наборы виртуальных машин
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
Гостевые виртуальные машины
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
Проверка ожидающих обновлений
Используйте az maintenance update list
, чтобы узнать, есть ли ожидающие обновления. Обновите --subscription
идентификатор подписки, содержащей виртуальную машину.
Если обновлений нет, команда возвращает сообщение об ошибке, содержащее текст Resource not found...StatusCode: 404
.
При наличии обновлений команда возвращает только одну, даже если ожидается несколько обновлений. Данные для этого обновления возвращаются в объекте:
[
{
"impactDurationInSec": 9,
"impactType": "Freeze",
"maintenanceScope": "Host",
"notBefore": "2020-03-03T07:23:04.905538+00:00",
"resourceId": "/subscriptions/9120c5ff-e78e-4bd0-b29f-75c19cadd078/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
"status": "Pending"
}
]
Изолированная виртуальная машина
Проверьте наличие ожидающих обновлений для изолированной виртуальной машины. В этом примере выходные данные форматируются в виде таблицы для удобства чтения:
az maintenance update list \
--subscription {subscription ID} \
--resource-group myMaintenanceRg \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--output table
Выделенный узел
Проверьте наличие ожидающих обновлений для выделенного узла. В этом примере выходные данные для удобства чтения отображаются в виде таблицы. Замените значения для ресурсов собственными.
az maintenance update list \
--subscription {subscription ID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parentname myHostGroup \
--resource-parent-type hostGroups \
--output table
Применение обновлений
Используйте az maintenance apply update
для применения ожидающих обновлений. При успешном выполнении эта команда возвращает JSON, содержащую сведения об обновлении. Вызовы для применения обновлений могут занять до 2 часов.
Изолированная виртуальная машина
Создайте запрос, чтобы применить обновления к изолированной виртуальной машине:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute
Выделенный узел
Примените обновления к выделенному узлу:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
Масштабируемые наборы виртуальных машин
Примените обновления к масштабируемой группе:
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute
Проверка состояния применения обновлений
Вы можете проверить ход выполнения обновлений с помощью az maintenance applyupdate get
.
Чтобы просмотреть результаты последнего обновления, используйте default
его в качестве имени обновления. Или замените myUpdateName
именем обновления, возвращаемого при выполнении az maintenance applyupdate create
.
Status : Completed
ResourceId : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name : default
Type : Microsoft.Maintenance/applyUpdates
LastUpdateTime
— это время завершения обновления, инициируемое обновлением или платформой, так как вы не использовали период самостоятельного обслуживания. Если обновление никогда не применялось с помощью конфигураций обслуживания, LastUpdateTime
отображается значение по умолчанию.
Изолированная виртуальная машина
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
Выделенный узел
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
Масштабируемые наборы виртуальных машин
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
Удаление конфигурации обслуживания
Чтобы удалить конфигурацию обслуживания, используйте az maintenance configuration delete
. Удаление конфигурации приведет к удалению управления обслуживанием из связанных ресурсов.
az maintenance configuration delete \
--subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
-resource-group myResourceGroup \
--resource-name myConfig
Следующие шаги
Дополнительные сведения см. в статье "Обслуживание виртуальных машин в Azure".