Управление обновлениями с помощью Конфигураций обслуживания и Azure PowerShell
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы
Вы можете использовать функцию конфигураций обслуживания для управления применением обновлений платформы к различным ресурсам Azure. В этой статье рассматриваются параметры Azure PowerShell для выделенных узлов и изолированных виртуальных машин. Дополнительные сведения о преимуществах использования функции конфигураций обслуживания, ограничений и других параметров управления см. в разделе "Управление обновлениями платформы с помощью конфигураций обслуживания".
Если вы ищете сведения об использовании конфигураций обслуживания для масштабируемых наборов, см. управление обслуживанием для Azure Масштабируемые наборы виртуальных машин.
Внимание
Определенные области поддерживают определенные типы компьютеров и расписания. Не забудьте выбрать нужную область для виртуальной машины.
Включение модуля Azure PowerShell
Убедитесь, что PowerShellGet
это актуально:
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Az.Maintenance
Установите модуль Azure PowerShell:
Install-Module -Name Az.Maintenance
Убедитесь, что вы используете последнюю версию Az.Maintenance
(версия 1.2.0):
Get-Module -ListAvailable -Name Az.Maintenance
Убедитесь, что вы используете соответствующую версию Az.Maintenance
:
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Если вы устанавливаете локально, откройте запрос Azure PowerShell от имени администратора.
Возможно, вам будет предложено подтвердить, что вы хотите установить из ненадежного репозитория. Введите Y или нажмите кнопку "Да" для установки модуля.
Создайте конфигурацию обслуживания
Первым шагом при создании конфигурации обслуживания является создание группы ресурсов в качестве контейнера для конфигурации. В этом примере создается группа ресурсов с именем myMaintenanceRG на востоке. Если у вас уже есть группа ресурсов, которую вы хотите использовать, можно пропустить эту часть и заменить имя группы ресурсов собственным именем в остальных примерах.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
Вы можете объявить запланированное окно, когда Azure будет регулярно применять обновления к ресурсам. После создания запланированного окна больше не нужно применять обновления вручную.
Вы можете выразить повторение обслуживания в виде ежедневного, еженедельного или ежемесячного. Далее приводятся некоторые примеры.
- Ежедневно:
RecurEvery
значение"Day"
или"3Days"
. - Еженедельно:
RecurEvery
значение"3Weeks"
или"Week Saturday,Sunday"
. - Ежемесячно:
RecurEvery
значение"Month day23,day24"
или"Month Last Sunday"
"Month Fourth Monday"
.
Хост
В этом примере создается конфигурация обслуживания с именем myConfig Host
с запланированным окном 5 часов в четвертом понедельнике каждого месяца. Значение duration
расписания для этой области должно быть не менее двух часов. Чтобы начать, определите параметры для New-AzMaintenanceConfiguration
:
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
После определения параметров можно использовать New-AzMaintenanceConfiguration
командлет для создания конфигурации:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Использование $scope = "Host"
гарантирует, что конфигурация обслуживания используется для управления обновлениями на хост-компьютерах. Обязательно создайте конфигурацию для конкретной области компьютеров, предназначенных для вас. Дополнительные сведения о областях.
Образ ОС
В этом примере создается конфигурация обслуживания с именем myConfig osimage
с заданной областью действия с запланированным окном 8 часов каждые 5 дней. Значение duration
расписания для этой области должно быть не менее 5 часов. Эта область позволяет использовать не более 7 дней для повторения расписания.
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
После определения параметров можно использовать New-AzMaintenanceConfiguration
командлет для создания конфигурации:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
Гость
Последнее дополнение к функции конфигураций обслуживания является областью InGuestPatch
. В этом примере показано, как создать конфигурацию обслуживания для гостевой области с помощью Azure PowerShell. Дополнительные сведения об этой области см. в разделе "Гость".
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
После определения параметров можно использовать New-AzMaintenanceConfiguration
командлет для создания конфигурации:
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
Если вы попытаетесь создать конфигурацию с тем же именем, но в другом расположении, вы получите ошибку. Имена конфигураций должны быть уникальными для группы ресурсов.
Можно проверить, успешно ли вы создали конфигурации обслуживания с помощью Get-AzMaintenanceConfiguration:
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Назначение конфигурации
После создания конфигурации может потребоваться также назначить компьютеры с помощью Azure PowerShell. Вы можете использовать командлет New-AzConfigurationAssignment .
Изолированная виртуальная машина
Назначьте конфигурацию виртуальной машине с помощью идентификатора конфигурации. Укажите -ResourceType VirtualMachines
. Укажите имя виртуальной машины -ResourceName
и укажите группу ресурсов виртуальной машины.-ResourceGroupName
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Выделенный узел
Чтобы применить конфигурацию к выделенному узлу, необходимо включить -ResourceType hosts
-ResourceParentName
в нее имя группы узлов и-ResourceParentType hostGroups
:
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Масштабируемые наборы виртуальных машин
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Гость
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
Проверка ожидающих обновлений
Проверка ожидающих обновлений используйте Get-AzMaintenanceUpdate. Используйте -subscription
для указания подписки Azure виртуальной машины, если она отличается от той, в которую вы вошли.
Если для отображения обновлений нет, эта команда ничего не возвращает. В противном случае возвращается PSApplyUpdate
объект:
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
Изолированная виртуальная машина
Проверьте наличие ожидающих обновлений для изолированной виртуальной машины. В этом примере выходные данные форматируются в виде таблицы для удобства чтения:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Выделенный узел
Проверьте наличие ожидающих обновлений для выделенного узла. В этом примере выходные данные форматируются в виде таблицы для удобства чтения:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
Масштабируемые наборы виртуальных машин
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
Применение обновлений
Используйте командлет New-AzApplyUpdate для применения ожидающих обновлений. Применение вызовов обновления может занять до 2 часов.
Этот командлет работает только для областей образа узла и ОС. Он не работает для гостевой области.
Изолированная виртуальная машина
Создайте запрос, чтобы применить обновления к изолированной виртуальной машине:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
При успешном выполнении PSApplyUpdate
эта команда возвращает объект. Атрибут в команде можно использовать Name
для проверки состояния обновления, как описано далее в этой статье.Get-AzApplyUpdate
Выделенный узел
Примените обновления к выделенному узлу:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
Масштабируемые наборы виртуальных машин
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Проверка состояния обновления
Чтобы проверить состояние обновления, используйте Get-AzApplyUpdate. Следующие команды показывают состояние последнего обновления с помощью default
-ApplyUpdateName
параметра. Имя обновления (возвращаемое командой New-AzApplyUpdate) можно подставить, чтобы получить состояние конкретного обновления.
Этот командлет работает только для областей образа узла и ОС. Он не работает для гостевой области.
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
отображается значение по умолчанию.
Изолированная виртуальная машина
Проверьте наличие обновлений для конкретной виртуальной машины:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Выделенный узел
Проверьте наличие обновлений выделенного узла:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Масштабируемые наборы виртуальных машин
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Удаление конфигурации обслуживания
Чтобы удалить конфигурацию обслуживания, используйте Remove-AzMaintenanceConfiguration:
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
Следующие шаги
Дополнительные сведения см. в статье "Обслуживание виртуальных машин в Azure".