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.