Compartilhar via


Atualizar IPs anexados à VM do Básico para o Standard

Importante

Em 30 de setembro de 2025, os IPs públicos básicos da SKU foram desativados. Para saber mais, confira o anúncio oficial. Se você estiver usando IPs públicos de SKU Básico no momento, atualize para IPs públicos de SKU Standard o mais rápido possível. Este artigo ajudará a guiá-lo durante o processo de atualização.

Para obter mais informações sobre a desativação de IPs Públicos de SKU Básico e os benefícios dos IPs Públicos de SKU Standard, confira aqui

Visão geral da atualização

Esse script atualiza todos os IPs anexados à VM do SKU Básico para Standard. Para executar a atualização, o método de alocação do IP é definido como estático antes de ser desassociado da VM. Depois de desassociado, o SKU do IP Público é atualizado para Standard e, em seguida, o IP é associado novamente à VM.

Como a alocação de IP público é definida como Estática antes de desanexar da VM, o endereço IP não será alterado durante o processo de atualização, mesmo que o script falhe. O módulo verifica duas vezes se o método de alocação de IP público é estático antes de desanexar o IP público da VM.

O módulo registra todas as atividades de atualização em um arquivo chamado PublicIPUpgrade.log, criado no mesmo local em que o módulo foi executado (por padrão).

Restrições/ Cenários sem suporte

  • VMs com NICs associados a um Load Balancer: como as SKUs de IP Público e Load Balancer associadas a uma VM devem ser iguais, não é possível atualizar os endereços IP públicos no nível da instância associados a uma VM quando os NICs da VM também estão associados a um Load Balancer, seja no pool de back-end ou na associação ao pool de NAT. Use os scripts Atualizar um Load Balancer Básico para a SKU Standard para atualizar o Load Balancer e os IPs públicos ao mesmo tempo.

  • VMs sem um Grupo de Segurança de Rede: as VMs com IPs a serem atualizadas devem ter um NSG (Grupo de Segurança de Rede) associado à sub-rede de cada configuração de IP com um IP Público ou diretamente com a NIC. Isso ocorre porque os IPs públicos de SKU Standard são "seguros por padrão", o que significa que qualquer tráfego para o IP público deve ser explicitamente permitido em um NSG para alcançar a VM. Os IPs Públicos de SKU Básico permitem qualquer tráfego por padrão. Atualizar SKUs de IP Público sem um NSG resultaria em tráfego de internet de entrada para o IP Público permitido anteriormente com o SKU Básico bloqueado após a migração. Confira: SKUs de IP Público

  • Conjuntos de Dimensionamento de Máquinas Virtuais com configurações de IP público: se você tiver um conjunto de dimensionamento de máquinas virtuais (modelo uniforme) com configurações de IP público por instância, observe que essas configurações não são recursos de IP públicos e, como tal, não podem ser atualizadas. Em vez disso, você pode remover a configuração de IP Básico e usar a propriedade do SKU para especificar que as configurações de IP Standard são necessárias para cada instância do conjunto de dimensionamento de máquinas virtuais, conforme mostrado aqui.

Pré-requisitos

  • Instalar a versão mais recente do PowerShell
  • Verifique se você tem o módulo mais recente do Az PowerShell instalado (e instale o módulo mais recente do Az PowerShell se não tiver)

Baixar o script

Observação

Esse processo requer o download e a execução de um script do PowerShell. Você precisa garantir que tenha as permissões adequadas em seu ambiente para concluir essa tarefa. Como os módulos do PowerShell estão instalados, verifique com a função de segurança da sua organização para determinar se o uso do script viola suas práticas de segurança. Você é responsável por garantir que o uso desse script seja permitido em sua organização.

Baixe o script de migração pela Galeria do PowerShell.

PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force

Usar o módulo

  1. Use Connect-AzAccount para se conectar ao locatário do Microsoft Entra necessário e à assinatura do Azure

    PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
    
  2. Localize a VM com os IPs Públicos Básicos anexados que você deseja atualizar. Registre seu nome e o nome do grupo de recursos.

  3. Examine os parâmetros do módulo:

    • VMName [cadeia de caracteres] Obrigatório - Esse parâmetro é o nome da VM.
    • ResourceGroupName [cadeia de caracteres] Obrigatório - Esse parâmetro é o grupo de recursos da VM com os IPs Públicos Básicos anexados que você deseja atualizar.
  4. Execute o comando Atualizar.

Usos de exemplo do script

Para atualizar uma única VM, passe o nome da VM e o nome do grupo de recursos como parâmetros.

    Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'

Para avaliar a atualização de uma única VM, sem fazer nenhuma alteração, adicione o parâmetro -WhatIf.

    Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf

Para atualizar todas as VMs em um grupo de recursos, ignorar VMs que não têm Grupos de Segurança de Rede.

    Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG

Recuperando-se de uma migração com falha

Se uma migração falhar devido a um problema transitório, como uma interrupção de rede ou um problema no sistema cliente, a migração poderá ser executada novamente para configurar a VM e os IPs Públicos no estado de meta. Na execução, o script gera um arquivo de log de recuperação, que é usado para garantir que a VM seja reconfigurada corretamente. Examine o arquivo de log PublicIPUpgrade.log criado no local onde o script foi executado.

Para se recuperar de uma atualização com falha, passe o caminho do arquivo de log de recuperação para o script com o parâmetro -recoverFromFile e identifique a VM a ser recuperada com os parâmetros -VMName e -ResourceGroupName ou -VMResourceID, conforme mostrado neste exemplo.

    Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName 'myVM' -ResourceGroupName 'rgName'

Perguntas comuns

Quanto tempo a migração levará e quanto tempo minha máquina virtual ficará inacessível em seu IP público?

O tempo necessário para atualizar os IPs Públicos de uma VM depende do número de IPs Públicos e Adaptadores de Rede associados à VM. No teste, uma VM com uma única NIC e IP Público leva entre 1 e 2 minutos para ser atualizada. Cada NIC da VM adiciona cerca de mais um minuto e cada IP Público adiciona alguns segundos cada.

Posso reverter para um IP Público de SKU Básico?

Não é possível fazer downgrade de um IP Standard para um Básico.

Posso testar uma migração antes de executar?

Não há como avaliar a atualização de um IP público sem concluir a ação. No entanto, esse script inclui um -whatif parâmetro, que verifica se a VM dá suporte à atualização e percorre as etapas sem tomar medidas.

O script dá suporte a IPs Públicos de SKU Básico Zonal?

Sim, o processo de atualização de um IP Público de SKU Básico Zonal para um IP Público de SKU Standard Zonal é idêntico e funciona no script.

Se eu especificar uma NIC associada a um IP público direcionado para migração no pool de back-end do Gateway de Aplicativo, esse script o removerá do pool?

Sim, foi removido. Depois de executar o script, você precisará reatribuir manualmente a NIC para o pool de back-end do Gateway de Aplicativo. Como alternativa, você pode evitar esse problema especificando explicitamente o endereço IP privado na configuração do pool de back-end antes da migração.

Usar o Resource Graph para listar as VMs com IPs Públicos que requerem atualização

Consultar para listar as máquinas virtuais com endereços IP públicos de SKU Básico

Essa consulta retorna uma lista de IDs de máquina virtual com endereços IP públicos de SKU Básico anexados.

Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces
| join (
  Resources |
  where type =~ 'microsoft.network/networkinterfaces' |
  project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations)
  on $left.vmId == $right.nicVMId
| join (
  Resources
  | where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id)
  | where sku.name == 'Basic' // exclude to find all VMs with Public IPs
  | project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0])))
  on $left.allVMNicID == $right.pipAssociatedNicId
| project vmId, pipId, pipSku
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces | join (Resources | where type =~ 'microsoft.network/networkinterfaces' | project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations) on \$left.vmId == \$right.nicVMId | join ( Resources | where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id) | where sku.name == 'Basic' | project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0]))) on \$left.allVMNicID == \$right.pipAssociatedNicId | project vmId, pipId, pipSku"

Próximas etapas