Actualizar direcciones IP públicas conectadas a la máquina virtual de Básico a Estándar

Importante

El 30 de septiembre de 2025 se retirarán las direcciones IP públicas del SKU Básico. Para obtener más información, consulte el anuncio oficial. Si actualmente usas direcciones IP públicas del SKU Básico, asegúrate de actualizar a las direcciones IP públicas del SKU Estándar antes de la fecha de retirada. Este artículo le guiará en el proceso de actualización.

Para obtener más información sobre la retirada de direcciones IP públicas de SKU básicas y las ventajas de las direcciones IP públicas de SKU estándar, consulte aquí

Información general sobre la actualización

Este script actualiza las direcciones IP públicas asociadas a la máquina virtual de la SKU básica a estándar. Para realizar la actualización, el método de asignación de dirección IP pública se establecerá en estático antes de desasociarse de la máquina virtual. Una vez desasociada, la SKU de IP pública se actualiza a Estándar y, a continuación, la dirección IP se vuelve a asociar a la máquina virtual.

Dado que la asignación de IP pública está establecida en "Estática" antes de desasociarse de la máquina virtual, la dirección IP no cambiará durante el proceso de actualización, incluso en caso de error de script. El módulo comprobará dos veces que el método de asignación de IP pública sea "Estático" antes de desasociar la dirección IP pública de la máquina virtual.

El módulo registra toda la actividad de actualización en un archivo denominado PublicIPUpgrade.log, creado en la misma ubicación donde se ejecutó el módulo (de forma predeterminada).

Restricciones/escenarios no admitidos

  • Máquinas virtuales con NIC asociadas a un equilibrador de carga: dado que las SKU de IP pública y el equilibrador de carga asociados a una máquina virtual deben coincidir, no es posible actualizar las direcciones IP públicas de nivel de instancia asociadas a una máquina virtual cuando las NIC de la máquina virtual también estén asociadas a un equilibrador de carga, ya sea a través de la pertenencia al grupo de back-end o al grupo NAT. Use los scripts Actualizar un equilibrador de carga básico a la SKU estándar para actualizar las direcciones IP públicas y Load Balancer al mismo tiempo.

  • Máquinas virtuales sin un grupo de seguridad de red: las máquinas virtuales con direcciones IP que se vayan a actualizar deberán tener un grupo de seguridad de red (NSG) asociado a la subred de cada configuración de IP con una dirección IP pública o directamente con la NIC. Esto se debe a que las direcciones IP públicas de SKU estándar son "seguras de forma predeterminada", lo que significa que cualquier tráfico a la dirección IP pública deberá permitirse explícitamente en un NSG para llegar a la máquina virtual. Las direcciones IP públicas de SKU básica permiten cualquier tráfico de forma predeterminada. La actualización de las SKU de IP pública sin un grupo de seguridad de red daría lugar a que el tráfico entrante de Internet a la dirección IP pública que se permitía anteriormente con la SKU básica se bloquease después de la migración. Consulte: SKU de IP pública

  • Virtual Machine Scale Sets con configuraciones de IP pública: si tiene un conjunto de escalado de máquinas virtuales (modelo uniforme) con configuraciones de IP públicas por instancia, tenga en cuenta que estas configuraciones no son recursos de IP pública y, por tanto, no se pueden actualizar. En su lugar, puede quitar la configuración de IP básica y usar la propiedad SKU para especificar que las configuraciones de IP estándar son necesarias para cada instancia de conjunto de escalado de máquinas virtuales, tal y como se muestra aquí.

Requisitos previos

  • Instale la versión más reciente de PowerShell
  • Asegúrese de tener instalado el módulo de Az PowerShell más reciente (e instale el módulo Az PowerShell más reciente en caso contrario)

Descarga del script

Descargue el script de migración de la Galería de PowerShell.

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

Uso del módulo

  1. Use Connect-AzAccount para conectarse al inquilino de Microsoft Entra necesario y a la suscripción de Azure

    PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
    
  2. Busque la máquina virtual con las direcciones IP públicas básicas adjuntas que desee actualizar. Registre su nombre y el nombre del grupo de recursos.

  3. Examine los parámetros del módulo:

    • VMName [string] obligatorio: este parámetro es el nombre de la máquina virtual.
    • ResourceGroupName [string] necesario: este parámetro es el grupo de recursos de la máquina virtual con las direcciones IP públicas básicas asociadas que desee actualizar.
  4. Ejecute el comando Upgrade.

Usos de ejemplo del script

Para actualizar una sola máquina virtual, pase el nombre de la máquina virtual y el nombre del grupo de recursos como parámetros.

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

Para evaluar la actualización de una sola máquina virtual, sin realizar ningún cambio, agregue el parámetro -WhatIf.

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

Para actualizar todas las máquinas virtuales de un grupo de recursos, omita las máquinas virtuales que no tengan grupos de seguridad de red.

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

Recuperación de una migración con errores

Si se produjera un error en una migración debido a un problema transitorio, como una interrupción de la red o un problema del sistema cliente, la migración se podrá volver a ejecutar para configurar la máquina virtual y las direcciones IP públicas en el estado objetivo. En la ejecución, el script genera un archivo de registro de recuperación, que se usa para asegurarse de que la máquina virtual se vuelva a configurar correctamente. Revise el archivo de registro PublicIPUpgrade.log creado en la ubicación donde se ejecutó el script.

Para recuperarse de una actualización con errores, pase la ruta del archivo de registro de recuperación al script con el parámetro -recoverFromFile e identifique la máquina virtual que se vaya a recuperar con los parámetros -VMName y -VMResourceGroup, o bien -VMResourceID, tal y como se muestra en este ejemplo.

    Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName myVM -VMResourceGroup -rg-myrg

Preguntas frecuentes

¿Cuánto tiempo tardará la migración y cuánto tiempo será inaccesible mi máquina virtual en cuanto a su dirección IP pública?

El tiempo necesario para actualizar las direcciones IP públicas de una máquina virtual depende del número de direcciones IP públicas e interfaces de red asociadas a la máquina virtual. En las pruebas, una máquina virtual con una sola NIC y una dirección IP pública tardará entre 1 y 2 minutos en actualizarse. Cada NIC de la máquina virtual agregará aproximadamente otro minuto, y cada IP pública agregará unos segundos cada una.

¿Puedo revertir a una IP pública de SKU básica?

No es posible cambiar a una versión anterior de una dirección IP pública Estándar a Básica.

¿Puedo probar una migración antes de ejecutarla?

No hay ninguna manera de evaluar la actualización de una IP pública sin completar la acción. Sin embargo, este script incluye un parámetro -whatif, que comprueba que la máquina virtual admitirá la actualización y le guiará por los pasos sin realizar ninguna acción.

¿El script admite IP públicas de SKU básica zonal?

Sí, el proceso de actualización de una IP pública de SKU básica zonal a una IP pública de SKU estándar zonal es idéntica y funciona en el script.

Uso de Resource Graph para enumerar las máquinas virtuales con direcciones IP públicas que requieren la actualización

Consulta para mostrar las máquinas virtuales con direcciones IP públicas de SKU básico

Esta consulta devuelve una lista de identificadores de máquina virtual con direcciones IP públicas de SKU básico asociadas.

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"

Pasos siguientes