Eseguire la migrazione di risorse IaaS dal modello classico al modello di Azure Resource Manager tramite PowerShell

Si applica a: ✔️ Macchine virtuali ✔️ Linux Windows

Importante

Oggigiorno, circa il 90% delle macchine virtuali IaaS usa Azure Resource Manager. A partire dal 28 febbraio 2020, le macchine virtuali classiche sono state deprecate e verranno ritirate completamente il 6 settembre 2023. Altre informazioni su questa deprecazione e sui relativi effetti sull'utente.

Questi passaggi mostrano come usare i comandi di Azure PowerShell per eseguire la migrazione di risorse IaaS (infrastruttura distribuita come servizio) dal modello di distribuzione classica al modello di distribuzione Azure Resource Manager.

Se si vuole, è anche possibile eseguire la migrazione delle risorse usando l'interfaccia della riga di comando di Azure.


Ecco un diagramma di flusso per identificare l'ordine in cui è necessario eseguire i passaggi durante un processo di migrazione.

Screenshot that shows the migration steps

Passaggio 1: Pianificare la migrazione

Di seguito sono riportate alcune procedure consigliate quando si valuta se eseguire la migrazione delle risorse IaaS dal modello classico al Resource Manager:

  • Leggere con attenzione le funzionalità e configurazioni supportate e non supportate. Se sono presenti macchine virtuali che usano configurazioni o funzionalità non supportate, attendere l'annuncio della configurazione o del supporto delle funzionalità. In alternativa, in base alle esigenze è possibile rimuovere tale funzionalità o uscire da tale configurazione per abilitare la migrazione.
  • Se si hanno script automatizzati che consentono di distribuire subito l'infrastruttura e le applicazioni, provare a creare una configurazione di test simile usando questi script per la migrazione. In alternativa, è anche possibile configurare ambienti di esempio tramite il portale di Azure.

Importante

I gateway applicazione non sono attualmente supportati per la migrazione dal modello classico al Resource Manager. Per eseguire la migrazione di una rete virtuale con un gateway applicazione, rimuovere il gateway prima di eseguire un'operazione Prepara per spostare la rete. Dopo aver completato la migrazione, riconnettere il gateway in Azure Resource Manager.

I gateway Azure ExpressRoute che si connettono ai circuiti ExpressRoute in un'altra sottoscrizione non possono essere migrati automaticamente. In questi casi, rimuovere il gateway ExpressRoute, eseguire la migrazione della rete virtuale e ricreare il gateway. Per altre informazioni, vedere Eseguire la migrazione di circuiti ExpressRoute e reti virtuali associate dal modello di distribuzione classica al modello di distribuzione Resource Manager.

Passaggio 2: Installare la versione più recente di PowerShell

Per l'installazione di Azure PowerShell sono previste due opzioni principali: PowerShell Gallery e Installazione guidata piattaforma Web (WebPI). WebPI riceve aggiornamenti mensili. PowerShell Gallery riceve aggiornamenti su base continua. Questo articolo si basa su Azure PowerShell versione 2.1.0.

Per le istruzioni di installazione, vedere Come installare e configurare Azure PowerShell.

Passaggio 3: Assicurarsi di essere un amministratore per la sottoscrizione

Per eseguire questa migrazione, è necessario essere aggiunti come coamministratore per la sottoscrizione nel portale di Azure.

  1. Accedere al portale di Azure.
  2. Scegliere Sottoscrizione dal menu Hub. Se questa voce non viene visualizzata, selezionare Tutti i servizi.
  3. Trovare la voce di sottoscrizione appropriata e quindi esaminare il campo RUOLO PERSONALE . Per un coamministratore, il valore deve essere Amministratore account.

Se non è possibile aggiungere un coamministratore, contattare un amministratore del servizio o un coamministratore per l'aggiunta della sottoscrizione.

Passaggio 4: Impostare la sottoscrizione e iscriversi per la migrazione

Avviare prima un prompt di PowerShell. Per la migrazione, configurare l'ambiente sia per la versione classica che per Resource Manager.

Accedere con l'account per il modello di Resource Manager.

    Connect-AzAccount

È possibile ottenere le sottoscrizioni disponibili usando il comando seguente:

    Get-AzSubscription | Sort Name | Select Name

Impostare la sottoscrizione di Azure per la sessione corrente. In questo esempio viene impostato il nome My Azure Subscription per la sottoscrizione predefinita. Sostituire il nome della sottoscrizione di esempio con il nome della propria sottoscrizione.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Nota

La registrazione è un passaggio una tantum, ma è necessario eseguire questa operazione una sola volta prima di tentare la migrazione. Senza la registrazione, verrà visualizzato il seguente messaggio di errore:

BadRequest: Subscription is not registered for migration (Richiesta non valida: la sottoscrizione non è registrata per la migrazione)

Registrarsi con il provider di risorse di migrazione usando il comando seguente:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Attendere cinque minuti per il completamento della registrazione. Controllare lo stato dell'approvazione usando il comando seguente:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Assicurarsi che RegistrationState sia Registered prima di procedere.

Prima di passare al modello di distribuzione classica, assicurarsi di disporre di sufficienti vCPU di macchine virtuali di Azure Resource Manager nell'area di Azure della distribuzione o della rete virtuale corrente. È possibile usare il comando PowerShell seguente per controllare il numero corrente di CPU virtuali in Azure Resource Manager. Per altre informazioni sulle quote di CPU virtuali, vedere Limiti e Azure Resource Manager.

In questo esempio viene verificata la disponibilità nell'area Stati Uniti occidentali. Sostituire il nome dell'area di esempio con il nome della propria area.

    Get-AzVMUsage -Location "West US"

Accedere ora all'account per il modello di distribuzione classica.

    Add-AzureAccount

È possibile ottenere le sottoscrizioni disponibili usando il comando seguente:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Impostare la sottoscrizione di Azure per la sessione corrente. In questo esempio viene impostato My Azure Subscription come sottoscrizione predefinita. Sostituire il nome della sottoscrizione di esempio con il nome della propria sottoscrizione.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Passaggio 5: Eseguire i comandi per la migrazione delle risorse IaaS

Nota

Tutte le operazioni descritte di seguito sono idempotenti. Se vengono rilevati errori diversi da una funzionalità non supportata o un errore di configurazione, è consigliabile provare a ripetere l'operazione di preparazione, interruzione o commit. La piattaforma tenterà di ripetere l'azione.

Passaggio 5a: Opzione 1 - Eseguire la migrazione di macchine virtuali in un servizio cloud (non in una rete virtuale)

Ottenere l'elenco dei servizi cloud usando il comando seguente. Selezionare quindi il servizio cloud di cui si vuole eseguire la migrazione. Se le VM nel servizio cloud si trovano in una rete virtuale o hanno ruoli Web o di lavoro, il comando restituisce un messaggio di errore.

    Get-AzureService | ft Servicename

Ottenere il nome della distribuzione per il servizio cloud. In questo esempio il nome del servizio è My Service. Sostituire il nome del servizio di esempio con il nome del proprio servizio.

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

Preparare le macchine virtuali nel servizio cloud per la migrazione. È possibile scegliere tra due opzioni.

  • Opzione 1: eseguire la migrazione delle macchine virtuali a una rete virtuale creata dalla piattaforma.

    Prima di tutto, verificare di poter eseguire la migrazione del servizio cloud usando i comandi seguenti:

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

    Il comando seguente visualizza gli eventuali avvisi ed errori che bloccano la migrazione. Se i messaggi di convalida non contengono un messaggio di errore di tipo, è possibile passare al passaggio Prepara.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Opzione 2: Eseguire la migrazione a una rete virtuale esistente nel modello di distribuzione Resource Manager.

    Questo esempio imposta il nome del gruppo di risorse su myResourceGroup, il nome della rete virtuale su myVirtualNetwork e il nome della subnet su mySubNet. Sostituire i nomi dell'esempio con i nomi delle proprie risorse.

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

    Prima di tutto, verificare di poter eseguire la migrazione della rete virtuale usando il comando seguente:

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

    Il comando seguente visualizza gli eventuali avvisi ed errori che bloccano la migrazione. Se i messaggi di convalida non contengono errori, è possibile procedere con il passaggio Prepara seguente:

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

Dopo aver completato la procedura di preparazione tramite una delle opzioni precedenti, eseguire una query dello stato di migrazione delle VM, Assicurarsi che siano nello Prepared stato.

In questo esempio viene impostato il nome myVM per la VM. Sostituire il nome di esempio con il nome della propria VM.

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

Controllare la configurazione per le risorse preparate tramite PowerShell o il portale di Azure. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:

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

Se la configurazione preparata appare corretta, è possibile procedere ed eseguire il commit delle risorse usando il comando seguente:

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

Passaggio 5a: Opzione 2 - Eseguire la migrazione di macchine virtuali in una rete virtuale

Per eseguire la migrazione delle macchine virtuali in una rete virtuale, migrare la rete virtuale. Le macchine virtuali migreranno automaticamente con la rete virtuale. Selezionare la rete virtuale per cui si vuole eseguire la migrazione.

Nota

Eseguire la migrazione di una singola macchina virtuale creata usando il modello di distribuzione classica creando una nuova macchina virtuale Resource Manager con Managed Disks usando i file VHD (sistema operativo e dati) della macchina virtuale.

Nota

Il nome della rete virtuale potrebbe essere diverso da quello mostrato nel nuovo portale. Il nuovo portale di Azure visualizza il nome come [vnet-name], ma il nome effettivo della rete virtuale è di tipo Group [resource-group-name] [vnet-name]. Prima di avviare la migrazione, cercare il nome effettivo della rete virtuale usando il comando Get-AzureVnetSite | Select -Property Name o visualizzarlo nel portale di Azure precedente.

In questo esempio il nome della rete virtuale viene impostato su Group [resource-group-name][vnet-name]. Sostituire il nome della rete virtuale di esempio con uno restituito dall'esecuzione del comando nella sezione Nota precedente.

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

Nota

Se la rete virtuale contiene ruoli Web o di lavoro, o VM con configurazioni non supportate, viene visualizzato un messaggio di errore di convalida.

Prima di tutto, verificare di poter eseguire la migrazione della rete virtuale usando il comando seguente:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Il comando seguente visualizza gli eventuali avvisi ed errori che bloccano la migrazione. Se la convalida ha esito positivo, è possibile procedere con il passaggio Prepara seguente:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Controllare la configurazione per le macchine virtuali preparate usando Azure PowerShell o il portale di Azure. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Se la configurazione preparata appare corretta, è possibile procedere ed eseguire il commit delle risorse usando il comando seguente:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Passaggio 5b: Eseguire la migrazione di un account di archiviazione

Dopo aver completato la migrazione delle macchine virtuali, eseguire i controlli dei prerequisiti seguenti prima di eseguire la migrazione degli account di archiviazione.

Nota

Se l'account di archiviazione non ha dischi o dati della macchina virtuale associati, è possibile passare direttamente alla sezione "Convalidare gli account di archiviazione e avviare la migrazione". Si noti anche che l'eliminazione dei dischi classici, delle immagini di macchine virtuali o delle immagini del sistema operativo non comporta la rimozione dei file VHD di origine nell'account di archiviazione. Tuttavia, interrompe il lease su tali file VHD in modo che possano essere riutilizzati per creare dischi o immagini ARM dopo la migrazione.

  • I prerequisiti controllano se è stata eseguita la migrazione di macchine virtuali o l'account di archiviazione dispone di risorse disco:

    • Eseguire la migrazione di macchine virtuali i cui dischi vengono archiviati nell'account di archiviazione.

      Il comando seguente restituisce le proprietà RoleName e DiskName di tutti i dischi della macchina virtuale nell'account di archiviazione. RoleName è il nome della macchina virtuale a cui il disco è collegato. Se questo comando restituisce dischi, assicurarsi che le macchine virtuali a cui sono collegati questi dischi vengano migrate prima di eseguire la migrazione dell'account di archiviazione.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Eliminare i dischi delle macchine virtuali scollegati archiviati nell'account di archiviazione.

      Trovare dischi di macchine virtuali scollegati nell'account di archiviazione usando il comando seguente:

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

      Se il comando precedente restituisce dischi, eliminare questi dischi usando il comando seguente:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Eliminare le immagini vm archiviate nell'account di archiviazione.

      Il comando seguente restituisce tutte le immagini di macchina virtuale con dischi del sistema operativo archiviati nell'account di archiviazione.

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

      Il comando seguente restituisce tutte le immagini di macchina virtuale con dischi dati archiviati nell'account di archiviazione.

      
         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
      

      Eliminare tutte le immagini di macchina virtuale restituite dai comandi precedenti usando questo comando:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Convalidare gli account di archiviazione e avviare la migrazione.

    Convalidare ogni account di archiviazione per la migrazione con il comando che segue. In questo esempio il nome dell'account di archiviazione è myStorageAccount. Sostituire il nome di esempio con il nome del proprio account di archiviazione.

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

    Il passaggio successivo consiste nel preparare l'account di archiviazione per la migrazione.

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

    Controllare la configurazione per l'account di archiviazione preparato tramite Azure PowerShell o il portale di Azure. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Se la configurazione preparata appare corretta, è possibile procedere ed eseguire il commit delle risorse usando il comando seguente:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Passaggi successivi