Migrating Azure VMs on VNet from Azure Service Management (Classic or ASM) to Azure Resource Manager (Resource Manager or ARM)
In this post you will find code snippet to migrate your classic Azure VMs that is part of virtual networks. That is, you will learn Migrating Azure VMs on VNet from Azure Service Management (Classic or ASM) to Azure Resource Manager (Resource Manager or ARM). Without too much discussion, let's start step by step.
You need to have PowerShell installed. In the process of migration you first need to sign in your subscription using modern way that is ARM to prepare migration and then sign in your same subscription using classic approach that is ASM to perform migration and commit.
Step 1.
Let's login ARM
Login-AzureRmAccount
Step 2.
Store subscription id into a variable
$SubID = "1345e4-4561-1bd7-55c1-e3848012qw4r"
Step 3.
Select subscription using above variable
Select-AzureRmSubscription -SubscriptionID $SubID
Step 4.
Now, let's prepare the migration on ARM, this operation may take few minutes.
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Step 5.
Now, in order to know the progress just use below command, you should see RegistrationState to Registered. Once you see Registered, you are good to go ahead.
Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Step 6.
Let's login ASM now
Add-AzureAccount
Step 7.
Then, select the subscription using subscription id that we stored in variable above.
Select-AzureSubscription -SubscriptionID $SubID
Step 8.
Now, let's get virtual network name that we will in next step.
Get-AzureVNetConfig -ExportToFile "C:\Users\Abhimanyu K Vatsa\Desktop\VNetConfig.xml"
Now you copy the value of VirtualNetworkSite name="demo-vnet-name"
Step 9.
Store the virtual network name in a variable. Remember, we are migrating virtual network that will automatically migration everything that is associated with this network, including network itself, vms, storage, load-balancer, subnet, nic etc.
$VNetName = "demo-vnet-name"
Step 10.
Let's run most powerful command that prepares the move and it may take few minutes.
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $VNetName
Step 11.
If you login to portal now, you will notice a new resource group is create with same name but -Migrated as post-fix. Don't worry, if you see everything doubled. Because these are exact same copy of your resources that was in classic. Once you run commit command (given below) your all classic resources will be removed and you will have migrated resources on ARM and every thing working as it was working earlier. Note, this operation may also take some time.
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $VNetName
Or if you feel something going wrong, you can abort it using below command:
Move-AzureVirtualNetwork -Abort -VirtualNetworkName $VNetName
I used these commands several times and never faced any challenges, but still recommend you to run it yourself before your migrate production resources.
Hope this helps.
You need to have PowerShell installed. In the process of migration you first need to sign in your subscription using modern way that is ARM to prepare migration and then sign in your same subscription using classic approach that is ASM to perform migration and commit.
Step 1.
Let's login ARM
Login-AzureRmAccount
Step 2.
Store subscription id into a variable
$SubID = "1345e4-4561-1bd7-55c1-e3848012qw4r"
Step 3.
Select subscription using above variable
Select-AzureRmSubscription -SubscriptionID $SubID
Step 4.
Now, let's prepare the migration on ARM, this operation may take few minutes.
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Step 5.
Now, in order to know the progress just use below command, you should see RegistrationState to Registered. Once you see Registered, you are good to go ahead.
Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate
Step 6.
Let's login ASM now
Add-AzureAccount
Step 7.
Then, select the subscription using subscription id that we stored in variable above.
Select-AzureSubscription -SubscriptionID $SubID
Step 8.
Now, let's get virtual network name that we will in next step.
Get-AzureVNetConfig -ExportToFile "C:\Users\Abhimanyu K Vatsa\Desktop\VNetConfig.xml"
Now you copy the value of VirtualNetworkSite name="demo-vnet-name"
Step 9.
Store the virtual network name in a variable. Remember, we are migrating virtual network that will automatically migration everything that is associated with this network, including network itself, vms, storage, load-balancer, subnet, nic etc.
$VNetName = "demo-vnet-name"
Step 10.
Let's run most powerful command that prepares the move and it may take few minutes.
Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $VNetName
Step 11.
If you login to portal now, you will notice a new resource group is create with same name but -Migrated as post-fix. Don't worry, if you see everything doubled. Because these are exact same copy of your resources that was in classic. Once you run commit command (given below) your all classic resources will be removed and you will have migrated resources on ARM and every thing working as it was working earlier. Note, this operation may also take some time.
Move-AzureVirtualNetwork -Commit -VirtualNetworkName $VNetName
Or if you feel something going wrong, you can abort it using below command:
Move-AzureVirtualNetwork -Abort -VirtualNetworkName $VNetName
I used these commands several times and never faced any challenges, but still recommend you to run it yourself before your migrate production resources.
Hope this helps.
Comments
Post a Comment