{"id":20392,"date":"2017-08-31T16:03:16","date_gmt":"2017-08-31T15:03:16","guid":{"rendered":"https:\/\/aidanfinn.com\/?p=20392"},"modified":"2017-08-31T16:15:44","modified_gmt":"2017-08-31T15:15:44","slug":"how-i-upgraded-this-vm-to-azure-resource-manager","status":"publish","type":"post","link":"https:\/\/aidanfinn.com\/?p=20392","title":{"rendered":"How I Upgraded This VM To Azure Resource Manager"},"content":{"rendered":"<p>In this post, I will explain how I upgraded the Azure virtual machine, that this site is hosted on, from ASM (Azure Service Management, Classic or Azure v1) to ARM (Azure Resource Manager, Resource Manager or Azure v2).<\/p>\n<p>FYI, although I had no plans for changing subscriptions, this migration is also the first step for moving resources from one subscription to another, e.g. Credit Card\/Direct to CSP, Open to CSP, or EA to CSP.<\/p>\n<h2>Background<\/h2>\n<p>I\u2019ve been running aidanfinn.com on Azure for a few years now. It game me a vested interest in Azure, other than my day job where I teach and sell Azure services to MS partners. Over the years, I\u2019ve applied some of the things that I\u2019ve learned, including one time where MySQL blew up so bad that I had to use Azure Backup (then in preview) to restore the entire VM \u2013 this is why you\u2019ll see the phrase \u201caidanfinn02\u201d later in the example.<\/p>\n<p>The VM was running in ASM. ASM is effectively deprecated, but I never had a chance to migrate it to ARM. That changed, and I decided to make the switch. In the process, I decided that I wanted to clean up resource groups, migrate to managed disks, and maybe change a few other things.<\/p>\n<p>I had two options available to me:<\/p>\n<ul>\n<li><strong>MigAz<\/strong>: Great community tool that allows a complete change, including renaming. There is downtime to move the disks.<\/li>\n<li><strong>The \u201cPlatform Supported\u201d method<\/strong>: Using official cmdlets to do an ASM-ARM migration with no downtime during the ASM-ARM migration.<\/li>\n<\/ul>\n<p>I went with the platform supported method. Long-term, it means I have more work to do to do some renaming, etc, but I\u2019ve never had \u201cmy own\u201d stuff to move using this method, so I wanted to do it and document it with a real example.<\/p>\n<p>Note that the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/virtual-machines\/windows\/migration-classic-resource-manager-ps\" target=\"_blank\">platform support method<\/a> has a few approaches. My virtual machine was in a virtual network, so I opted to move the entire virtual network and associated contents. This is cool because, all VMs (I have one only) are moved, and endpoints are converted into NAT rules in a load balancer. Any reserved cloud service IPs are converted into static public IPs.<\/p>\n<p><em>Note, you\u2019ll need to download the <a href=\"https:\/\/github.com\/Azure\/azure-powershell\/releases\" target=\"_blank\">latest Azure PowerShell modules<\/a> (and reboot if it\u2019s your first install) to do either method.<\/em><\/p>\n<p>FYI, the below includes copy\/pastes of the actual cmdlets that I used. The only thing I have modified, for obvious reasons, is the subscription ID.<\/p>\n<h2>Register the Migration Provider<\/h2>\n<p>You\u2019ll need to register the provider that allows you to do ASM-ARM migrations. This is done on a per subscription basis. You\u2019ll log into your subscription using ARM:<\/p>\n<pre class=\"lang:default decode:true\">Login-AzureRmAccount<\/pre>\n<p>If your tenant has more than one subscription, like mine does, then you need to query the subscriptions:<\/p>\n<pre class=\"lang:default decode:true\">Get-AzureRmSubscription<\/pre>\n<p>This allows you to get the ID of the subscription that you will sign into, so you can select it as the current subscription to work on:<\/p>\n<pre class=\"lang:default decode:true\">Select-AzureRmSubscription -SubscriptionId 1234567f-a1b2-1234-1a2b-1234ab123456<\/pre>\n<p>Next you register the migration proivder:<\/p>\n<pre class=\"lang:default decode:true\">Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate<\/pre>\n<p>This migration can take up to five minutes. You can query the status of the migration:<\/p>\n<pre class=\"lang:default decode:true \">Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate<\/pre>\n<p>You can continue once you get a registered status:<\/p>\n<blockquote><p>ProviderNamespace : Microsoft.ClassicInfrastructureMigrate<\/p>\n<p>RegistrationState : Registered<\/p>\n<p>ResourceTypes : {classicInfrastructureResources}<\/p>\n<p>Locations : {East Asia, Southeast Asia, East US, East US 2&#8230;}<\/p><\/blockquote>\n<h2>Validation<\/h2>\n<p>The migration has three phases. The first allows you to validate that you can migrate your machines cleanly. Common issues include unsupported extensions, extension versions, classic backup vault registrations, endpoint ACLs, etc.<\/p>\n<p>To do the validation, you need to sign in using ASM:<\/p>\n<pre class=\"lang:default decode:true\">Add-AzureAccount<\/pre>\n<p>Once again you need to make sure you\u2019re working with the right subscription:<\/p>\n<pre class=\"lang:default decode:true\">Get-AzureSubscription<\/pre>\n<p>And then make that subscription current:<\/p>\n<pre class=\"lang:default decode:true\">Select-AzureSubscription -SubscriptionId 1234567a-a1b2-1234-1a2b-1234ab123456<\/pre>\n<p>I migrated my virtual network, so I queried for the Azure name of the virtual network.<\/p>\n<pre class=\"lang:default decode:true\">Get-AzureVnetSite | Select -Property Name<\/pre>\n<p>My virtual network was called aidanfinn02 so I saved that as a variable \u2013 it\u2019ll be used a few times.<\/p>\n<pre class=\"lang:default decode:true\">$vnetName = \u201caidanfinn02\u201d<\/pre>\n<p>Then I ran the validation against the virtual network, saving the results in a variable called $validate:<\/p>\n<pre class=\"lang:default decode:true\">$validate = Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName<\/pre>\n<p>I could then see the results:<\/p>\n<pre class=\"lang:default decode:true\">$validate.ValidationMessages<\/pre>\n<p>There were two issues:<\/p>\n<ul>\n<li>A faulty monitoring (Log Analytics) extension (guest OS agent)<\/li>\n<li>The VM was being backed up by a classic Azure Backup backup vault.<\/li>\n<\/ul>\n<blockquote><p>ResourceType : VirtualNetwork<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Error<\/p>\n<p>Message : Virtual Network aidanfinn02 has encountered validation failures, and hence it is not supported for migration.<\/p>\n<p>VirtualMachineName :<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Error<\/p>\n<p>Message : Deployment aidanfinn02 in Cloud Service aidanfinn02 has encountered validation failures, and hence it is not supported for migration.<\/p>\n<p>VirtualMachineName :<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Error<\/p>\n<p>Message : VM aidanfinn02 in HostedService aidanfinn02 contains Extension MicrosoftMonitoringAgent reporting Status : Error. Hence, the VM cannot be migrated. Please ensure that<\/p>\n<p>the Extension status being reported is Success or uninstall it from the VM and retry migration.,Additional Details: Message=This machine is already connected to another<\/p>\n<p>Log Analytics workspace, please set stopOnMultipleConnections to false in public settings or remove this property, so this machine can connect to new workspaces, also<\/p>\n<p>it means this machine will get billed multiple times for each workspace it report to. (MMAEXTENSION_ERROR_MULTIPLECONNECTIONS) Code=400<\/p>\n<p>VirtualMachineName : aidanfinn02<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Error<\/p>\n<p>Message : VM aidanfinn02 in HostedService aidanfinn02 contains Extension MicrosoftMonitoringAgent reporting Handler Status : Unresponsive. Hence, the VM cannot be migrated.<\/p>\n<p>Please ensure that the Extension handler status being reported is Ready or uninstall it from the VM and retry migration.,Additional Details: Message=Handler<\/p>\n<p>Microsoft.EnterpriseCloud.Monitoring.MicrosoftMonitoringAgent of version 1.0.11049.5 is unresponsive Code=0<\/p>\n<p>VirtualMachineName : aidanfinn02<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Error<\/p>\n<p>Message : VM aidanfinn02 in HostedService aidanfinn02 is currently configured with the Azure Backup service and therefore currently not supported for Migration. To migrate this<\/p>\n<p>VM, please follow the procedure described athttps:\/\/aka.ms\/vmbackupmigration.<\/p>\n<p>VirtualMachineName : aidanfinn02<\/p><\/blockquote>\n<p>The solutions to these problems were easy:<\/p>\n<ol>\n<li>I signed into the classic Azure Management Portal and unregistered the virtual machine in the backup vault \u2013 DO NOT DELETE THE BACKUP DATA!<\/li>\n<li>Then I switched to the Azure Portal (and stayed here), and I removed the VMSnapshot (Azure Backup) extension from the VM.<\/li>\n<li>And then I removed the Microsoft.EnterpriseCloud.Monitoring (Log Analytics) extension<\/li>\n<li>The VM had an old version of the Diagnostics agent, so I removed that too, even though it didn\u2019t effect validation.<\/li>\n<\/ol>\n<p>I re-ran the validation:<\/p>\n<pre class=\"lang:default decode:true\">$validate = Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName$validate.ValidationMessages<\/pre>\n<p>And the result was that the virtual network (and thus the VM) was ready for an ARM migration.<\/p>\n<pre class=\"lang:default decode:true\">$validate.ValidationMessages<\/pre>\n<blockquote><p>ResourceType : VirtualNetwork<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Information<\/p>\n<p>Message : Virtual Network aidanfinn02 is eligible for migration.<\/p>\n<p>VirtualMachineName :<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Information<\/p>\n<p>Message : Deployment aidanfinn02 in Cloud Service aidanfinn02 is eligible for migration.<\/p>\n<p>VirtualMachineName :<\/p>\n<p>ResourceType : Deployment<\/p>\n<p>ResourceName : aidanfinn02<\/p>\n<p>Category : Information<\/p>\n<p>Message : VM aidanfinn02 in Deployment aidanfinn02 within Cloud Service aidanfinn02 is eligible for migration.<\/p>\n<p>VirtualMachineName : aidanfinn02<\/p><\/blockquote>\n<h2>Preparation<\/h2>\n<p>The preparation phase is next. This is an interim or trial period where you introduce the ARM API to your resources. For a time, the resources are visible to both ARM and ASM. There is no downtime, but you cannot make any configuration changes. The reasoning for this is that you can validate that everything is still working.<\/p>\n<p>You run the command, as I did against the virtual network.<\/p>\n<pre class=\"lang:default decode:true\">Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName<\/pre>\n<p>And then you wait \u2026 try not to grind your teeth or chew your gums:<\/p>\n<blockquote><p>OperationDescription OperationId OperationStatus<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>Move-AzureVirtualNetwork 2bcb56ce-2330-0824-a376-a3dcc4892e3d Succeeded<\/p><\/blockquote>\n<h2>Commit<\/h2>\n<p>Once preparation is done, double-check everything. My website was still responding, and resources appeared in two different resource groups with -Migrated suffixes \u2013 I\u2019ll show you how I tidied that up later in the post. I was ready to commit; this is when you tell Azure that all is good, and to please remove the ASM APIs from the resources.<\/p>\n<pre class=\"lang:default decode:true\">Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName<\/pre>\n<p>More time passes when you forget to breath, and then it\u2019s done! You\u2019re in ARM, and your resources are manageable once again. Note that there is an alternative to Commit, which is to abort the process and roll back to ASM-only management.<\/p>\n<h2>Network Security Group<\/h2>\n<p>My ASM deployment was quite basic, and not best practice. I created a network security group for the subnet, allowing in:<\/p>\n<ul>\n<li>RDP to the subnet<\/li>\n<li>HTTP to the local static IP of the VM.<\/li>\n<\/ul>\n<h2>Resource Group Clean-up<\/h2>\n<p>As I mentioned, my ASM resources migrated into two resource groups as ARM resources. I wanted to:<\/p>\n<ul>\n<li>Move the resources into a single resource group.<\/li>\n<li>Get rid of the \u2013Migrated suffix.<\/li>\n<\/ul>\n<p>You can move resources, but you cannot rename resource groups. So I created a third resource group (aidanfinn):<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;\" title=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image_thumb.png\" alt=\"image\" width=\"192\" height=\"95\" border=\"0\" \/><\/a><\/p>\n<p>Then I moved the resources from both of the migrated resource groups into the new aidanfinn resource group:<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image1.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;\" title=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image_thumb1.png\" alt=\"image\" width=\"300\" height=\"857\" border=\"0\" \/><\/a><\/p>\n<h2>Migrate Storage to ARM<\/h2>\n<p>The official method for migrating storage is to migrate the storage account. That means that you move the storage account with the VHDs within it. Azure offers a new method for handling storage called managed disks:<\/p>\n<ul>\n<li>You dispense with the storage account for VHDs<\/li>\n<li>The disk becomes a manageable resource in the Portal<\/li>\n<li>You get cool new features like Snapshots and easier VM restores from disk<\/li>\n<\/ul>\n<p>I decided to take a different route \u2013 I would convert my ARM VM from un-managed disks to managed disks. I needed a few values:<\/p>\n<pre class=\"lang:default decode:true\">$rgName = \"aidanfinn\"\r\n$vmName = \"aidanfinn02\"<\/pre>\n<p>I stopped the VM (my first piece of downtime in this entire process):<\/p>\n<pre class=\"lang:default decode:true\">Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force<\/pre>\n<p>Then I did the conversion:<\/p>\n<pre class=\"lang:default decode:true\">ConvertTo-AzureRmVMManagedDisk -ResourceGroupName $rgName -VMName $vmName<\/pre>\n<p>And then I restarted the VM, after just a few minutes of downtime:<\/p>\n<pre class=\"lang:default decode:true\">Start-AzureRmVM -ResourceGroupName $rgName -Name $vmName<\/pre>\n<h2>Re-Introduce Management<\/h2>\n<p>I like the management features of Azure, so I re-introduced:<\/p>\n<ul>\n<li>Azure Backup of the VM using a recovery services vault using a custom policy \u2013 I created a manual backup immediately.<\/li>\n<li>Monitoring &amp; diagnostics, to a new dedicated storage account \u2013 make sure you verify that the storage account is being used by the VM Agent and Boot Diagnostics.<\/li>\n<\/ul>\n<h2>Cleanup ASM<\/h2>\n<p>Lots of stuff can get left behind, especially if you\u2019ve been trying things out. That all needs to be removed. One thing I kept around for a while was the classic backup vault, just in case. I only unregistered the old ASM VM \u2013 I did not delete the data. That means I have a way back if all goes wrong in ARM or I screw up in some way. I\u2019ll give it a month, and then I\u2019ll remove the old vault.<\/p>\n<p>By the way, you can <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/upgrade-classic-backup-and-siterecovery-vault-to-arm-recovery-services-vault\/\" target=\"_blank\">upgrade a backup vault to ARM<\/a> (recovery services vault) if you want to keep your retention.<\/p>\n<h2>The End Result<\/h2>\n<p>I ended up with everything in ARM and in one resource group:<\/p>\n<p><a href=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image2.png\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;\" title=\"image\" src=\"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/image_thumb2.png\" alt=\"image\" width=\"500\" height=\"252\" border=\"0\" \/><\/a><\/p>\n<p>I don\u2019t like the naming, so I will be cleaning things up. My next mini-project will be to:<\/p>\n<ol>\n<li>Power down the VM.<\/li>\n<li>Create a disk snapshot.<\/li>\n<li>Create a new disk from the snapshot.<\/li>\n<li>Create a new deployment, using the new disk, with names that I like.<\/li>\n<\/ol>\n<p>I know \u2013\u00a0I could have done all that more quickly and easily using MigAz, but I wanted to do the platform supported migration on\u00a0<em>my<\/em> stuff, and it was a chance to document it too! Hopefully this will be useful for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this post, I will explain how I upgraded the Azure virtual machine, that this site is hosted on, from ASM (Azure Service Management, Classic or Azure v1) to ARM (Azure Resource Manager, Resource Manager or Azure v2). FYI, although I had no plans for changing subscriptions, this migration is also the first step for &hellip; <a href=\"https:\/\/aidanfinn.com\/?p=20392\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How I Upgraded This VM To Azure Resource Manager&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":20394,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[5],"tags":[161,162,170,148,164,163,87,165,153],"class_list":["post-20392","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","tag-arm","tag-asm","tag-azure","tag-azure-backup","tag-managed-disks","tag-migration","tag-powershell","tag-storage-account","tag-virtual-machines"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"AFinn\"\/>\n\t<meta name=\"google-site-verification\" content=\"TDKjbi2McB2eLIfL6KwPB3aQqv5E-mbcb2QYIcovGaI\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/aidanfinn.com\/?p=20392\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_GB\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Aidan Finn, IT Pro - A blog covering Azure, Hyper-V, Windows Server, desktop, systems management, deployment, and so on ...\" \/>\n\t\t<meta property=\"og:type\" content=\"activity\" \/>\n\t\t<meta property=\"og:title\" content=\"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro\" \/>\n\t\t<meta property=\"og:description\" content=\"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/aidanfinn.com\/?p=20392\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@joe_elway\" \/>\n\t\t<meta name=\"twitter:title\" content=\"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro\" \/>\n\t\t<meta name=\"twitter:description\" content=\"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@joe_elway\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#article\",\"name\":\"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro\",\"headline\":\"How I Upgraded This VM To Azure Resource Manager\",\"author\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?author=1#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/aidanfinn.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/AzureVM.png\",\"width\":969,\"height\":880,\"caption\":\"Azure Virtual Machine\"},\"datePublished\":\"2017-08-31T16:03:16+01:00\",\"dateModified\":\"2017-08-31T16:15:44+01:00\",\"inLanguage\":\"en-GB\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#webpage\"},\"articleSection\":\"Azure, ARM, ASM, Azure, Azure Backup, Managed Disks, Migration, PowerShell, Storage Account, Virtual Machines\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/aidanfinn.com\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?cat=5#listItem\",\"name\":\"Azure\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?cat=5#listItem\",\"position\":2,\"name\":\"Azure\",\"item\":\"https:\\\/\\\/aidanfinn.com\\\/?cat=5\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#listItem\",\"name\":\"How I Upgraded This VM To Azure Resource Manager\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#listItem\",\"position\":3,\"name\":\"How I Upgraded This VM To Azure Resource Manager\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?cat=5#listItem\",\"name\":\"Azure\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/#person\",\"name\":\"AFinn\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/65fde4aa9f2ab1cf1514ae320a37ec682d9398ce5791d3c2dd1e8670a71ceea0?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"AFinn\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?author=1#author\",\"url\":\"https:\\\/\\\/aidanfinn.com\\\/?author=1\",\"name\":\"AFinn\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/65fde4aa9f2ab1cf1514ae320a37ec682d9398ce5791d3c2dd1e8670a71ceea0?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"AFinn\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#webpage\",\"url\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392\",\"name\":\"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro\",\"description\":\"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.\",\"inLanguage\":\"en-GB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?author=1#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?author=1#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/aidanfinn.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/AzureVM.png\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392\\\/#mainImage\",\"width\":969,\"height\":880,\"caption\":\"Azure Virtual Machine\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/?p=20392#mainImage\"},\"datePublished\":\"2017-08-31T16:03:16+01:00\",\"dateModified\":\"2017-08-31T16:15:44+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/#website\",\"url\":\"https:\\\/\\\/aidanfinn.com\\\/\",\"name\":\"Aidan Finn, IT Pro\",\"description\":\"A blog covering Azure, Hyper-V, Windows Server, desktop, systems management, deployment, and so on ...\",\"inLanguage\":\"en-GB\",\"publisher\":{\"@id\":\"https:\\\/\\\/aidanfinn.com\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro","description":"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.","canonical_url":"https:\/\/aidanfinn.com\/?p=20392","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"TDKjbi2McB2eLIfL6KwPB3aQqv5E-mbcb2QYIcovGaI","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/aidanfinn.com\/?p=20392#article","name":"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro","headline":"How I Upgraded This VM To Azure Resource Manager","author":{"@id":"https:\/\/aidanfinn.com\/?author=1#author"},"publisher":{"@id":"https:\/\/aidanfinn.com\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/AzureVM.png","width":969,"height":880,"caption":"Azure Virtual Machine"},"datePublished":"2017-08-31T16:03:16+01:00","dateModified":"2017-08-31T16:15:44+01:00","inLanguage":"en-GB","mainEntityOfPage":{"@id":"https:\/\/aidanfinn.com\/?p=20392#webpage"},"isPartOf":{"@id":"https:\/\/aidanfinn.com\/?p=20392#webpage"},"articleSection":"Azure, ARM, ASM, Azure, Azure Backup, Managed Disks, Migration, PowerShell, Storage Account, Virtual Machines"},{"@type":"BreadcrumbList","@id":"https:\/\/aidanfinn.com\/?p=20392#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/aidanfinn.com#listItem","position":1,"name":"Home","item":"https:\/\/aidanfinn.com","nextItem":{"@type":"ListItem","@id":"https:\/\/aidanfinn.com\/?cat=5#listItem","name":"Azure"}},{"@type":"ListItem","@id":"https:\/\/aidanfinn.com\/?cat=5#listItem","position":2,"name":"Azure","item":"https:\/\/aidanfinn.com\/?cat=5","nextItem":{"@type":"ListItem","@id":"https:\/\/aidanfinn.com\/?p=20392#listItem","name":"How I Upgraded This VM To Azure Resource Manager"},"previousItem":{"@type":"ListItem","@id":"https:\/\/aidanfinn.com#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/aidanfinn.com\/?p=20392#listItem","position":3,"name":"How I Upgraded This VM To Azure Resource Manager","previousItem":{"@type":"ListItem","@id":"https:\/\/aidanfinn.com\/?cat=5#listItem","name":"Azure"}}]},{"@type":"Person","@id":"https:\/\/aidanfinn.com\/#person","name":"AFinn","image":{"@type":"ImageObject","@id":"https:\/\/aidanfinn.com\/?p=20392#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/65fde4aa9f2ab1cf1514ae320a37ec682d9398ce5791d3c2dd1e8670a71ceea0?s=96&d=mm&r=g","width":96,"height":96,"caption":"AFinn"}},{"@type":"Person","@id":"https:\/\/aidanfinn.com\/?author=1#author","url":"https:\/\/aidanfinn.com\/?author=1","name":"AFinn","image":{"@type":"ImageObject","@id":"https:\/\/aidanfinn.com\/?p=20392#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/65fde4aa9f2ab1cf1514ae320a37ec682d9398ce5791d3c2dd1e8670a71ceea0?s=96&d=mm&r=g","width":96,"height":96,"caption":"AFinn"}},{"@type":"WebPage","@id":"https:\/\/aidanfinn.com\/?p=20392#webpage","url":"https:\/\/aidanfinn.com\/?p=20392","name":"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro","description":"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.","inLanguage":"en-GB","isPartOf":{"@id":"https:\/\/aidanfinn.com\/#website"},"breadcrumb":{"@id":"https:\/\/aidanfinn.com\/?p=20392#breadcrumblist"},"author":{"@id":"https:\/\/aidanfinn.com\/?author=1#author"},"creator":{"@id":"https:\/\/aidanfinn.com\/?author=1#author"},"image":{"@type":"ImageObject","url":"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/AzureVM.png","@id":"https:\/\/aidanfinn.com\/?p=20392\/#mainImage","width":969,"height":880,"caption":"Azure Virtual Machine"},"primaryImageOfPage":{"@id":"https:\/\/aidanfinn.com\/?p=20392#mainImage"},"datePublished":"2017-08-31T16:03:16+01:00","dateModified":"2017-08-31T16:15:44+01:00"},{"@type":"WebSite","@id":"https:\/\/aidanfinn.com\/#website","url":"https:\/\/aidanfinn.com\/","name":"Aidan Finn, IT Pro","description":"A blog covering Azure, Hyper-V, Windows Server, desktop, systems management, deployment, and so on ...","inLanguage":"en-GB","publisher":{"@id":"https:\/\/aidanfinn.com\/#person"}}]},"og:locale":"en_GB","og:site_name":"Aidan Finn, IT Pro - A blog covering Azure, Hyper-V, Windows Server, desktop, systems management, deployment, and so on ...","og:type":"activity","og:title":"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro","og:description":"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.","og:url":"https:\/\/aidanfinn.com\/?p=20392","twitter:card":"summary","twitter:site":"@joe_elway","twitter:title":"How I Upgraded This VM To Azure Resource Manager | Aidan Finn, IT Pro","twitter:description":"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.","twitter:creator":"@joe_elway"},"aioseo_meta_data":{"post_id":"20392","title":null,"description":"This is a step-by-step post of how I did an Azure ASM-to-ARM migration of the virtual machine that hosts this site, and cleaned up afterwards.","keywords":[{"label":"Move-AzureVirtualNetwork","value":"Move-AzureVirtualNetwork"},{"label":"Azure","value":"Azure"},{"label":"ARM","value":"ARM"},{"label":"ASM","value":"ASM"},{"label":"Resource manager","value":"Resource manager"},{"label":"Azure Resource Manager","value":"Azure Resource Manager"},{"label":"Classic","value":"Classic"},{"label":"Azure Service Management","value":"Azure Service Management"},{"label":"Migration","value":"Migration"},{"label":"ASM-ARM","value":"ASM-ARM"},{"label":"Convert","value":"Convert"},{"label":"Disks","value":"Disks"},{"label":"Managed Disks","value":"Managed Disks"},{"label":"Un-managed disks","value":"Un-managed disks"},{"label":"VNet","value":"VNet"},{"label":"Virtual Network","value":"Virtual Network"},{"label":"Load Balancer","value":"Load Balancer"},{"label":"network security group","value":"network security group"},{"label":"NSG","value":"NSG"},{"label":"PowerShell","value":"PowerShell"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"","og_description":"","og_object_type":"activity","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":"","og_article_tags":"","twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 03:53:23","updated":"2025-06-04 17:15:02","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aidanfinn.com\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aidanfinn.com\/?cat=5\" title=\"Azure\">Azure<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow I Upgraded This VM To Azure Resource Manager\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/aidanfinn.com"},{"label":"Azure","link":"https:\/\/aidanfinn.com\/?cat=5"},{"label":"How I Upgraded This VM To Azure Resource Manager","link":"https:\/\/aidanfinn.com\/?p=20392"}],"jetpack_featured_media_url":"https:\/\/aidanfinn.com\/wp-content\/uploads\/2017\/08\/AzureVM.png","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/20392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20392"}],"version-history":[{"count":4,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/20392\/revisions"}],"predecessor-version":[{"id":20397,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/posts\/20392\/revisions\/20397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=\/wp\/v2\/media\/20394"}],"wp:attachment":[{"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aidanfinn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}