Partilhar via


Controlar atualizações com Configurações de Manutenção e Azure PowerShell

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

Você pode usar o recurso Configurações de Manutenção para controlar quando aplicar atualizações de plataforma a vários recursos do Azure. Este artigo aborda as opções do Azure PowerShell para hosts dedicados e máquinas virtuais (VMs) isoladas. Para obter mais informações sobre os benefícios de usar o recurso Configurações de manutenção, suas limitações e outras opções de gerenciamento, consulte Gerenciando atualizações de plataforma com configurações de manutenção.

Se você estiver procurando informações sobre como usar Configurações de Manutenção para conjuntos de escala, consulte Controle de manutenção para Conjuntos de Escala de Máquina Virtual do Azure.

Importante

Escopos específicos suportam determinados tipos de máquinas e cronogramas. Certifique-se de selecionar o escopo certo para sua VM.

Habilitar o módulo do Azure PowerShell

Certifique-se de que PowerShellGet está atualizado:

Install-Module -Name PowerShellGet -Repository PSGallery -Force

Instale o Az.Maintenance módulo do Azure PowerShell:

Install-Module -Name Az.Maintenance

Verifique se você está executando a versão mais recente do Az.Maintenance (versão 1.2.0):

Get-Module -ListAvailable -Name Az.Maintenance

Certifique-se de que está a executar a versão apropriada do Az.Maintenance:

Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0

Se você estiver instalando localmente, certifique-se de abrir o prompt do Azure PowerShell como administrador.

Poderá ser-lhe pedido que confirme que pretende instalar a partir de um repositório não fidedigno. Digite Y ou selecione Sim para todos para instalar o módulo.

Criar uma configuração de manutenção

A primeira etapa na criação de uma configuração de manutenção é criar um grupo de recursos como um contêiner para sua configuração. Este exemplo cria um grupo de recursos chamado myMaintenanceRG no eastus. Se você já tiver um grupo de recursos que deseja usar, poderá ignorar essa parte e substituir o nome do grupo de recursos pelo seu próprio no restante dos exemplos.

New-AzResourceGroup `
   -Location eastus `
   -Name myMaintenanceRG

Você pode declarar uma janela agendada quando o Azure aplicará recorrentemente as atualizações em seus recursos. Depois de criar uma janela agendada, você não precisa mais aplicar as atualizações manualmente.

Você pode expressar a recorrência de manutenção como diária, semanal ou mensal. Seguem-se alguns exemplos:

  • Diário: Um RecurEvery valor de "Day" ou "3Days".
  • Semanal: um RecurEvery valor de "3Weeks" ou "Week Saturday,Sunday".
  • Mensal: um RecurEvery valor de "Month day23,day24" ou "Month Last Sunday" "Month Fourth Monday"ou .

Host

Este exemplo cria uma configuração de manutenção chamada myConfig com escopo para Host, com uma janela agendada de 5 horas na quarta segunda-feira de cada mês. O duration valor do cronograma para este escopo deve ser de pelo menos duas horas. Para começar, defina os parâmetros para 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"

Depois de definir os parâmetros, você pode usar o New-AzMaintenanceConfiguration cmdlet para criar sua configuração:

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

O uso $scope = "Host" garante que a configuração de manutenção seja usada para controlar atualizações em máquinas host. Certifique-se de criar uma configuração para o escopo específico das máquinas que você está segmentando. Saiba mais sobre escopos.

Imagem do SO

Este exemplo cria uma configuração de manutenção chamada myConfig com escopo para osimage, com uma janela agendada de 8 horas a cada 5 dias. O duration valor do cronograma para este escopo deve ser de pelo menos 5 horas. Este escopo permite um máximo de 7 dias para a recorrência do cronograma.

$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time" 
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"

Depois de definir os parâmetros, você pode usar o New-AzMaintenanceConfiguration cmdlet para criar sua configuração:

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

Convidado

A adição mais recente ao recurso Configurações de manutenção é o InGuestPatch escopo. Este exemplo mostra como criar uma configuração de manutenção para um escopo convidado usando o Azure PowerShell. Para obter mais informações sobre esse escopo, consulte Convidado.

$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";

Depois de definir os parâmetros, você pode usar o New-AzMaintenanceConfiguration cmdlet para criar sua configuração:

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"}

Se você tentar criar uma configuração com o mesmo nome, mas em um local diferente, receberá um erro. Os nomes de configuração devem ser exclusivos para o seu grupo de recursos.

Você pode verificar se criou com êxito as configurações de manutenção usando Get-AzMaintenanceConfiguration:

Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id

Atribuir a configuração

Depois de criar sua configuração, convém também atribuir máquinas a ela usando o Azure PowerShell. Você pode usar o cmdlet New-AzConfigurationAssignment .

VM isolada

Atribua a configuração a uma VM usando a ID da configuração. Especifique -ResourceType VirtualMachines. Forneça o nome da VM para -ResourceName, e forneça o grupo de recursos da VM para -ResourceGroupName.

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVM" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Anfitrião dedicado

Para aplicar uma configuração a um host dedicado, você precisa incluir -ResourceType hosts, -ResourceParentName com o nome do grupo de hosts e -ResourceParentType hostGroups:

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName myHostGroup `
   -ResourceParentType hostGroups `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Conjuntos de dimensionamento de máquinas virtuais

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Convidado

New-AzConfigurationAssignment `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myGuest" `
   -ResourceType "VirtualMachines" `
   -ProviderName "Microsoft.Compute" `
   -ConfigurationAssignmentName "configName" `
   -MaintenanceConfigurationId "configID"

Verificar se há atualizações pendentes

Para verificar se há atualizações pendentes, use Get-AzMaintenanceUpdate. Use -subscription para especificar a assinatura do Azure da VM, se ela for diferente daquela na qual você está conectado.

Se não houver atualizações para mostrar, esse comando não retornará nada. Caso contrário, ele retorna um PSApplyUpdate objeto:

{
   "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"
} 

VM isolada

Verifique se há atualizações pendentes para uma VM isolada. Neste exemplo, a saída é formatada como uma tabela para legibilidade:

Get-AzMaintenanceUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" | Format-Table

Anfitrião dedicado

Verifique se há atualizações pendentes para um host dedicado. Neste exemplo, a saída é formatada como uma tabela para legibilidade:

Get-AzMaintenanceUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" | Format-Table

Conjuntos de dimensionamento de máquinas virtuais

Get-AzMaintenanceUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" | Format-Table

Aplicar atualizações

Use New-AzApplyUpdate para aplicar atualizações pendentes. A aplicação de chamadas de atualização pode levar até 2 horas para ser concluída.

Este cmdlet funciona apenas para os escopos de imagem do host e do sistema operacional. Não funciona para o escopo de convidado.

VM isolada

Crie uma solicitação para aplicar atualizações a uma VM isolada:

New-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute"

Quando for bem-sucedido, esse comando retorna um PSApplyUpdate objeto. Você pode usar o Name Get-AzApplyUpdate atributo no comando para verificar o status da atualização, conforme descrito mais adiante neste artigo.

Anfitrião dedicado

Aplique atualizações a um host dedicado:

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName Microsoft.Compute

Conjuntos de dimensionamento de máquinas virtuais

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute"

Verificar o estado da atualização

Para verificar o status de uma atualização, use Get-AzApplyUpdate. Os comandos a seguir mostram o status da atualização mais recente usando default para o -ApplyUpdateName parâmetro. Você pode substituir o nome da atualização (retornado pelo comando New-AzApplyUpdate ) para obter o status de uma atualização específica.

Este cmdlet funciona apenas para os escopos de imagem do host e do sistema operacional. Não funciona para o escopo de convidado.

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 é o momento em que a atualização terminou, quer tenha iniciado a atualização ou a plataforma a tenha iniciado porque não utilizou a janela de automanutenção. Se uma atualização nunca foi aplicada por meio de Configurações de Manutenção, LastUpdateTime mostra o valor padrão.

VM isolada

Verifique se há atualizações para uma máquina virtual específica:

Get-AzApplyUpdate `
  -ResourceGroupName "myResourceGroup" `
  -ResourceName "myVM" `
  -ResourceType "VirtualMachines" `
  -ProviderName "Microsoft.Compute" `
  -ApplyUpdateName "applyUpdateName"

Anfitrião dedicado

Verifique se há atualizações para um host dedicado:

Get-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -ResourceName "myHost" `
   -ResourceType "hosts" `
   -ResourceParentName "myHostGroup" `
   -ResourceParentType "hostGroups" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Conjuntos de dimensionamento de máquinas virtuais

New-AzApplyUpdate `
   -ResourceGroupName "myResourceGroup" `
   -Location "eastus" `
   -ResourceName "myVMSS" `
   -ResourceType "VirtualMachineScaleSets" `
   -ProviderName "Microsoft.Compute" `
   -ApplyUpdateName "applyUpdateName"

Excluir uma configuração de manutenção

Para excluir uma configuração de manutenção, use Remove-AzMaintenanceConfiguration:

Remove-AzMaintenanceConfiguration `
   -ResourceGroupName "myResourceGroup" `
   -Name "configName"

Próximos passos

Para saber mais, consulte Manutenção para máquinas virtuais no Azure.