Aggiornare gli indirizzi IP pubblici collegati alla macchina virtuale da Basic a Standard
Importante
Il 30 settembre 2025 gli IP pubblici dello SKU Basic saranno ritirati. Per altre informazioni, consultare l'annuncio ufficiale. Se attualmente si utilizzano IP pubblici dello SKU Basic, assicurarsi di eseguire l'aggiornamento agli IP pubblici dello SKU Standard prima della data di ritiro. Questo articolo illustra come eseguire la procedura di aggiornamento.
Per altre informazioni sul ritiro degli INDIRIZZI IP pubblici dello SKU Basic e sui vantaggi degli INDIRIZZI IP pubblici per SKU Standard, vedere qui
Panoramica dell'aggiornamento
Questo script aggiorna tutti gli indirizzi IP pubblici collegati alla macchina virtuale dallo SKU Basic allo SKU Standard. Per eseguire l'aggiornamento, il metodo di allocazione dell'indirizzo IP pubblico viene impostato su statico prima di essere disassociato dalla macchina virtuale. Dopo aver disassociato, lo SKU DELL'INDIRIZZO IP pubblico viene aggiornato a Standard, quindi l'INDIRIZZO IP viene riassociato alla macchina virtuale.
Poiché l'allocazione dell'indirizzo IP pubblico è impostata su "Statico" prima di scollegarsi dalla macchina virtuale, l'indirizzo IP non cambierà durante il processo di aggiornamento, anche in caso di errore dello script. Il modulo verifica che il metodo di allocazione ip pubblico sia "Statico" prima di scollegare l'indirizzo IP pubblico dalla macchina virtuale.
Il modulo registra tutte le attività di aggiornamento a un file denominato PublicIPUpgrade.log
, creato nella stessa posizione in cui è stato eseguito il modulo (per impostazione predefinita).
Vincoli/scenari non supportati
Macchine virtuali con schede di interfaccia di rete associate a un servizio di bilanciamento del carico: poiché il servizio di bilanciamento del carico e gli SKU IP pubblici associati a una macchina virtuale devono corrispondere, non è possibile aggiornare gli indirizzi IP pubblici a livello di istanza associati a una macchina virtuale quando le schede di interfaccia di rete della macchina virtuale sono associate anche a un servizio di bilanciamento del carico, tramite l'appartenenza al pool back-end o al pool NAT. Usare gli script Aggiornare uno SKU Load Balancer Basic a Standard per aggiornare sia il servizio di bilanciamento del carico che gli indirizzi IP pubblici allo stesso tempo.
Macchine virtuali senza un gruppo di sicurezza di rete: le macchine virtuali con indirizzi IP da aggiornare devono avere un gruppo di sicurezza di rete (NSG) associato alla subnet di ogni configurazione IP con un indirizzo IP pubblico o direttamente con la scheda di interfaccia di rete. Ciò è dovuto al fatto che gli INDIRIZZI IP pubblici sku Standard sono "protetti per impostazione predefinita", ovvero qualsiasi traffico verso l'indirizzo IP pubblico deve essere consentito in modo esplicito in un gruppo di sicurezza di rete per raggiungere la macchina virtuale. Gli INDIRIZZI IP pubblici sku basic consentono qualsiasi traffico per impostazione predefinita. L'aggiornamento degli SKU IP pubblici senza un gruppo di sicurezza di rete comporta il traffico Internet in ingresso all'indirizzo IP pubblico consentito in precedenza con lo SKU Basic bloccato dopo la migrazione. Vedere: SKU IP pubblici
set di scalabilità di macchine virtuali con configurazioni IP pubblici: se si dispone di un set di scalabilità di macchine virtuali (modello uniforme) con configurazioni IP pubbliche per ogni istanza, tenere presente che queste configurazioni non sono risorse IP pubbliche e di conseguenza non possono essere aggiornate. È invece possibile rimuovere la configurazione IP di base e usare la proprietà SKU per specificare che le configurazioni IP standard sono necessarie per ogni istanza del set di scalabilità di macchine virtuali, come illustrato di seguito.
Prerequisiti
- Installare l'ultima versione di PowerShell
- Verificare se è installato il modulo Az PowerShell più recente (e installare il modulo Az PowerShell più recente in caso contrario)
Scaricare lo script
Scaricare lo script di migrazione da PowerShell Gallery.
PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force
Usare il modulo
Usare
Connect-AzAccount
per connettersi al tenant di Microsoft Entra e alla sottoscrizione di Azure necessariPS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
Individuare la macchina virtuale con gli indirizzi IP pubblici basic collegati da aggiornare. Registrarne il nome e il nome del gruppo di risorse.
Esaminare i parametri del modulo:
- VMName [string] Obbligatorio : questo parametro è il nome della macchina virtuale.
- ResourceGroupName [string] Obbligatorio : questo parametro è il gruppo di risorse per la macchina virtuale con gli INDIRIZZI IP pubblici di base collegati da aggiornare.
Eseguire il comando Upgrade.
Usi di esempio dello script
Per aggiornare una singola macchina virtuale, passare il nome della macchina virtuale e il nome del gruppo di risorse come parametri.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'
Per valutare l'aggiornamento di una singola macchina virtuale, senza apportare modifiche, aggiungere il parametro -WhatIf.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
Per aggiornare tutte le macchine virtuali in un gruppo di risorse, ignorare le macchine virtuali che non dispongono di gruppi di sicurezza di rete.
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
Ripristino da una migrazione non riuscita
Se una migrazione non riesce a causa di un problema temporaneo, ad esempio un'interruzione di rete o un problema del sistema client, la migrazione può essere eseguita di nuovo per configurare la macchina virtuale e gli INDIRIZZI IP pubblici nello stato dell'obiettivo. In fase di esecuzione, lo script restituisce un file di log di ripristino, che viene usato per assicurarsi che la macchina virtuale sia riconfigurata correttamente. Esaminare il file di PublicIPUpgrade.log
log creato nel percorso in cui è stato eseguito lo script.
Per eseguire il ripristino da un aggiornamento non riuscito, passare il percorso del file di log di ripristino allo script con il -recoverFromFile
parametro e identificare la macchina virtuale da ripristinare con i -VMName
parametri e o -VMResourceGroup
-VMResourceID
, come illustrato in questo esempio.
Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName myVM -VMResourceGroup -rg-myrg
Domande frequenti
Quanto tempo richiederà la migrazione e per quanto tempo la macchina virtuale sarà inaccessibile all'indirizzo IP pubblico?
Il tempo necessario per aggiornare gli indirizzi IP pubblici di una macchina virtuale dipende dal numero di indirizzi IP pubblici e interfacce di rete associate alla macchina virtuale. Durante il test, l'aggiornamento di una macchina virtuale con una singola scheda di interfaccia di rete e ip pubblico richiede tra 1 e 2 minuti. Ogni scheda di interfaccia di rete nella macchina virtuale aggiunge circa un altro minuto e ogni indirizzo IP pubblico aggiunge alcuni secondi ciascuno.
È possibile eseguire il rollback a un indirizzo IP pubblico con SKU Basic?
Non è possibile effettuare il downgrade di un indirizzo IP pubblico da Standard a Basic.
È possibile testare una migrazione prima dell'esecuzione?
Non è possibile valutare l'aggiornamento di un indirizzo IP pubblico senza completare l'azione. Tuttavia, questo script include un -whatif
parametro, che verifica che la macchina virtuale supporti l'aggiornamento e illustra i passaggi senza intervenire.
Lo script supporta gli INDIRIZZI IP pubblici dello SKU Basic di zona?
Sì, il processo di aggiornamento di un indirizzo IP pubblico dello SKU basic di zona a un indirizzo IP pubblico dello SKU Standard di zona è identico e funziona nello script.
Usare Resource Graph per elencare le macchine virtuali con indirizzi IP pubblici che richiedono l'aggiornamento
Eseguire una query per elencare le macchine virtuali con indirizzi IP pubblici SKU Basic
Questa query restituisce un elenco di ID macchina virtuale con indirizzi IP pubblici SKU Basic collegati.
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"