Create a virtual machine with a static public IP address using Azure PowerShell
In this article, you'll create a VM with a static public IP address. A public IP address enables communication to a virtual machine from the internet. Assign a static public IP address, instead of a dynamic address, to ensure the address never changes.
Public IP addresses have a nominal charge. There's a limit to the number of public IP addresses that you can use per subscription.
Prerequisites
- An Azure account with an active subscription. Create a trial subscription.
- Azure PowerShell installed locally.
you choose to install and use PowerShell locally, this article requires the Azure PowerShell module version 5.4.1 or later. Run Get-Module -ListAvailable Az
to find the installed version. If you need to upgrade, see Install Azure PowerShell module. If you're running PowerShell locally, you also need to run Connect-AzAccount -Environment AzureChinaCloud
to create a connection with Azure.
Create a resource group
An Azure resource group is a logical container into which Azure resources are deployed and managed.
Create a resource group with New-AzResourceGroup named myResourceGroup in the chinaeast2 location.
$rg =@{
Name = 'myResourceGroup'
Location = 'chinaeast2'
}
New-AzResourceGroup @rg
Create a public IP address
Use New-AzPublicIpAddress to create a standard public IPv4 address.
The following command creates a public IP address named myPublicIP in myResourceGroup.
## Create IP. ##
$ip = @{
Name = 'myPublicIP'
ResourceGroupName = 'myResourceGroup'
Location = 'chinaeast2'
Sku = 'Standard'
AllocationMethod = 'Static'
IpAddressVersion = 'IPv4'
}
New-AzPublicIpAddress @ip
Create a virtual machine
Create a virtual machine with New-AzVM.
The following command creates a Windows Server virtual machine. You'll enter the name of the public IP address created previously in the -PublicIPAddressName
parameter. When prompted, provide a username and password to be used as the credentials for the virtual machine:
## Create virtual machine. ##
$vm = @{
ResourceGroupName = 'myResourceGroup'
Location = 'China East 2'
Name = 'myVM'
PublicIpAddressName = 'myPublicIP'
}
New-AzVM @vm
For more information on public IP SKUs, see Public IP address SKUs. A virtual machine can be added to the backend pool of an Azure Load Balancer. The SKU of the public IP address must match the SKU of a load balancer's public IP. For more information, see Azure Load Balancer.
View the public IP address assigned and confirm that it was created as a static address, with Get-AzPublicIpAddress:
## Retrieve public IP address settings. ##
$ip = @{
Name = 'myPublicIP'
ResourceGroupName = 'myResourceGroup'
}
Get-AzPublicIpAddress @ip | Select "IpAddress","PublicIpAllocationMethod" | Format-Table
Warning
Do not modify the IP address settings within the virtual machine's operating system. The operating system is unaware of Azure public IP addresses. Though you can add private IP address settings to the operating system, we recommend not doing so unless necessary, and not until after reading Add a private IP address to an operating system.
Note
Azure provides a default outbound access IP for VMs that either aren't assigned a public IP address or are in the backend pool of an internal basic Azure load balancer. The default outbound access IP mechanism provides an outbound IP address that isn't configurable.
The default outbound access IP is disabled when one of the following events happens:
- A public IP address is assigned to the VM.
- The VM is placed in the backend pool of a standard load balancer, with or without outbound rules.
- An Azure Virtual Network NAT gateway resource is assigned to the subnet of the VM.
VMs that you create by using virtual machine scale sets in flexible orchestration mode don't have default outbound access.
For more information about outbound connections in Azure, see Default outbound access in Azure and Use Source Network Address Translation (SNAT) for outbound connections.
Clean up resources
When no longer needed, you can use Remove-AzResourceGroup to remove the resource group and all of the resources it contains:
Remove-AzResourceGroup -Name myResourceGroup -Force
Next steps
- Learn more about public IP addresses in Azure.
- Learn more about all public IP address settings.
- Learn more about private IP addresses and assigning a static private IP address to an Azure virtual machine.
- Learn more about creating Linux and Windows virtual machines.