Condividi tramite


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

Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali 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 di esecuzione dei passaggi durante un processo di migrazione.

Screenshot that shows the migration steps

Passaggio 1: Pianificare la migrazione

Ecco alcune procedure consigliate per valutare se eseguire o meno la migrazione delle risorse IaaS dal modello classico a Resource Manager:

  • Leggere con attenzione le funzionalità e configurazioni supportate e non supportate. Se sono disponibili macchine virtuali che usano configurazioni o funzionalità non supportate, attendere l'annuncio del supporto di tali configurazioni o 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 a Resource Manager. Per eseguire la migrazione di una rete virtuale con un gateway applicazione, rimuovere il gateway prima di eseguire un'operazione di preparazione dello spostamento della rete. Dopo aver completato la migrazione, riconnettere il gateway in Azure Resource Manager.

Non è possibile eseguire la migrazione automatica di gateway Azure ExpressRoute che si connettono a circuiti ExpressRoute in un'altra sottoscrizione. 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 delle reti virtuali associate dal modello di distribuzione classica a 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 della sottoscrizione

Per eseguire la migrazione, è necessario essere aggiunti come coamministratori della sottoscrizione nel portale di Azure.

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

Se non è possibile aggiungere un coamministratore, contattare un amministratore o un coamministratore del servizio per essere aggiunti alla sottoscrizione.

Passaggio 4: Impostare la sottoscrizione e registrarsi per la migrazione

Avviare prima un prompt di PowerShell. Per la migrazione, configurare l'ambiente per il modello di distribuzione classica e 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 da eseguire una sola volta, ma è necessario provvedervi prima di provare a eseguire 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 che la registrazione venga completata. Controllare lo stato dell'approvazione con il comando seguente:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Assicurarsi che RegistrationState sia Registered prima di procedere.

Prima di passare al modello di distribuzione classica, verificare che siano disponibili sufficienti CPU virtuali delle macchine virtuali di Azure Resource Manager nell'area di Azure di cui fa parte la distribuzione corrente o la rete virtuale. È 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 con l'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 delle macchine virtuali in un servizio cloud (non in una rete virtuale)

Per ottenere l'elenco dei servizi cloud, usare il comando seguente. Selezionare 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 VM a una rete virtuale creata dalla piattaforma.

    Per prima cosa, verificare che sia possibile 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 con il tipo di errore, è 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.

    In questo esempio vengono impostati il nome myResourceGroup per il gruppo di risorse, il nome myVirtualNetwork per la rete virtuale e il nome mySubNet per la subnet. Sostituire i nomi dell'esempio con i nomi delle proprie risorse.

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

    Per prima cosa, verificare che sia possibile 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 seguente passaggio Prepara:

        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 stato Prepared.

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 delle macchine virtuali in un 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 di Resource Manager con dischi gestiti 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 della migrazione, controllare il nome effettivo della rete virtuale usando il comando Get-AzureVnetSite | Select -Property Name o visualizzarlo nel portale di Azure precedente.

Questo esempio seguente imposta il nome della rete virtuale su Gruppo [resource-group-name][vnet-name]. Sostituire il nome della rete virtuale di esempio con quello 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.

Per prima cosa, verificare che sia possibile 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 seguente passaggio di preparazione:

    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

Al termine della migrazione delle macchine virtuali, eseguire i controlli dei prerequisiti seguenti prima di procedere alla migrazione degli account di archiviazione.

Nota

Se all'account di archiviazione non sono associati dischi o dati di macchina virtuale, è possibile passare direttamente alla sezione "Convalidare l'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 rimuove i 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.

  • Controlli dei prerequisiti se è stata eseguita la migrazione di macchine virtuali o se l'account di archiviazione ha risorse disco:

    • Eseguire la migrazione di macchine virtuali con dischi archiviati nell'account di archiviazione.

      Il comando seguente restituisce le proprietà RoleName e DiskName di tutti i dischi delle macchine virtuali nell'account di archiviazione. RoleName è il nome della macchina virtuale a cui il disco è collegato. Se il 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 di VM scollegati archiviati nell'account di archiviazione.

      Trovare i dischi di VM scollegati nell'account di archiviazione usando il seguente comando:

          $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 immagini di VM archiviate nell'account di archiviazione.

      Il comando seguente restituisce tutte le immagini di VM con i dischi del sistema operativo archiviato 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 VM 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 nella preparazione dell'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