Controlar as atualizações com as Configurações de Manutenção e o Azure PowerShell
Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes
Você pode usar o recurso Configurações de Manutenção para controlar quando aplicar as atualizações de plataforma para 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 uso do recurso Configurações de Manutenção, suas limitações e outras opções de gerenciamento, consulte Gerenciamento de atualizações de plataforma com Configurações de Manutenção.
Se estiver procurando informações sobre como usar as Configurações de Manutenção para conjuntos de dimensionamento, consulte Controle de manutenção para Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure.
Importante
Escopos específicos com suporte para determinados tipos de computadores e agendamentos. Certifique-se de selecionar o escopo correto para sua VM.
Habilite o módulo do Azure PowerShell
Certifique-se de que PowerShellGet
esteja atualizado:
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Instale o módulo Az.Maintenance
do Azure PowerShell:
Install-Module -Name Az.Maintenance
Verifique se você está executando a versão mais recente de Az.Maintenance
(versão 1.2.0):
Get-Module -ListAvailable -Name Az.Maintenance
Certifique-se de estar executando a versão apropriada de Az.Maintenance
:
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
Se estiver instalando localmente, certifique-se de abrir o prompt do Azure PowerShell como administrador.
Poderá ser solicitado que você confirme que deseja instalar a partir de um repositório não confiável. Insira Y ou selecione Sim para Todos para instalar o módulo.
Criar uma configuração de manutenção
A primeira etapa da criação de uma configuração de manutenção é criar um grupo de recursos como contêiner para a sua configuração. Este exemplo cria um grupo de recursos chamado myMaintenanceRG em 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 no restante dos exemplos.
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
É possível declarar uma janela agendada quando o Azure aplicará recorrentemente as atualizações em seus recursos. Depois de criar uma janela de agendamento, você não precisará mais aplicar as atualizações manualmente.
Você pode expressar a recorrência da manutenção como diária, semanal ou mensal. Estes são alguns exemplos:
- Diário: Um valor
RecurEvery
de"Day"
ou"3Days"
. - Semanal: Um valor
RecurEvery
de"3Weeks"
ou"Week Saturday,Sunday"
. - Mensal: Um valor
RecurEvery
de"Month day23,day24"
ou"Month Last Sunday"
ou"Month Fourth Monday"
.
Host
Este exemplo cria uma configuração de manutenção denominada myConfig com escopo Host
, com uma janela de agendamento de 5 horas na quarta segunda-feira de cada mês. O valor duration
do agendamento para esse 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 cmdlet New-AzMaintenanceConfiguration
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 de $scope = "Host"
garante que a configuração de manutenção seja usada para controlar atualizações em computadores host. Certifique-se de criar uma configuração para o escopo específico doas computadores que você está direcionando. Saiba mais sobre escopos.
Imagem do sistema operacional
Este exemplo cria uma configuração de manutenção denominada myConfig com escopo para osimage
, com uma janela de agendamento de 8 horas a cada 5 dias. O valor duration
do agendamento para esse escopo deve ser de pelo menos 5 horas. Esse escopo permite um máximo de 7 dias para a recorrência do agendamento.
$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 cmdlet New-AzMaintenanceConfiguration
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 escopo InGuestPatch
. Este exemplo mostra como criar uma configuração de manutenção para um escopo de 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 cmdlet New-AzMaintenanceConfiguration
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 seu grupo de recursos.
Você pode verificar se as Configurações de Manutenção foram criadas com êxito usando Get-AzMaintenanceConfiguration:
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
Atribuir a configuração
Depois de criar sua configuração, talvez você também queira atribuir computadores 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"
Host 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 escala de máquina virtual
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 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 em que você está conectado.
Se não houver atualizações para mostrar, esse comando não retornará nada. Caso contrário, ele retornará um objeto 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"
}
VM Isolada
Verifique se há atualizações pendentes para uma VM isolada. Neste exemplo, a saída é formatada como uma tabela para facilitar a leitura:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
Host dedicado
Verifique se há atualizações pendentes para um host dedicado. Neste exemplo, a saída é formatada como uma tabela para facilitar a leitura:
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
conjuntos de escala de máquina virtual
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.
Esse cmdlet funciona somente para os escopos de imagem do host e do SO. Ele não funciona para o escopo do 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 bem-sucedido, esse comando retorna um objeto PSApplyUpdate
. Você pode usar o atributo Name
no comando Get-AzApplyUpdate
para verificar o status da atualização, conforme descrito mais adiante neste artigo.
Host dedicado
Aplicar atualizações a um host dedicado:
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
conjuntos de escala de máquina virtual
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
Verificar status 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 parâmetro -ApplyUpdateName
. Você pode substituir o nome da atualização (retornado pelo comando New-AzApplyUpdate) para obter o status de uma atualização específica.
Esse cmdlet funciona somente para os escopos de imagem do host e do SO. Ele não funciona para o escopo do 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
é a hora em que a atualização foi concluída, quer você tenha iniciado a atualização ou a plataforma a tenha iniciado porque você não usou a janela de manutenção automática. Se uma atualização nunca foi aplicada por meio das Configurações de Manutenção, LastUpdateTime
mostrará o valor padrão.
VM Isolada
Verifique se há atualizações em um máquina virtual específico:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
Host dedicado
Verifique se há atualizações em um host dedicado:
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
conjuntos de escala de máquina virtual
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óximas etapas
Para saber mais, consulte Manutenção para máquinas virtuais no Azure.