Eseguire la migrazione di risorse IaaS dal modello classico al modello di Azure Resource Manager tramite Azure PowerShellMigrate IaaS resources from classic to Azure Resource Manager by using Azure PowerShell

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.These steps show you how to use Azure PowerShell commands to migrate infrastructure as a service (IaaS) resources from the classic deployment model to the Azure Resource Manager deployment model.

È anche possibile eseguire la migrazione delle risorse usando l' interfaccia della riga di comando di Azure.If you want, you can also migrate resources by using the Azure Command Line Interface (Azure CLI).


Ecco un diagramma di flusso per identificare l'ordine di esecuzione dei passaggi durante un processo di migrazioneHere is a flowchart to identify the order in which steps need to be executed during a migration process

Screenshot that shows the migration steps

Passaggio 1: Pianificare la migrazioneStep 1: Plan for migration

Ecco alcune procedure consigliate per valutare la migrazione delle risorse IaaS dal modello classico al modello di Resource Manager:Here are a few best practices that we recommend as you evaluate migrating IaaS resources from classic to Resource Manager:

  • Leggere con attenzione le funzionalità e configurazioni supportate e non supportate.Read through the supported and unsupported features and configurations. Se sono disponibili macchine virtuali che usano configurazioni o funzionalità non supportate, è consigliabile attendere l'annuncio del supporto di tali configurazioni o funzionalità.If you have virtual machines that use unsupported configurations or features, we recommend that you wait for the configuration/feature support to be announced. In alternativa, in base alle esigenze è possibile rimuovere tale funzionalità o uscire da tale configurazione per abilitare la migrazione.Alternatively, if it suits your needs, remove that feature or move out of that configuration to enable migration.
  • 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.If you have automated scripts that deploy your infrastructure and applications today, try to create a similar test setup by using those scripts for migration. In alternativa, è anche possibile configurare ambienti di esempio tramite il portale di Azure.Alternatively, you can set up sample environments by using the Azure portal.

Importante

I gateway applicazione non sono attualmente supportati per la migrazione dal modello di distribuzione classica a Resource Manager.Application Gateways are not currently supported for migration from classic to Resource Manager. Per eseguire la migrazione di una rete virtuale classica con un gateway applicazione, rimuovere il gateway prima di eseguire un'operazione di preparazione dello spostamento della rete.To migrate a classic virtual network with an Application gateway, remove the gateway before running a Prepare operation to move the network. Dopo aver completato la migrazione, riconnettere il gateway in Azure Resource Manager.After you complete the migration, reconnect the gateway in Azure Resource Manager.

Non è possibile eseguire la migrazione automatica di gateway ExpressRoute che si connettono a circuiti ExpressRoute in un'altra sottoscrizione.ExpressRoute gateways connecting to ExpressRoute circuits in another subscription cannot be migrated automatically. In tal caso, rimuovere il gateway ExpressRoute, eseguire la migrazione della rete virtuale e ricreare il gateway.In such cases, remove the ExpressRoute gateway, migrate the virtual network and recreate the gateway. Per altre informazioni, vedere Eseguire la migrazione di circuiti ExpressRoute e delle reti virtuali associate dalla distribuzione classica al modello di distribuzione Resource Manager.Please see Migrate ExpressRoute circuits and associated virtual networks from the classic to the Resource Manager deployment model for more information.

Passaggio 2: Installare la versione più recente di Azure PowerShellStep 2: Install the latest version of Azure PowerShell

Per l'installazione di Azure PowerShell sono previste due opzioni principali: PowerShell Gallery e Installazione guidata piattaforma Web (WebPI).There are two main options to install Azure PowerShell: PowerShell Gallery or Web Platform Installer (WebPI). WebPI riceve aggiornamenti mensili.WebPI receives monthly updates. PowerShell Gallery riceve aggiornamenti su base continua.PowerShell Gallery receives updates on a continuous basis. Questo articolo si basa su Azure PowerShell versione 2.1.0.This article is based on Azure PowerShell version 2.1.0.

Per le istruzioni di installazione, vedere Come installare e configurare Azure PowerShell.For installation instructions, see How to install and configure Azure PowerShell.


Passaggio 3: Assicurarsi di essere un amministratore della sottoscrizione nel portale di AzureStep 3: Ensure that you are an administrator for the subscription in Azure portal

Per eseguire la migrazione, è necessario essere aggiunti come coamministratori della sottoscrizione nel portale di Azure.To perform this migration, you must be added as a co-administrator for the subscription in the Azure portal.

  1. Accedere al portale di Azure.Sign into the Azure portal.
  2. Nel menu Hub, selezionare Sottoscrizione.On the Hub menu, select Subscription. Se questa voce non viene visualizzata, selezionare Altri servizi.If you don't see it, select More services.
  3. Cercare la voce di sottoscrizione appropriata, quindi esaminare il campo Ruolo personale.Find the appropriate subscription entry, then look at the MY ROLE field. Per un coamministratore, il valore deve essere amministratore account.For a co-administrator, the value should be Account admin.

Se non è possibile aggiungere un coamministratore, contattare un amministratore o un coamministratore del servizio per essere aggiunti alla sottoscrizione.If you are not able to add a co-administrator, then contact a service administrator or co-administrator for the subscription to get yourself added.

Passaggio 4: impostare la sottoscrizione e iscriversi per la migrazioneStep 4: Set your subscription and sign up for migration

Avviare prima un prompt di PowerShell.First, start a PowerShell prompt. Per la migrazione è necessario configurare l'ambiente per il modello classico e di Resource Manager.For migration, you need to set up your environment for both classic and Resource Manager.

Accedere con l'account per il modello di Resource Manager.Sign in to your account for the Resource Manager model.

    Login-AzureRmAccount

È possibile ottenere le sottoscrizioni disponibili usando il comando seguente:Get the available subscriptions by using the following command:

    Get-AzureRMSubscription | Sort Name | Select Name

Impostare la sottoscrizione di Azure per la sessione corrente.Set your Azure subscription for the current session. In questo esempio viene impostato il nome My Azure Subscription per la sottoscrizione predefinita.This example sets the default subscription name to My Azure Subscription. Sostituire il nome della sottoscrizione di esempio con il nome della propria sottoscrizione.Replace the example subscription name with your own.

    Select-AzureRmSubscription –SubscriptionName "My Azure Subscription"

Nota

La registrazione è un passaggio da eseguire una sola volta, ma è necessario provvedervi prima di tentare la migrazione.Registration is a one-time step, but you must do it once before attempting migration. Senza la registrazione, verrà visualizzato il seguente messaggio di errore:Without registering, you see the following error message:

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

Registrarsi con il provider di risorse di migrazione usando il comando seguente:Register with the migration resource provider by using the following command:

    Register-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Attendere cinque minuti che la registrazione venga completata.Please wait five minutes for the registration to finish. È possibile controllare lo stato dell'approvazione con il comando seguente:You can check the status of the approval by using the following command:

    Get-AzureRmResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Assicurarsi che RegistrationState sia Registered prima di procedere.Make sure that RegistrationState is Registered before you proceed.

Accedere ora con l'account per il modello classico.Now sign in to your account for the classic model.

    Add-AzureAccount

È possibile ottenere le sottoscrizioni disponibili usando il comando seguente:Get the available subscriptions by using the following command:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Impostare la sottoscrizione di Azure per la sessione corrente.Set your Azure subscription for the current session. In questo esempio viene impostato My Azure Subscription come sottoscrizione predefinita.This example sets the default subscription to My Azure Subscription. Sostituire il nome della sottoscrizione di esempio con il nome della propria sottoscrizione.Replace the example subscription name with your own.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"


Passaggio 5: 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 virtualeStep 5: Make sure you have enough Azure Resource Manager Virtual Machine vCPUs in the Azure region of your current deployment or VNET

È possibile usare il comando PowerShell seguente per controllare il numero corrente di CPU virtuali in Azure Resource Manager.You can use the following PowerShell command to check the current number of vCPUs you have in Azure Resource Manager. Per altre informazioni sulle quote di CPU virtuali, vedere Limiti e Azure Resource Manager.To learn more about vCPU quotas, see Limits and the Azure Resource Manager.

In questo esempio viene verificata la disponibilità nell'area Stati Uniti occidentali.This example checks the availability in the West US region. Sostituire il nome dell'area di esempio con il nome della propria area.Replace the example region name with your own.

Get-AzureRmVMUsage -Location "West US"

Passaggio 6: eseguire i comandi per la migrazione delle risorse IaaSStep 6: Run commands to migrate your IaaS resources

Nota

Tutte le operazioni descritte di seguito sono idempotenti.All the operations described here are idempotent. 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.If you have a problem other than an unsupported feature or a configuration error, we recommend that you retry the prepare, abort, or commit operation. La piattaforma tenterà di ripetere l'azione.The platform then tries the action again.

Passaggio 6.1: Opzione 1 - Eseguire la migrazione delle macchine virtuali in un servizio cloud (non in una rete virtuale)Step 6.1: Option 1 - Migrate virtual machines in a cloud service (not in a virtual network)

Ottenere l'elenco dei servizi cloud con il comando seguente e selezionare il servizio cloud di cui si vuole eseguire la migrazione.Get the list of cloud services by using the following command, and then pick the cloud service that you want to migrate. 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.If the VMs in the cloud service are in a virtual network or if they have web or worker roles, the command returns an error message.

    Get-AzureService | ft Servicename

Ottenere il nome della distribuzione per il servizio cloud.Get the deployment name for the cloud service. In questo esempio il nome del servizio è My Service.In this example, the service name is My Service. Sostituire il nome del servizio di esempio con il nome del proprio servizio.Replace the example service name with your own service name.

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

Preparare le macchine virtuali nel servizio cloud per la migrazione.Prepare the virtual machines in the cloud service for migration. È possibile scegliere tra due opzioni.You have two options to choose from.

  • Opzione 1. Eseguire la migrazione delle VM a una rete virtuale creata dalla piattaformaOption 1. Migrate the VMs to a platform-created virtual network

    Per prima cosa, verificare se è possibile eseguire la migrazione del servizio cloud usando i comandi seguenti:First, validate if you can migrate the cloud service using the following commands:

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

    Il comando precedente visualizza eventuali avvisi ed errori che bloccano la migrazione.The preceding command displays any warnings and errors that block migration. Se la convalida ha esito positivo, è possibile passare alla fase di preparazione:If validation is successful, then you can move on to the Prepare step:

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Opzione 2. Eseguire la migrazione a una rete virtuale esistente nel modello di distribuzione Resource ManagerOption 2. Migrate to an existing virtual network in the Resource Manager deployment model

    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.This example sets the resource group name to myResourceGroup, the virtual network name to myVirtualNetwork and the subnet name to mySubNet. Sostituire i nomi dell'esempio con i nomi delle proprie risorse.Replace the names in the example with the names of your own resources.

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

    Per prima cosa, verificare se sia possibile eseguire la migrazione della rete virtuale usando il comando seguente:First, validate if you can migrate the virtual network using the following command:

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

    Il comando precedente visualizza eventuali avvisi ed errori che bloccano la migrazione.The preceding command displays any warnings and errors that block migration. Se la convalida ha esito positivo, è possibile procedere con il seguente passaggio di preparazione:If validation is successful, then you can proceed with the following Prepare step:

        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,After the Prepare operation succeeds with either of the preceding options, query the migration state of the VMs. verificando che sia Prepared.Ensure that they are in the Prepared state.

In questo esempio viene impostato il nome myVM per la VM.This example sets the VM name to myVM. Sostituire il nome di esempio con il nome della propria VM.Replace the example name with your own VM name.

    $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.Check the configuration for the prepared resources by using either PowerShell or the Azure portal. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:If you are not ready for migration and you want to go back to the old state, use the following command:

    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:If the prepared configuration looks good, you can move forward and commit the resources by using the following command:

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

Passaggio 6.1: Opzione 2 - Eseguire la migrazione delle macchine virtuali in un una rete virtualeStep 6.1: Option 2 - Migrate virtual machines in a virtual network

Per eseguire la migrazione delle macchine virtuali in una rete virtuale, migrare la rete virtuale.To migrate virtual machines in a virtual network, you migrate the virtual network. Le macchine virtuali migreranno automaticamente con la rete virtuale.The virtual machines automatically migrate with the virtual network. Selezionare la rete virtuale per cui si vuole eseguire la migrazione.Pick the virtual network that you want to migrate.

Nota

Eseguire la migrazione della singola macchina virtuale classica creando una nuova macchina virtuale di Resource Manager con dischi gestiti usando i file VHD (sistema operativo e dati) della macchina virtuale.Migrate single classic virtual machine by creating a new Resource Manager virtual machine with Managed Disks using the VHD (OS and data) files of the virtual machine.

Nota

Il nome della rete virtuale potrebbe essere diverso da quello mostrato nel nuovo portale.The virtual network name might be different from what is shown in the new Portal. 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].The new Azure Portal displays the name as [vnet-name] but the actual virtual network name is of type 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.Before migrating, lookup the actual virtual network name using the command Get-AzureVnetSite | Select -Property Name or view it in the old Azure Portal.

In questo esempio viene impostato il nome myVnet per la rete virtuale.This example sets the virtual network name to myVnet. Sostituire il nome della rete virtuale di esempio con il nome della propria rete virtuale.Replace the example virtual network name with your own.

    $vnetName = "myVnet"

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.If the virtual network contains web or worker roles, or VMs with unsupported configurations, you get a validation error message.

Per prima cosa, verificare se sia possibile eseguire la migrazione della rete virtuale usando il comando seguente:First, validate if you can migrate the virtual network by using the following command:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Il comando precedente visualizza eventuali avvisi ed errori che bloccano la migrazione.The preceding command displays any warnings and errors that block migration. Se la convalida ha esito positivo, è possibile procedere con il seguente passaggio di preparazione:If validation is successful, then you can proceed with the following Prepare step:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Controllare la configurazione per le macchine virtuali preparate usando Azure PowerShell o il portale di Azure.Check the configuration for the prepared virtual machines by using either Azure PowerShell or the Azure portal. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:If you are not ready for migration and you want to go back to the old state, use the following command:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Se la configurazione preparata appare corretta, è possibile procedere ed eseguire il commit delle risorse usando il comando seguente:If the prepared configuration looks good, you can move forward and commit the resources by using the following command:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Passaggio 6.2: Eseguire la migrazione di un account di archiviazioneStep 6.2 Migrate a storage account

Dopo aver completato la migrazione delle macchine virtuali, si consiglia di migrare gli account di archiviazione.Once you're done migrating the virtual machines, we recommend you migrate the storage accounts.

Prima di eseguire la migrazione dell'account di archiviazione, eseguire i controlli dei prerequisiti:Before you migrate the storage account, please perform preceding prerequisite checks:

  • Eseguire la migrazione di macchine virtuali classiche con dischi archiviati nell'account di archiviazioneMigrate classic virtual machines whose disks are stored in the storage account

    Il comando precedente restituisce le proprietà RoleName e DiskName di tutti i dischi delle VM classiche nell'account di archiviazione.Preceding command returns RoleName and DiskName properties of all the classic VM disks in the storage account. RoleName è il nome della macchina virtuale a cui il disco è collegato.RoleName is the name of the virtual machine to which a disk is attached. Se il comando precedente restituisce uno o più dischi, assicurarsi che le macchine virtuali a cui sono collegati tali dischi siano migrate prima della migrazione degli account di archiviazione.If preceding command returns disks then ensure that virtual machines to which these disks are attached are migrated before migrating the storage account.

     $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 classiche archiviati nell'account di archiviazioneDelete unattached classic VM disks stored in the storage account

    Trovare i dischi di VM classiche nello spazio di archiviazione account tramiti il seguente comando:Find unattached classic VM disks in the storage account using following command:

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

    Se il comando sopra restituisce uno o più dischi, eliminare tali dischi tramite il seguente comando:If above command returns disks then delete these disks using following command:

       Remove-AzureDisk -DiskName 'yourDiskName'
    
  • Eliminare immagini di VM archiviate nell'account di archiviazioneDelete VM images stored in the storage account

    Il comando precedente restituisce tutte le immagini di VM con il disco del sistema operativo archiviato nell'account di archiviazione.Preceding command returns all the VM images with OS disk stored in the storage account.

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

    Il comando precedente restituisce tutte le immagini di VM con il disco dei dati archiviato nell'account di archiviazione.Preceding command returns all the VM images with data disks stored in the storage account.

    
       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 dal comando precedente tramite il seguente comando:Delete all the VM images returned by above commands using preceding command:

    Remove-AzureVMImage -ImageName 'yourImageName'
    

Convalidare ogni account di archiviazione per la migrazione con il comando che segue.Validate each storage account for migration by using the following command. In questo esempio il nome dell'account di archiviazione è myStorageAccount.In this example, the storage account name is myStorageAccount. Sostituire il nome di esempio con il nome del proprio account di archiviazione.Replace the example name with the name of your own storage account.

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

Il passaggio successivo consiste nella preparazione dell'account di archiviazione per la migrazione.Next step is to Prepare the storage account for migration

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

Controllare la configurazione per l'account di archiviazione preparato tramite Azure PowerShell o il portale di Azure.Check the configuration for the prepared storage account by using either Azure PowerShell or the Azure portal. Se non si è pronti per la migrazione e si vuole tornare allo stato precedente, usare il comando seguente:If you are not ready for migration and you want to go back to the old state, use the following command:

    Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName

Se la configurazione preparata appare corretta, è possibile procedere ed eseguire il commit delle risorse usando il comando seguente:If the prepared configuration looks good, you can move forward and commit the resources by using the following command:

    Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName

Passaggi successiviNext steps