Migrar os recursos IaaS clássicos para o Azure Resource Manager com o PowerShell

Aplica-se a: ✔️ VMs ✔️ do Windows para Linux

Importante

Atualmente, cerca de 90% das VMs IaaS estão a utilizar o Azure Resource Manager. A partir de 28 de fevereiro de 2020, as VMs clássicas foram preteridas e serão totalmente descontinuadas a 6 de setembro de 2023. Saiba mais sobre esta preterição e como a afeta.

Estes passos mostram-lhe como utilizar Azure PowerShell comandos para migrar recursos de infraestrutura como um serviço (IaaS) do modelo de implementação clássica para o modelo de implementação do Azure Resource Manager.

Se quiser, também pode migrar recursos com a CLI do Azure.


Eis um fluxograma para identificar a ordem pela qual os passos têm de ser executados durante um processo de migração.

Captura de ecrã que mostra os passos da migração

Passo 1: Planear a migração

Eis algumas melhores práticas que recomendamos ao avaliar se quer migrar recursos IaaS do clássico para o Resource Manager:

  • Leia as funcionalidades e configurações suportadas e não suportadas. Se tiver máquinas virtuais que utilizam configurações ou funcionalidades não suportadas, aguarde até que o suporte de configuração ou funcionalidade seja anunciado. Em alternativa, se se adequar às suas necessidades, remova essa funcionalidade ou saia dessa configuração para ativar a migração.
  • Se tiver scripts automatizados que implementem a sua infraestrutura e aplicações atualmente, tente criar uma configuração de teste semelhante com esses scripts para migração. Em alternativa, pode configurar ambientes de exemplo com o portal do Azure.

Importante

Atualmente, os gateways de aplicação não são suportados para migração do clássico para o Resource Manager. Para migrar uma rede virtual com um gateway de aplicação, remova o gateway antes de executar uma operação preparar para mover a rede. Depois de concluir a migração, volte a ligar o gateway no Azure Resource Manager.

Os gateways do Azure ExpressRoute que se ligam aos circuitos do ExpressRoute noutra subscrição não podem ser migrados automaticamente. Nestes casos, remova o gateway do ExpressRoute, migre a rede virtual e recrie o gateway. Para obter mais informações, veja Migrate ExpressRoute circuits and associated virtual networks from the classic to the Resource Manager deployment model (Migrar circuitos do ExpressRoute e redes virtuais associadas do modelo clássico para o modelo de implementação do Resource Manager).

Passo 2: Instalar a versão mais recente do PowerShell

Existem duas opções principais para instalar Azure PowerShell: Galeria do PowerShell ou Instalador de Plataforma Web (WebPI). O WebPI recebe atualizações mensais. A Galeria do PowerShell recebe atualizações continuamente. Este artigo baseia-se no Azure PowerShell versão 2.1.0.

Para obter instruções de instalação, veja Como instalar e configurar Azure PowerShell.

Passo 3: garantir que é um administrador da subscrição

Para efetuar esta migração, tem de ser adicionado como coadministrador da subscrição no portal do Azure.

  1. Inicie sessão no portal do Azure.
  2. No menu Hub , selecione Subscrição. Se não o vir, selecione Todos os serviços.
  3. Localize a entrada de subscrição adequada e, em seguida, observe o campo A MINHA FUNÇÃO . Para um coadministrador, o valor deve ser Administrador de conta.

Se não conseguir adicionar um coadministrador, contacte um administrador ou coadministrador de serviços para que a subscrição seja adicionada.

Passo 4: Definir a sua subscrição e inscrever-se para migração

Primeiro, inicie uma linha de comandos do PowerShell. Para migração, configure o seu ambiente para o clássico e o Resource Manager.

Inicie sessão na sua conta para o modelo do Resource Manager.

    Connect-AzAccount

Obtenha as subscrições disponíveis com o seguinte comando:

    Get-AzSubscription | Sort Name | Select Name

Defina a sua subscrição do Azure para a sessão atual. Este exemplo define o nome da subscrição predefinido para A Minha Subscrição do Azure. Substitua o nome da subscrição de exemplo pelo seu próprio nome.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Nota

O registo é um passo único, mas tem de o fazer uma vez antes de tentar a migração. Sem se registar, verá a seguinte mensagem de erro:

BadRequest: a subscrição não está registada para migração.

Registe-se no fornecedor de recursos de migração com o seguinte comando:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Aguarde cinco minutos para que o registo termine. Verifique o estado da aprovação com o seguinte comando:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Certifique-se de que RegistrationState está Registered antes de continuar.

Antes de mudar para o modelo de implementação clássica, certifique-se de que tem vCPUs de máquina virtual do Azure Resource Manager suficientes na região do Azure da sua implementação ou rede virtual atual. Pode utilizar o seguinte comando do PowerShell para verificar o número atual de vCPUs que tem no Azure Resource Manager. Para saber mais sobre as quotas de vCPU, veja Limites e o Azure Resource Manager.

Este exemplo verifica a disponibilidade na região E.U.A. Oeste . Substitua o nome da região de exemplo pelo seu próprio nome.

    Get-AzVMUsage -Location "West US"

Agora, inicie sessão na sua conta para o modelo de implementação clássica.

    Add-AzureAccount

Obtenha as subscrições disponíveis com o seguinte comando:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Defina a sua subscrição do Azure para a sessão atual. Este exemplo define a subscrição predefinida para A Minha Subscrição do Azure. Substitua o nome da subscrição de exemplo pelo seu próprio nome.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Passo 5: Executar comandos para migrar os recursos IaaS

Nota

Todas as operações descritas aqui são idempotentes. Se tiver um problema que não seja uma funcionalidade não suportada ou um erro de configuração, recomendamos que repita a operação de preparação, abortação ou consolidação. Em seguida, a plataforma tenta a ação novamente.

Passo 5a: Opção 1 – Migrar máquinas virtuais num serviço cloud (não numa rede virtual)

Obtenha a lista de serviços cloud com o seguinte comando. Em seguida, escolha o serviço cloud que pretende migrar. Se as VMs no serviço cloud estiverem numa rede virtual ou se tiverem funções web ou de trabalho, o comando devolve uma mensagem de erro.

    Get-AzureService | ft Servicename

Obtenha o nome da implementação do serviço cloud. Neste exemplo, o nome do serviço é O Meu Serviço. Substitua o nome do serviço de exemplo pelo seu próprio nome de serviço.

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

Preparar as máquinas virtuais no serviço cloud para migração. Tem duas opções à sua escolha.

  • Opção 1: migrar as VMs para uma rede virtual criada pela plataforma.

    Primeiro, confirme que pode migrar o serviço cloud com os seguintes comandos:

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

    O comando seguinte apresenta quaisquer avisos e erros que bloqueiem a migração. Se as mensagens de validação não tiverem uma mensagem de erro de tipo, pode avançar para o passo Preparar.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Opção 2: migrar para uma rede virtual existente no modelo de implementação Resource Manager.

    Este exemplo define o nome do grupo de recursos para myResourceGroup, o nome da rede virtual para myVirtualNetwork e o nome da sub-rede para mySubNet. Substitua os nomes no exemplo pelos nomes dos seus próprios recursos.

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

    Primeiro, confirme que pode migrar a rede virtual com o seguinte comando:

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

    O comando seguinte apresenta quaisquer avisos e erros que bloqueiem a migração. Se as mensagens de validação não tiverem erros, pode prosseguir com o seguinte passo preparar:

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

Depois de a operação Preparar ser bem-sucedida com qualquer uma das opções anteriores, consulte o estado de migração das VMs. Certifique-se de que estão no Prepared estado.

Este exemplo define o nome da VM como myVM. Substitua o nome do exemplo pelo seu próprio nome de VM.

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

Verifique a configuração dos recursos preparados com o PowerShell ou o portal do Azure. Se não estiver pronto para a migração e quiser voltar ao estado antigo, utilize o seguinte comando:

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

Se a configuração preparada parecer boa, pode avançar e consolidar os recursos com o seguinte comando:

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

Passo 5a: Opção 2 – Migrar máquinas virtuais numa rede virtual

Para migrar máquinas virtuais numa rede virtual, migre a rede virtual. As máquinas virtuais migram automaticamente com a rede virtual. Escolha a rede virtual que pretende migrar.

Nota

Migre uma única máquina virtual criada com o modelo de implementação clássica ao criar uma nova máquina virtual do Resource Manager com Managed Disks através dos ficheiros VHD (SO e dados) da máquina virtual.

Nota

O nome da rede virtual pode ser diferente do que é mostrado no novo portal. O novo portal do Azure apresenta o nome como [vnet-name], mas o nome real da rede virtual é do tipo Group [resource-group-name] [vnet-name]. Antes de iniciar a migração, procure o nome real da rede virtual com o comando Get-AzureVnetSite | Select -Property Name ou veja-o no portal do Azure antigo.

Este exemplo seguinte define o nome da rede virtual como Agrupar [resource-group-name][vnet-name]. Substitua o nome da rede virtual de exemplo por um que tenha sido devolvido da execução do comando na secção Nota acima..

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

Nota

Se a rede virtual contiver funções Web ou de trabalho ou VMs com configurações não suportadas, receberá uma mensagem de erro de validação.

Primeiro, confirme que pode migrar a rede virtual com o seguinte comando:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

O comando seguinte apresenta quaisquer avisos e erros que bloqueiem a migração. Se a validação for bem-sucedida, pode prosseguir com o seguinte passo preparar:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Verifique a configuração das máquinas virtuais preparadas com Azure PowerShell ou o portal do Azure. Se não estiver pronto para a migração e quiser voltar ao estado antigo, utilize o seguinte comando:

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Se a configuração preparada parecer boa, pode avançar e consolidar os recursos com o seguinte comando:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Passo 5b: Migrar uma conta de armazenamento

Depois de migrar as máquinas virtuais, execute as seguintes verificações de pré-requisitos antes de migrar as contas de armazenamento.

Nota

Se a sua conta de armazenamento não tiver discos ou dados de VM associados, pode avançar diretamente para a secção "Validar contas de armazenamento e iniciar a migração". Tenha também em atenção que eliminar os discos clássicos, imagens de VM ou imagens do SO não remove os ficheiros VHD de origem na conta de armazenamento. No entanto, interrompe a concessão nesses ficheiros VHD para que possam ser reutilizados para criar discos ou imagens do ARM após a migração.

  • Verificações de pré-requisitos se migrou VMs ou se a conta de armazenamento tem recursos de disco:

    • Migrar máquinas virtuais cujos discos estão armazenados na conta de armazenamento.

      O comando seguinte devolve as propriedades RoleName e DiskName de todos os discos da VM na conta de armazenamento. RoleName é o nome da máquina virtual à qual um disco está anexado. Se este comando devolver discos, certifique-se de que as máquinas virtuais às quais estes discos estão anexados são migradas antes de migrar a conta de armazenamento.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • Elimine discos de VM desanexados armazenados na conta de armazenamento.

      Localize discos de VM desanexados na conta de armazenamento com o seguinte comando:

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

      Se o comando anterior devolver discos, elimine estes discos com o seguinte comando:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Eliminar imagens de VM armazenadas na conta de armazenamento.

      O comando seguinte devolve todas as imagens da VM com discos de SO armazenados na conta de armazenamento.

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

      O comando seguinte devolve todas as imagens da VM com discos de dados armazenados na conta de armazenamento.

      
         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
      

      Elimine todas as imagens de VM devolvidas pelos comandos anteriores com este comando:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Valide as contas de armazenamento e inicie a migração.

    Valide cada conta de armazenamento para migração com o seguinte comando. Neste exemplo, o nome da conta de armazenamento é myStorageAccount. Substitua o nome de exemplo pelo nome da sua própria conta de armazenamento.

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

    O próximo passo é preparar a conta de armazenamento para migração.

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

    Verifique a configuração da conta de armazenamento preparada com Azure PowerShell ou o portal do Azure. Se não estiver pronto para a migração e quiser voltar ao estado antigo, utilize o seguinte comando:

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Se a configuração preparada parecer boa, pode avançar e consolidar os recursos com o seguinte comando:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Passos seguintes