Управление обновлениями с помощью Конфигураций обслуживания и 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, область d toHost, с запланированным окном в 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, область d toosimage, с запланированным окном каждые 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".