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

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

Importante

Atualmente, cerca de 90% das VMs IaaS estão usando o Azure Resource Manager. A partir de 28 de fevereiro de 2020, as VMs clássicas foram preteridas e serão totalmente desativadas em 6 de setembro de 2023. Saiba mais sobre essa depreciação e como ela afeta você.

Estas etapas mostram como usar os comandos do Azure PowerShell para migrar recursos de infraestrutura como serviço (IaaS) do modelo de implantação clássico para o modelo de implantação do Azure Resource Manager.

Se desejar, você também pode migrar recursos usando a CLI do Azure.


Aqui está um fluxograma para identificar a ordem na qual as etapas precisam ser executadas durante um processo de migração.

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

Etapa 1: Planejar a migração

Aqui estão algumas práticas recomendadas que recomendamos ao avaliar se você deve migrar recursos IaaS do clássico para o Gerenciador de Recursos:

  • Leia os recursos e configurações suportados e não suportados. Se você tiver máquinas virtuais que usam configurações ou recursos sem suporte, aguarde até que a configuração ou o suporte a recursos seja anunciado. Como alternativa, se atender às suas necessidades, remova esse recurso ou saia dessa configuração para habilitar a migração.
  • Se você tiver scripts automatizados que implantam sua infraestrutura e aplicativos hoje, tente criar uma configuração de teste semelhante usando esses scripts para migração. Como alternativa, você pode configurar ambientes de exemplo usando o portal do Azure.

Importante

Atualmente, não há suporte para gateways de aplicativos para migração do clássico para o Gerenciador de Recursos. Para migrar uma rede virtual com um gateway de aplicativo, remova o gateway antes de executar uma operação Preparar para mover a rede. Depois de concluir a migração, reconecte o gateway no Gerenciador de Recursos do Azure.

Os gateways de Rota Expressa do Azure que se conectam a circuitos de Rota Expressa em outra assinatura não podem ser migrados automaticamente. Nesses casos, remova o gateway da Rota Expressa, migre a rede virtual e recrie o gateway. Para obter mais informações, consulte Migrar circuitos de Rota Expressa e redes virtuais associadas do modelo de implantação clássico para o Resource Manager.

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

Há duas opções principais para instalar o Azure PowerShell: Galeria do PowerShell ou WebPI (Web Platform Installer). O WebPI recebe atualizações mensais. A Galeria do PowerShell recebe atualizações continuamente. Este artigo é baseado no Azure PowerShell versão 2.1.0.

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

Passo 3: Certifique-se de que é um administrador da subscrição

Para executar essa migração, você deve ser adicionado como coadministrador da assinatura no portal do Azure.

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

Se você não conseguir adicionar um coadministrador, entre em contato com um administrador de serviço ou coadministrador da assinatura para ser adicionado.

Etapa 4: defina sua assinatura e inscreva-se na migração

Primeiro, inicie um prompt do PowerShell. Para migração, configure seu ambiente para o Gerenciador clássico e de recursos.

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

    Connect-AzAccount

Obtenha as assinaturas disponíveis usando o seguinte comando:

    Get-AzSubscription | Sort Name | Select Name

Defina sua assinatura do Azure para a sessão atual. Este exemplo define o nome da assinatura padrão como Minha Assinatura do Azure. Substitua o nome da assinatura de exemplo pelo seu.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Nota

O registro é uma etapa única, mas você deve fazê-lo uma vez antes de tentar a migração. Sem se registrar, você verá a seguinte mensagem de erro:

BadRequest : A assinatura não está registrada para migração.

Registre-se com o provedor de recursos de migração usando o seguinte comando:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

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

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

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

Antes de mudar para o modelo de implantação clássico, verifique se você tem vCPUs de máquina virtual suficientes do Azure Resource Manager na região do Azure de sua implantação atual ou rede virtual. Você pode usar o seguinte comando do PowerShell para verificar o número atual de vCPUs que você tem no Gerenciador de Recursos do Azure. Para saber mais sobre cotas de vCPU, consulte Limites e o Gerenciador de Recursos do Azure.

Este exemplo verifica a disponibilidade na região Oeste dos EUA . Substitua o nome da região de exemplo pelo seu.

    Get-AzVMUsage -Location "West US"

Agora, entre na sua conta para obter o modelo de implantação clássico.

    Add-AzureAccount

Obtenha as assinaturas disponíveis usando o seguinte comando:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Defina sua assinatura do Azure para a sessão atual. Este exemplo define a assinatura padrão como Minha Assinatura do Azure. Substitua o nome da assinatura de exemplo pelo seu.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Etapa 5: Executar comandos para migrar seus recursos IaaS

Nota

Todas as operações aqui descritas são idempotentes. Se você tiver um problema diferente de um recurso sem suporte ou um erro de configuração, recomendamos que tente novamente a operação de preparação, anulação ou confirmação. Em seguida, a plataforma tenta a ação novamente.

Etapa 5a: Opção 1 - Migrar máquinas virtuais em um serviço de nuvem (não em uma rede virtual)

Obtenha a lista de serviços de nuvem usando o comando a seguir. Em seguida, escolha o serviço de nuvem que você deseja migrar. Se as VMs no serviço de nuvem estiverem em uma rede virtual ou se tiverem funções Web ou de trabalho, o comando retornará uma mensagem de erro.

    Get-AzureService | ft Servicename

Obtenha o nome da implantação para o serviço de nuvem. Neste exemplo, o nome do serviço é Meu Serviço. Substitua o nome de serviço de exemplo pelo seu próprio nome de serviço.

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

Prepare as máquinas virtuais no serviço de nuvem para migração. Você tem duas opções para escolher.

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

    Primeiro, valide se você pode migrar o serviço de nuvem usando os seguintes comandos:

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

    O comando a seguir exibe todos os avisos e erros que bloqueiam a migração. Se as mensagens de validação não contiverem mensagem de erro de tipo, você poderá passar para a etapa Preparar.

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

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

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

    Primeiro, valide se você pode migrar a rede virtual usando o seguinte comando:

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

    O comando a seguir exibe todos os avisos e erros que bloqueiam a migração. Se as mensagens de validação não contiverem erros, você poderá prosseguir com a seguinte etapa Preparar:

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

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

Este exemplo define o nome da VM como myVM. Substitua o nome de 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 usando o PowerShell ou o portal do Azure. Se você não estiver pronto para a migração e quiser voltar ao estado antigo, use o seguinte comando:

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

Se a configuração preparada parecer boa, você pode avançar e confirmar os recursos usando o seguinte comando:

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

Etapa 5a: Opção 2 - Migrar máquinas virtuais em uma rede virtual

Para migrar máquinas virtuais em uma rede virtual, migre a rede virtual. As máquinas virtuais migram automaticamente com a rede virtual. Escolha a rede virtual que deseja migrar.

Nota

Migre uma única máquina virtual criada usando o modelo de implantação clássico criando uma nova máquina virtual do Resource Manager com Managed Disks usando os arquivos 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 exibe 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 usando o comando Get-AzureVnetSite | Select -Property Name ou visualize-o no antigo portal do Azure.

Este exemplo a seguir define o nome da rede virtual como Group [resource-group-name] [vnet-name]. Substitua o nome de rede virtual de exemplo por um que foi retornado da execução do comando na seçã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 sem suporte, você receberá uma mensagem de erro de validação.

Primeiro, valide se você pode migrar a rede virtual usando o seguinte comando:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

O comando a seguir exibe todos os avisos e erros que bloqueiam a migração. Se a validação for bem-sucedida, você poderá prosseguir com a seguinte etapa Preparar:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

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

    Move-AzureVirtualNetwork -Abort -VirtualNetworkName $vnetName

Se a configuração preparada parecer boa, você pode avançar e confirmar os recursos usando o seguinte comando:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Etapa 5b: Migrar uma conta de armazenamento

Depois de concluir a migração das máquinas virtuais, execute as seguintes verificações de pré-requisitos antes de migrar as contas de armazenamento.

Nota

Se sua conta de armazenamento não tiver discos ou dados de VM associados, você poderá pular diretamente para a seção "Validar contas de armazenamento e iniciar a migração". Observe também que excluir os discos clássicos, imagens de VM ou imagens do sistema operacional não remove os arquivos VHD de origem na conta de armazenamento. No entanto, ele quebra a concessão desses arquivos VHD para que eles possam ser reutilizados para criar discos ARM ou imagens após a migração.

  • Os pré-requisitos verificam se você migrou alguma VM ou se sua conta de armazenamento tem recursos de disco:

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

      O comando a seguir retorna as propriedades RoleName e DiskName de todos os discos VM na conta de armazenamento. RoleName é o nome da máquina virtual à qual um disco está conectado. Se esse comando retornar discos, verifique se as máquinas virtuais às quais esses discos estão conectados 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
      
      
    • Exclua discos VM não anexados armazenados na conta de armazenamento.

      Localize discos VM não anexados na conta de armazenamento usando 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 retornar discos, exclua esses discos usando o seguinte comando:

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

      O comando a seguir retorna todas as imagens da VM com discos do sistema operacional 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 a seguir retorna 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
      

      Exclua todas as imagens de VM retornadas pelos comandos anteriores usando este comando:

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

    Valide cada conta de armazenamento para migração usando o comando a seguir. 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
    

    A próxima etapa é preparar a conta de armazenamento para migração.

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

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

        Move-AzureStorageAccount -Abort -StorageAccountName $storageAccountName
    

    Se a configuração preparada parecer boa, você pode avançar e confirmar os recursos usando o seguinte comando:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Próximos passos