Windows Azure (errr Microsoft Azure) has a weird system for assigning IP addresses to VMs in virtual networks. Like VMM, it uses a pool of IP addresses. And that’s where the similarities end. Azure’s method appears to be more like DHCP.
- When you log into the guest OS, the VM is configured to use DHCP
- The address is not reserved like with DHCP. It is possible that a VM could be offline, come back, and get a new IP address.
The latter bit is bad, especially for services such as Active Directory and DNS where a predictable IP address is required.
Note: The first step in configuring a valid network configuration is to set the DNS servers and subnet masks for your virtual network in the Azure portal.
There is no nice GUI method for reserving an IP address. There is a PowerShell method, which gives you a clue as to how this stuff works under the hood.
The first step is to get your VM:
$VM=Get-AzureVM -ServiceName “Demo-MWH-A” -Name “Azure-DC1″
As you can see above, I am configuring a static IP address for a domain controller. Next, I set the static IP. Note that we are configuring a static virtual network IP for the VM.
Set-AzureStaticVNetIP -VM $VM -IPAddress “10.0.2.40″ | Update-AzureVM
Also note, that in my tests, most of the time that I run Update-AzureVM, the VM is restarted. It doesn’t happen all of the time with these two cmdlets, but it happens most of the time.
Armed with these two cmdlets, you could set up a CSV file with Service/VM names and IP addresses, and run a loop to configure lots of VMs at once.
To be clear, the above steps do not configure a static IP inside the guest OS – you should not do that. The above steps simply configure the virtual network to assign the same IP to your VM’s vNIC every time the VM starts up. You are manipulating the system to get the results you need.