Управление обновлениями с помощью конфигурации обслуживания и 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) с запланированным окном каждые 2 часа каждые 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} \
   --resourcegroup myMaintenanceRg \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --output table

Выделенный узел

Проверьте наличие ожидающих обновлений для выделенного узла. В этом примере выходные данные для удобства чтения отображаются в виде таблицы. Замените значения для ресурсов собственными.

az maintenance update list \
   --subscription {subscription ID} \
   --resourcegroup 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".