IaaS-resources migreren van klassiek naar Azure Resource Manager met behulp van PowerShell

Van toepassing op: ✔️ Linux-VM's ✔️ Windows-VM's

Belangrijk

Momenteel maakt ongeveer 90% van de IaaS-VM's gebruik van Azure Resource Manager. Vanaf 28 februari 2020 zijn klassieke VM's afgeschaft en worden ze op 6 september 2023 volledig buiten gebruik gesteld. Meer informatie over deze afschaffing en hoe dit van invloed is op u.

Deze stappen laten zien hoe u Azure PowerShell opdrachten gebruikt om IaaS-resources (Infrastructure as a Service) te migreren van het klassieke implementatiemodel naar het Azure Resource Manager-implementatiemodel.

Als u wilt, kunt u ook resources migreren met behulp van de Azure CLI.


Hier volgt een stroomdiagram om de volgorde te bepalen waarin de stappen moeten worden uitgevoerd tijdens een migratieproces.

Schermafbeelding van de migratiestappen

Stap 1: Migratie plannen

Hier volgen enkele aanbevolen procedures voor het migreren van IaaS-resources van klassiek naar Resource Manager:

  • Lees de ondersteunde en niet-ondersteunde functies en configuraties. Als u virtuele machines hebt die gebruikmaken van niet-ondersteunde configuraties of functies, wacht u totdat de configuratie- of functieondersteuning is aangekondigd. U kunt ook, als het aan uw behoeften voldoet, die functie verwijderen of uit die configuratie verplaatsen om migratie mogelijk te maken.
  • Als u momenteel geautomatiseerde scripts hebt waarmee uw infrastructuur en toepassingen worden geïmplementeerd, probeert u een vergelijkbare testinstallatie te maken met behulp van deze scripts voor migratie. U kunt ook voorbeeldomgevingen instellen met behulp van de Azure Portal.

Belangrijk

Toepassingsgateways worden momenteel niet ondersteund voor migratie van klassiek naar Resource Manager. Als u een virtueel netwerk wilt migreren met een toepassingsgateway, verwijdert u de gateway voordat u een bewerking Voorbereiden uitvoert om het netwerk te verplaatsen. Nadat u de migratie hebt voltooid, maakt u opnieuw verbinding met de gateway in Azure Resource Manager.

Azure ExpressRoute-gateways die verbinding maken met ExpressRoute-circuits in een ander abonnement, kunnen niet automatisch worden gemigreerd. In dergelijke gevallen verwijdert u de ExpressRoute-gateway, migreert u het virtuele netwerk en maakt u de gateway opnieuw. Zie ExpressRoute-circuits en gekoppelde virtuele netwerken migreren van het klassieke naar het Resource Manager-implementatiemodel voor meer informatie.

Stap 2: de nieuwste versie van PowerShell installeren

Er zijn twee belangrijke opties voor het installeren van Azure PowerShell: PowerShell Gallery of WebPI (Web Platform Installer). WebPI ontvangt maandelijkse updates. PowerShell Gallery ontvangt continu updates. Dit artikel is gebaseerd op Azure PowerShell versie 2.1.0.

Zie Azure PowerShell installeren en configureren voor de installatie-instructies.

Stap 3: Zorg ervoor dat u een beheerder bent voor het abonnement

Als u deze migratie wilt uitvoeren, moet u worden toegevoegd als medebeheerder voor het abonnement in de Azure Portal.

  1. Meld u aan bij de Azure-portal.
  2. Selecteer Abonnement in het menu Hub. Als u deze niet ziet, selecteert u Alle services.
  3. Zoek de juiste abonnementsvermelding en bekijk het veld MIJN ROL . Voor een medebeheerder moet de waarde Accountbeheerder zijn.

Als u geen co-beheerder kunt toevoegen, neemt u contact op met een servicebeheerder of medebeheerder voor het abonnement om uzelf toe te voegen.

Stap 4: uw abonnement instellen en registreren voor migratie

Start eerst een PowerShell-prompt. Voor migratie stelt u uw omgeving in voor zowel klassieke als Resource Manager.

Meld u aan bij uw account voor het Resource Manager-model.

    Connect-AzAccount

Haal de beschikbare abonnementen op met behulp van de volgende opdracht:

    Get-AzSubscription | Sort Name | Select Name

Stel uw Azure-abonnement in voor de huidige sessie. In dit voorbeeld wordt de standaardnaam van het abonnement ingesteld op Mijn Azure-abonnement. Vervang de voorbeeldnaam van het abonnement door uw eigen abonnementsnaam.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Notitie

Registratie is een eenmalige stap, maar u moet dit eenmaal doen voordat u de migratie uitvoert. Als u zich niet registreert, ziet u het volgende foutbericht:

BadRequest: Het abonnement is niet geregistreerd voor migratie.

Registreer u bij de migratieresourceprovider met behulp van de volgende opdracht:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Wacht vijf minuten totdat de registratie is voltooid. Controleer de status van de goedkeuring met behulp van de volgende opdracht:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Zorg ervoor dat RegistrationState is Registered voordat u verdergaat.

Voordat u overschakelt naar het klassieke implementatiemodel, moet u ervoor zorgen dat u voldoende Azure Resource Manager virtuele machine vCPU's hebt in de Azure-regio van uw huidige implementatie of virtuele netwerk. U kunt de volgende PowerShell-opdracht gebruiken om het huidige aantal vCPU's in Azure Resource Manager te controleren. Zie Limieten en de Azure-Resource Manager voor meer informatie over vCPU-quota.

In dit voorbeeld wordt de beschikbaarheid in de regio VS - west gecontroleerd. Vervang de voorbeeldregionaam door uw eigen regionaam.

    Get-AzVMUsage -Location "West US"

Meld u nu aan bij uw account voor het klassieke implementatiemodel.

    Add-AzureAccount

Haal de beschikbare abonnementen op met behulp van de volgende opdracht:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Stel uw Azure-abonnement in voor de huidige sessie. In dit voorbeeld wordt het standaardabonnement ingesteld op Mijn Azure-abonnement. Vervang de voorbeeldnaam van het abonnement door uw eigen abonnementsnaam.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Stap 5: Opdrachten uitvoeren om uw IaaS-resources te migreren

Notitie

Alle bewerkingen die hier worden beschreven, zijn idempotent. Als u een ander probleem hebt dan een niet-ondersteunde functie of een configuratiefout, raden we u aan de bewerking voorbereiden, afbreken of doorvoeren opnieuw uit te voeren. Het platform probeert de actie vervolgens opnieuw uit te voeren.

Stap 5a: optie 1: virtuele machines migreren in een cloudservice (niet in een virtueel netwerk)

Haal de lijst met cloudservices op met behulp van de volgende opdracht. Kies vervolgens de cloudservice die u wilt migreren. Als de VM's in de cloudservice zich in een virtueel netwerk bevinden of als ze web- of werkrollen hebben, retourneert de opdracht een foutbericht.

    Get-AzureService | ft Servicename

Haal de implementatienaam voor de cloudservice op. In dit voorbeeld is de servicenaam Mijn service. Vervang de voorbeeldservicenaam door uw eigen servicenaam.

    $serviceName = "My Service"
    $deployment = Get-AzureDeployment -ServiceName $serviceName
    $deploymentName = $deployment.DeploymentName

Bereid de virtuele machines in de cloudservice voor op migratie. U kunt uit twee opties kiezen.

  • Optie 1: Migreer de VM's naar een virtueel netwerk dat door een platform is gemaakt.

    Controleer eerst of u de cloudservice kunt migreren met behulp van de volgende opdrachten:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    $validate.ValidationMessages
    

    Met de volgende opdracht worden waarschuwingen en fouten weergegeven die de migratie blokkeren. Als validatieberichten geen bericht van het type fout bevatten, kunt u doorgaan met de stap Voorbereiden.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Optie 2: Migreren naar een bestaand virtueel netwerk in het Resource Manager-implementatiemodel.

    In dit voorbeeld wordt de naam van de resourcegroep ingesteld op myResourceGroup, de naam van het virtuele netwerk op myVirtualNetwork en de subnetnaam op mySubNet. Vervang de namen in het voorbeeld door de namen van uw eigen resources.

    $existingVnetRGName = "myResourceGroup"
    $vnetName = "myVirtualNetwork"
    $subnetName = "mySubNet"
    

    Controleer eerst of u het virtuele netwerk kunt migreren met behulp van de volgende opdracht:

    $validate = Move-AzureService -Validate -ServiceName $serviceName `
        -DeploymentName $deploymentName -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName -VirtualNetworkName $vnetName -SubnetName $subnetName
    $validate.ValidationMessages
    

    Met de volgende opdracht worden waarschuwingen en fouten weergegeven die de migratie blokkeren. Als validatieberichten geen fouten bevatten, kunt u doorgaan met de volgende stap Voorbereiden:

        Move-AzureService -Prepare -ServiceName $serviceName -DeploymentName $deploymentName `
        -UseExistingVirtualNetwork -VirtualNetworkResourceGroupName $existingVnetRGName `
        -VirtualNetworkName $vnetName -SubnetName $subnetName
    

Nadat de bewerking Voorbereiden is voltooid met een van de voorgaande opties, voert u een query uit naar de migratiestatus van de VM's. Zorg ervoor dat ze zich in de Prepared staat bevinden.

In dit voorbeeld wordt de vm-naam ingesteld op myVM. Vervang de voorbeeldnaam door de naam van uw eigen VM.

    $vmName = "myVM"
    $vm = Get-AzureVM -ServiceName $serviceName -Name $vmName
    $vm.VM.MigrationState

Controleer de configuratie voor de voorbereide resources met behulp van PowerShell of de Azure Portal. Als u nog niet klaar bent voor migratie en u wilt teruggaan naar de oude status, gebruikt u de volgende opdracht:

    Move-AzureService -Abort -ServiceName $serviceName -DeploymentName $deploymentName

Als de voorbereide configuratie er goed uitziet, kunt u verdergaan en de resources doorvoeren met behulp van de volgende opdracht:

    Move-AzureService -Commit -ServiceName $serviceName -DeploymentName $deploymentName

Stap 5a: optie 2: virtuele machines in een virtueel netwerk migreren

Als u virtuele machines in een virtueel netwerk wilt migreren, migreert u het virtuele netwerk. De virtuele machines worden automatisch gemigreerd met het virtuele netwerk. Kies het virtuele netwerk dat u wilt migreren.

Notitie

Migreer één virtuele machine die is gemaakt met het klassieke implementatiemodel door een nieuwe Resource Manager virtuele machine te maken met Managed Disks met behulp van de VHD-bestanden (besturingssysteem en gegevens) van de virtuele machine.

Notitie

De naam van het virtuele netwerk kan verschillen van wat wordt weergegeven in de nieuwe portal. De nieuwe Azure Portal geeft de naam weer als [vnet-name], maar de werkelijke naam van het virtuele netwerk is van het type Group [resource-group-name] [vnet-name]. Voordat u de migratie start, zoekt u de werkelijke naam van het virtuele netwerk op met behulp van de opdracht Get-AzureVnetSite | Select -Property Name of bekijkt u deze in de oude Azure Portal.

In het volgende voorbeeld wordt de naam van het virtuele netwerk ingesteld op Groep [resource-group-name][vnet-name]. Vervang de voorbeeldnaam van het virtuele netwerk door een naam die is geretourneerd door het uitvoeren van de opdracht in de sectie Opmerking hierboven.

    $vnetName = "Group [resource-group-name] [vnet-name]"

Notitie

Als het virtuele netwerk web- of werkrollen of VM's met niet-ondersteunde configuraties bevat, krijgt u een validatiefoutbericht.

Controleer eerst of u het virtuele netwerk kunt migreren met behulp van de volgende opdracht:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Met de volgende opdracht worden waarschuwingen en fouten weergegeven die de migratie blokkeren. Als de validatie is geslaagd, kunt u doorgaan met de volgende stap Voorbereiden:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Controleer de configuratie voor de voorbereide virtuele machines met behulp van Azure PowerShell of de Azure Portal. Als u nog niet klaar bent voor migratie en u wilt teruggaan naar de oude status, gebruikt u de volgende opdracht:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Als de voorbereide configuratie er goed uitziet, kunt u verdergaan en de resources doorvoeren met behulp van de volgende opdracht:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Stap 5b: Een opslagaccount migreren

Nadat u klaar bent met het migreren van de virtuele machines, voert u de volgende vereistencontroles uit voordat u de opslagaccounts migreert.

Notitie

Als uw opslagaccount geen gekoppelde schijven of VM-gegevens heeft, kunt u rechtstreeks doorgaan naar de sectie Opslagaccounts valideren en de migratie starten. Houd er ook rekening mee dat als u de klassieke schijven, VM-installatiekopieën of installatiekopieën van het besturingssysteem verwijdert, de bron-VHD-bestanden in het opslagaccount niet worden verwijderd. De lease van deze VHD-bestanden wordt echter verbroken, zodat ze na de migratie opnieuw kunnen worden gebruikt om ARM-schijven of -installatiekopieën te maken.

  • Vereistencontroles als u VM's hebt gemigreerd of als uw opslagaccount schijfresources heeft:

    • Virtuele machines migreren waarvan de schijven zijn opgeslagen in het opslagaccount.

      De volgende opdracht retourneert de eigenschappen RoleName en DiskName van alle VM-schijven in het opslagaccount. RoleName is de naam van de virtuele machine waaraan een schijf is gekoppeld. Als met deze opdracht schijven worden geretourneerd, moet u ervoor zorgen dat virtuele machines waaraan deze schijven zijn gekoppeld, worden gemigreerd voordat u het opslagaccount migreert.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Verwijder niet-gekoppelde VM-schijven die zijn opgeslagen in het opslagaccount.

      Zoek niet-gekoppelde VM-schijven in het opslagaccount met behulp van de volgende opdracht:

          $storageAccountName = 'yourStorageAccountName'
          Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Where-Object -Property AttachedTo -EQ $null | Format-List -Property DiskName  
      
      

      Als de vorige opdracht schijven retourneert, verwijdert u deze schijven met behulp van de volgende opdracht:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Verwijder VM-installatiekopieën die zijn opgeslagen in het opslagaccount.

      De volgende opdracht retourneert alle VM-installatiekopieën met besturingssysteemschijven die zijn opgeslagen in het opslagaccount.

         Get-AzureVmImage | Where-Object { $_.OSDiskConfiguration.MediaLink -ne $null -and $_.OSDiskConfiguration.MediaLink.Host.Contains($storageAccountName)`
                                 } | Select-Object -Property ImageName, ImageLabel
      

      De volgende opdracht retourneert alle VM-installatiekopieën met gegevensschijven die zijn opgeslagen in het opslagaccount.

      
         Get-AzureVmImage | Where-Object {$_.DataDiskConfigurations -ne $null `
                                          -and ($_.DataDiskConfigurations | Where-Object {$_.MediaLink -ne $null -and $_.MediaLink.Host.Contains($storageAccountName)}).Count -gt 0 `
                                         } | Select-Object -Property ImageName, ImageLabel
      

      Verwijder alle VM-installatiekopieën die door de vorige opdrachten zijn geretourneerd met behulp van deze opdracht:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Opslagaccounts valideren en de migratie starten.

    Valideer elk opslagaccount voor migratie met behulp van de volgende opdracht. In dit voorbeeld is de naam van het opslagaccount myStorageAccount. Vervang de voorbeeldnaam door de naam van uw eigen opslagaccount.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Validate -StorageAccountName $storageAccountName
    

    De volgende stap is het voorbereiden van het opslagaccount voor migratie.

        $storageAccountName = "myStorageAccount"
        Move-AzureStorageAccount -Prepare -StorageAccountName $storageAccountName
    

    Controleer de configuratie voor het voorbereide opslagaccount met behulp van Azure PowerShell of de Azure Portal. Als u nog niet klaar bent voor migratie en u wilt teruggaan naar de oude status, gebruikt u de volgende opdracht:

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Als de voorbereide configuratie er goed uitziet, kunt u verdergaan en de resources doorvoeren met behulp van de volgende opdracht:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Volgende stappen