Skip to content

Commit db6d5fa

Browse files
Merge pull request #305078 from mbender-ms/ip-services-acrolinx-fixes
ip services | Acrolinx | Update scores above 80
2 parents 1c0b3aa + d297295 commit db6d5fa

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

articles/virtual-network/ip-services/public-ip-upgrade-vm.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,26 @@ ms.topic: how-to
1313

1414
# Upgrade public IP addresses attached to VM from Basic to Standard
1515

16-
>[!Important]
17-
>On September 30, 2025, Basic SKU public IPs will be retired. For more information, see the [official announcement](https://azure.microsoft.com/updates/upgrade-to-standard-sku-public-ip-addresses-in-azure-by-30-september-2025-basic-sku-will-be-retired/). If you are currently using Basic SKU public IPs, make sure to upgrade to Standard SKU public IPs prior to the retirement date. This article will help guide you through the upgrade process.
16+
> [!IMPORTANT]
17+
> On September 30, 2025, Basic SKU public IPs will be retired. For more information, see the [official announcement](https://azure.microsoft.com/updates/upgrade-to-standard-sku-public-ip-addresses-in-azure-by-30-september-2025-basic-sku-will-be-retired/). If you are currently using Basic SKU public IPs, make sure to upgrade to Standard SKU public IPs prior to the retirement date. This article will help guide you through the upgrade process.
1818
1919
For more information about the retirement of Basic SKU Public IPs and the benefits of Standard SKU Public IPs, see [here](public-ip-basic-upgrade-guidance.md)
2020

2121
## Upgrade overview
2222

2323
This script upgrades any Public IP Addresses attached to VM from Basic to Standard SKU. In order to perform the upgrade, the Public IP Address allocation method is set to static before being disassociated from the VM. Once disassociated, the Public IP SKU is upgraded to Standard, then the IP is re-associated with the VM.
2424

25-
Because the Public IP allocation is set to 'Static' before detaching from the VM, the IP address won't change during the upgrade process, even in the event of a script failure. The module double-checks that the Public IP allocation method is 'Static' prior to detaching the Public IP from the VM.
25+
Because the Public IP allocation is set to *Static* before detaching from the VM, the IP address won't change during the upgrade process, even if the script fails. The module double-checks that the Public IP allocation method is *Static* prior to detaching the Public IP from the VM.
2626

2727
The module logs all upgrade activity to a file named `PublicIPUpgrade.log`, created in the same location where the module was executed (by default).
2828

2929
## Constraints / Unsupported Scenarios
3030

3131
- **VMs with NICs associated to a Load Balancer**: Because the Load Balancer and Public IP SKUs associated with a VM must match, it isn't possible to upgrade the instance-level Public IP addresses associated with a VM when the VM's NICs are also associated with a Load Balancer, either through Backend Pool or NAT Pool membership. Use the scripts [Upgrade a Basic Load Balancer to Standard SKU](../../load-balancer/upgrade-basic-standard-with-powershell.md) to upgrade both the Load Balancer and Public IPs at the same time.
32-
- **VMs without a Network Security Group**: VMs with IPs to be upgraded must have a Network Security Group (NSG) associated with either the subnet of each IP configuration with a Public IP, or with the NIC directly. This is because Standard SKU Public IPs are "secure by default", meaning that any traffic to the Public IP must be explicitly allowed at an NSG to reach the VM. Basic SKU Public IPs allow any traffic by default. Upgrading Public IP SKUs without an NSG would result in inbound internet traffic to the Public IP previously allowed with the Basic SKU being blocked post-migration. See: [Public IP SKUs](public-ip-addresses.md#sku)
33-
- **Virtual Machine Scale Sets with Public IP configurations**: If you have a virtual machine scale set (uniform model) with public IP configurations per instance, note these configurations aren't Public IP resources and as such cannot be upgraded. Instead, you can remove the Basic IP configuration and use the SKU property to specify that Standard IP configurations are required for each virtual machine scale set instance as shown [here](/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-networking#public-ipv4-per-virtual-machine).
32+
33+
- **VMs without a Network Security Group**: VMs with IPs to be upgraded must have a Network Security Group (NSG) associated with either the subnet of each IP configuration with a Public IP, or with the NIC directly. This is because Standard SKU Public IPs are "secure by default," meaning that any traffic to the Public IP must be explicitly allowed at an NSG to reach the VM. Basic SKU Public IPs allow any traffic by default. Upgrading Public IP SKUs without an NSG would result in inbound internet traffic to the Public IP previously allowed with the Basic SKU being blocked post-migration. See: [Public IP SKUs](public-ip-addresses.md#sku)
34+
35+
- **Virtual Machine Scale Sets with Public IP configurations**: If you have a virtual machine scale set (uniform model) with public IP configurations per instance, note these configurations aren't Public IP resources and as such can't be upgraded. Instead, you can remove the Basic IP configuration and use the SKU property to specify that Standard IP configurations are required for each virtual machine scale set instance as shown [here](/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-networking#public-ipv4-per-virtual-machine).
3436

3537
### Prerequisites
3638

@@ -52,13 +54,14 @@ PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Reposito
5254
```powershell
5355
PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
5456
```
55-
2. Locate the VM with the attached Basic Public IPs that you wish to upgrade. Record its name and resource group name.
5657
57-
3. Examine the module parameters:
58+
1. Locate the VM with the attached Basic Public IPs that you wish to upgrade. Record its name and resource group name.
59+
60+
1. Examine the module parameters:
5861
- *VMName [string] Required* - This parameter is the name of your VM.
5962
- *ResourceGroupName [string] Required* - This parameter is the resource group for your VM with the Basic Public IPs attached that you want to upgrade.
6063
61-
4. Run the Upgrade command.
64+
1. Run the Upgrade command.
6265
6366
### Example uses of the script
6467
@@ -74,7 +77,7 @@ To evaluate upgrading a single VM, without making any changes, add the -WhatIf p
7477
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
7578
```
7679

77-
To upgrade all VMs in a resource group, skipping VMs that do not have Network Security Groups.
80+
To upgrade all VMs in a resource group, skipping VMs that don't have Network Security Groups.
7881

7982
```powershell
8083
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
@@ -92,7 +95,7 @@ To recover from a failed upgrade, pass the recovery log file path to the script
9295

9396
## Common questions
9497

95-
### How long will the migration take and how long will my VM be inaccessible at its Public IP?
98+
### How long will the migration take and how long will my virtual machine be inaccessible at its Public IP?
9699

97100
The time it takes to upgrade a VM's Public IPs depends on the number of Public IPs and Network Interfaces associated with the VM. In testing, a VM with a single NIC and Public IP takes between 1 and 2 minutes to upgrade. Each NIC on the VM adds about another minute, and each Public IP adds a few seconds each.
98101

@@ -102,22 +105,22 @@ It isn't possible to downgrade a Public IP address from Standard to Basic.
102105

103106
### Can I test a migration before executing?
104107

105-
There is no way to evaluate upgrading a Public IP without completing the action. However, this script includes a `-whatif` parameter, which checks that your VM will support the upgrade and walks through the steps without taking action.
108+
There's no way to evaluate upgrading a Public IP without completing the action. However, this script includes a `-whatif` parameter, which checks that your VM supports the upgrade and walks through the steps without taking action.
106109

107110
### Does the script support Zonal Basic SKU Public IPs?
108111

109112
Yes, the process of upgrading a Zonal Basic SKU Public IP to a Zonal Standard SKU Public IP is identical and works in the script.
110113

111114
### If I specify a NIC associated with a public IP targeted for migration in the Application Gateway backend pool, will this script remove it from the pool?
112115

113-
Yes, it will be removed. After running the script, you will need to manually reassign the NIC to the Application Gateway backend pool.
116+
Yes, it's removed. After running the script, you'll need to manually reassign the NIC to the Application Gateway backend pool.
114117
Alternatively, you can avoid this issue by explicitly specifying the private IP address in the backend pool configuration before migration.
115118

116119
## Use Resource Graph to list VMs with Public IPs requiring upgrade
117120

118121
### Query to list virtual machines with Basic SKU public IP addresses
119122

120-
This query returns a list of virtual machine IDs with Basic SKU public IP addresses attached.
123+
This query returns a list of virtual machine IDs with Basic SKU public IP addresses attached.
121124

122125
```kusto
123126
Resources

0 commit comments

Comments
 (0)