Перенос ресурсов IaaS из классической модели в модель Azure Resource Manager с помощью Azure PowerShellMigrate IaaS resources from classic to Azure Resource Manager by using Azure PowerShell

Ниже последовательно описано, как использовать команды Azure PowerShell для переноса ресурсов IaaS из классической модели развертывания в модель развертывания с помощью 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.

Если требуется, можно также перенести ресурсы с помощью интерфейса командной строки Azure (Azure CLI).If you want, you can also migrate resources by using the Azure Command Line Interface (Azure CLI).


Ниже приведена блок-схема с последовательностью действий во время переноса.Here is a flowchart to identify the order in which steps need to be executed during a migration process

Screenshot that shows the migration steps

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Шаг 1. Планирование миграцииStep 1: Plan for migration

Ниже приведено несколько рекомендаций для оценки переноса ресурсов IaaS из классической модели в модель Resource Manager.Here are a few best practices that we recommend as you evaluate migrating IaaS resources from classic to Resource Manager:

  • Ознакомьтесь с поддерживаемыми и неподдерживаемыми компонентами и конфигурациями.Read through the supported and unsupported features and configurations. Если у вас есть виртуальные машины, которые используют неподдерживаемые конфигурации или компоненты, мы рекомендуем отложить перенос до того момента, пока не будет заявлено об их поддержке.If you have virtual machines that use unsupported configurations or features, we recommend that you wait for the configuration/feature support to be announced. Также вы можете удалить такую функцию или вынести ее за пределы конфигурации, чтобы выполнить перенос.Alternatively, if it suits your needs, remove that feature or move out of that configuration to enable migration.
  • Если у вас есть текущие автоматизированные сценарии, которые развертывают инфраструктуру и приложения, попробуйте создать аналогичную программу установки для миграции с помощью этих сценариев.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. Вы можете также настроить примеры среды с помощью портала Azure.Alternatively, you can set up sample environments by using the Azure portal.

Важно!

В настоящее время не поддерживается перенос шлюзов приложений из классической модели в модель Resource Manager.Application Gateways are not currently supported for migration from classic to Resource Manager. Чтобы перенести классическую виртуальную сеть со шлюзом приложений, удалите этот шлюз перед выполнением операции подготовки для перемещения сети.To migrate a classic virtual network with an Application gateway, remove the gateway before running a Prepare operation to move the network. После завершения переноса повторно подключите шлюз в Azure Resource Manager.After you complete the migration, reconnect the gateway in Azure Resource Manager.

Шлюзы ExpressRoute, подключенные к каналам ExpressRoute в другой подписке, перенести автоматически невозможно.ExpressRoute gateways connecting to ExpressRoute circuits in another subscription cannot be migrated automatically. В таких случаях удалите шлюз ExpressRoute, перенесите виртуальную сеть и создайте шлюз заново.In such cases, remove the ExpressRoute gateway, migrate the virtual network and recreate the gateway. Дополнительные сведения см. в статье Перенос каналов ExpressRoute и связанных виртуальных сетей из классической модели развертывания на модель Resource Manager.Please see Migrate ExpressRoute circuits and associated virtual networks from the classic to the Resource Manager deployment model for more information.

Шаг 2. Установка последней версии Azure PowerShellStep 2: Install the latest version of Azure PowerShell

Существует два основных параметра установки Azure PowerShell: коллекция PowerShell или установщик веб-платформы (WebPI).There are two main options to install Azure PowerShell: PowerShell Gallery or Web Platform Installer (WebPI). Обновления для установщика веб-платформы выпускаются ежемесячно.WebPI receives monthly updates. Обновления для коллекции PowerShell выпускаются на постоянной основе.PowerShell Gallery receives updates on a continuous basis. В этой статье используется Azure PowerShell 2.1.0.This article is based on Azure PowerShell version 2.1.0.

Инструкции по установке см. в статье Установка и настройка Azure PowerShell.For installation instructions, see How to install and configure Azure PowerShell.


Шаг 3. Проверка наличия у вас прав администратора подписки на портале AzureStep 3: Ensure that you are an administrator for the subscription in Azure portal

Чтобы выполнить миграцию, вас нужно добавить как соадминистратора подписки на портале Azure.To perform this migration, you must be added as a co-administrator for the subscription in the Azure portal.

  1. Войдите на портал Azure.Sign into the Azure portal.
  2. В главном меню выберите Подписка.On the Hub menu, select Subscription. Если вы не видите этот пункт, щелкните Все службы.If you don't see it, select All services.
  3. Найдите нужную запись подписки, а затем посмотрите на поле Моя роль.Find the appropriate subscription entry, then look at the MY ROLE field. Для соадминистратора значение должно быть Администратор учетной записи.For a co-administrator, the value should be Account admin.

Если вам не удалась добавить соадминистратора, обратитесь к администратору или соадминистратору служб для подписки, чтобы вас добавили.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.

Шаг 4. Настройка подписки и регистрация для миграцииStep 4: Set your subscription and sign up for migration

Сначала запустите командную строку PowerShell.First, start a PowerShell prompt. Для переноса необходимо настроить среду как для классической модели, так и для модели Resource Manager.For migration, you need to set up your environment for both classic and Resource Manager.

Войдите в учетную запись для модели Resource Manager.Sign in to your account for the Resource Manager model.

    Connect-AzAccount

Получите доступные подписки с помощью следующей команды.Get the available subscriptions by using the following command:

    Get-AzSubscription | Sort Name | Select Name

Задайте подписку Azure для текущего сеанса.Set your Azure subscription for the current session. В этом примере задается имя подписки по умолчанию My Azure Subscription.This example sets the default subscription name to My Azure Subscription. Замените имя подписки в примере своим собственным значением.Replace the example subscription name with your own.

    Select-AzSubscription –SubscriptionName "My Azure Subscription"

Примечание

Регистрация — однократное действие, но, прежде чем выполнять миграцию, вам нужно зарегистрироваться.Registration is a one-time step, but you must do it once before attempting migration. Если вы не зарегистрируетесь, отобразится такое сообщение об ошибке:Without registering, you see the following error message:

Неправильный запрос: Подписка не зарегистрирована для миграции.BadRequest : Subscription is not registered for migration.

Выполните регистрацию в поставщике ресурсов миграции с помощью приведенной ниже команды.Register with the migration resource provider by using the following command:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Подождите пять минут для завершения регистрации.Please wait five minutes for the registration to finish. Состояние утверждения регистрации можно проверить, выполнив следующую команду.You can check the status of the approval by using the following command:

    Get-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

Убедитесь, что RegistrationState имеет значение Registered , прежде чем продолжить.Make sure that RegistrationState is Registered before you proceed.

Теперь войдите в учетную запись для классической модели.Now sign in to your account for the classic model.

    Add-AzureAccount

Получите доступные подписки с помощью следующей команды.Get the available subscriptions by using the following command:

    Get-AzureSubscription | Sort SubscriptionName | Select SubscriptionName

Задайте подписку Azure для текущего сеанса.Set your Azure subscription for the current session. В этом примере задается имя подписки по умолчанию My Azure Subscription.This example sets the default subscription to My Azure Subscription. Замените имя подписки в примере своим собственным значением.Replace the example subscription name with your own.

    Select-AzureSubscription –SubscriptionName "My Azure Subscription"

Шаг 5. Проверка наличия достаточного количества виртуальных ЦП для виртуальных машин Azure Resource Manager в регионе Azure, в котором находится текущее развертывание или виртуальная сетьStep 5: Make sure you have enough Azure Resource Manager Virtual Machine vCPUs in the Azure region of your current deployment or VNET

Чтобы проверить текущее количество виртуальных ЦП в Azure Resource Manager, используйте приведенную ниже команду PowerShell.You can use the following PowerShell command to check the current number of vCPUs you have in Azure Resource Manager. Чтобы узнать больше о квотах на виртуальные ЦП, см. соответствующий раздел статьи Подписка Azure, границы, квоты и ограничения службы.To learn more about vCPU quotas, see Limits and the Azure Resource Manager.

В этом примере проверяется доступность в регионе Западная часть США.This example checks the availability in the West US region. Замените регион в примере своим собственным значением.Replace the example region name with your own.

Get-AzVMUsage -Location "West US"

Шаг 6. Выполнение команд для переноса ресурсов IaaSStep 6: Run commands to migrate your IaaS resources

Примечание

Все операции, описанные здесь, являются идемпотентными.All the operations described here are idempotent. Если вы столкнетесь с какой-либо проблемой, не связанной с неподдерживаемой функцией или ошибкой конфигурации, мы рекомендуем повторить подготовку, прервать или зафиксировать текущую операцию.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. Платформа попытается повторить это действие.The platform then tries the action again.

Шаг 6.1. Вариант 1. Миграция виртуальных машин в облачную службу (не в виртуальную сеть)Step 6.1: Option 1 - Migrate virtual machines in a cloud service (not in a virtual network)

Получите список облачных служб, выполнив следующую команду, а затем выберите облачную службу для переноса.Get the list of cloud services by using the following command, and then pick the cloud service that you want to migrate. Если виртуальные машины в облачной службе размещены в виртуальной сети или им назначены веб-роли или рабочие роли, то команда возвращает сообщение об ошибке.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

Получите имя развертывания для облачной службы.Get the deployment name for the cloud service. В этом примере имя службы — My Service.In this example, the service name is My Service. Замените имя службы в примере своим собственным значением.Replace the example service name with your own service name.

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

Подготовьте к переносу виртуальные машины в облачной службе.Prepare the virtual machines in the cloud service for migration. Возможно два варианта.You have two options to choose from.

  • Вариант 1. Миграция виртуальных машин в виртуальную сеть, созданную платформойOption 1. Migrate the VMs to a platform-created virtual network

    Во-первых, проверьте возможность переноса облачной службы с помощью следующей команды.First, validate if you can migrate the cloud service using the following commands:

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

    Приведенная ниже команда позволяет отобразить все предупреждения и ошибки, которые мешают миграции.The following command displays any warnings and errors that block migration. Если проверка выполнена успешно, то можно переходить к этапу подготовки ниже.If validation is successful, then you can move on to the Prepare step:

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • Вариант 2. Миграция виртуальных машин в существующую виртуальную сеть в модели развертывания с помощью Resource ManagerOption 2. Migrate to an existing virtual network in the Resource Manager deployment model

    В этом примере группе ресурсов присваивается имя myResourceGroup, виртуальной сети — имя myVirtualNetwork, а подсети — имя mySubNet.This example sets the resource group name to myResourceGroup, the virtual network name to myVirtualNetwork and the subnet name to mySubNet. Замените имена в примере именами своих ресурсов.Replace the names in the example with the names of your own resources.

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

    Во-первых, проверьте возможность переноса виртуальной сети с помощью следующей команды.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
    

    Приведенная ниже команда позволяет отобразить все предупреждения и ошибки, которые мешают миграции.The following command displays any warnings and errors that block migration. Если проверка выполнена успешно, то можно переходить к шагу подготовки ниже.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
    

После успешного завершения операции подготовки для одного из перечисленных выше вариантов запросите состояние миграции виртуальных машин.After the Prepare operation succeeds with either of the preceding options, query the migration state of the VMs. Убедитесь, что они находятся в состоянии Prepared .Ensure that they are in the Prepared state.

В этом примере виртуальной машине присваивается имя myVM.This example sets the VM name to myVM. Замените имя в примере именем своей виртуальной машины.Replace the example name with your own VM name.

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

Проверьте конфигурацию для подготовленных ресурсов с помощью PowerShell или портала Azure.Check the configuration for the prepared resources by using either PowerShell or the Azure portal. Если вы не готовы к миграции и хотите вернуть предыдущее состояние, выполните следующую команду.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

Если подготовленная конфигурация вас устраивает, можете продолжить процесс. Выполните следующую команду, чтобы зафиксировать ресурсы.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

Шаг 6.1. Вариант 2. Миграция виртуальных машин в виртуальной сетиStep 6.1: Option 2 - Migrate virtual machines in a virtual network

Для миграции виртуальных машин в виртуальной сети переносится сама виртуальная сеть.To migrate virtual machines in a virtual network, you migrate the virtual network. Виртуальные машины автоматически переносятся вместе с ней.The virtual machines automatically migrate with the virtual network. Выберите виртуальную сеть, в которую будете переносить ресурсы.Pick the virtual network that you want to migrate.

Примечание

Перенесите отдельную классическую виртуальную машину, создав виртуальную машину Resource Manager с управляемыми дисками на основе VHD-файлов (диска ОС и дисков данных) исходной виртуальной машины.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.

Примечание

Имя виртуальной сети может отличаться от приведенного на новом портале.The virtual network name might be different from what is shown in the new Portal. На новом портале Azure отображается имя в формате [vnet-name], но фактическое имя виртуальной сети имеет тип 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]. Перед выполнением миграции найдите фактическое имя виртуальной сети с помощью команды Get-AzureVnetSite | Select -Property Name или просмотрите его на старом портале Azure.Before migrating, lookup the actual virtual network name using the command Get-AzureVnetSite | Select -Property Name or view it in the old Azure Portal.

В этом примере виртуальной сети присваивается имя myVnet.This example sets the virtual network name to myVnet. Замените имя виртуальной сети в примере своим собственным значением.Replace the example virtual network name with your own.

    $vnetName = "myVnet"

Примечание

Если в виртуальной сети есть виртуальные машины, веб-роли или рабочие роли с неподдерживаемыми конфигурациями, то отображается сообщение об ошибке проверки.If the virtual network contains web or worker roles, or VMs with unsupported configurations, you get a validation error message.

Во-первых, проверьте возможность переноса виртуальной сети с помощью следующей команды.First, validate if you can migrate the virtual network by using the following command:

    Move-AzureVirtualNetwork -Validate -VirtualNetworkName $vnetName

Приведенная ниже команда позволяет отобразить все предупреждения и ошибки, которые мешают миграции.The following command displays any warnings and errors that block migration. Если проверка выполнена успешно, то можно переходить к шагу подготовки ниже.If validation is successful, then you can proceed with the following Prepare step:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Проверьте конфигурацию для подготовленных виртуальных машин с помощью Azure PowerShell или портала Azure.Check the configuration for the prepared virtual machines by using either Azure PowerShell or the Azure portal. Если вы не готовы к миграции и хотите вернуть предыдущее состояние, выполните следующую команду.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

Если подготовленная конфигурация вас устраивает, можете продолжить процесс. Выполните следующую команду, чтобы зафиксировать ресурсы.If the prepared configuration looks good, you can move forward and commit the resources by using the following command:

    Move-AzureVirtualNetwork -Commit -VirtualNetworkName $vnetName

Шаг 6.2. Перенос учетной записи храненияStep 6.2 Migrate a storage account

После переноса виртуальных машин рекомендуем выполнить предварительные проверки, прежде чем переносить учетные записи хранения.Once you're done migrating the virtual machines, we recommend you perform the following prerequisite checks before you migrate the storage accounts.

Примечание

Если учетная запись хранения не связана с дисками или данными виртуальных машин, можете сразу перейти к разделу Проверка учетной записи хранения и запуск миграции.If your storage account had no associated disks or VM data, you can skip directly to the Validate Storage Account and Start Migration section.

  • Проведение предварительных проверок, если переносимые виртуальные машины или учетные записи хранения имеют дисковые ресурсыPrerequisite checks if you migrated any VMs or your storage account has Disk resources

    • Перенесите классические виртуальные машины, диски которых хранятся в учетной записи хранения.Migrate classic virtual machines whose disks are stored in the storage account

      Приведенная ниже команда возвращает свойства RoleName и DiskName всех дисков классических виртуальных машин в учетной записи хранения.The following command returns RoleName and DiskName properties of all the classic VM disks in the storage account. RoleName — это имя виртуальной машины, к которой подключен диск.RoleName is the name of the virtual machine to which a disk is attached. Если эта команда вернула сведения о дисках, убедитесь, что виртуальные машины, к которым подключены эти диски, будут перенесены до переноса учетной записи хранения.If this 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
      
      
    • Удалите неподключенные диски классических виртуальных машин, хранящиеся в учетной записи хранения.Delete unattached classic VM disks stored in the storage account

      Чтобы найти неподключенные диски классических виртуальных машин в учетной записи хранения, выполните следующую команду.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  
      
      

      Если приведенная выше команда вернула диски, удалите их, выполнив следующую команду.If above command returns disks then delete these disks using following command:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • Удалите образы виртуальных машин, хранящиеся в учетной записи хранения.Delete VM images stored in the storage account

      Приведенная ниже команда возвращает все образы виртуальных машин, диск ОС которых хранится в учетной записи хранения.The following 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
      

      Приведенная ниже команда возвращает сведения об образах всех виртуальных машин, диски данных которых хранятся в учетной записи хранения.The following 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
      

      Удалите все образы виртуальных машин, возвращенные приведенными выше командами, с помощью этой команды:Delete all the VM images returned by above commands using this command:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • Проверка учетной записи хранения и запуск миграции.Validate Storage Account and Start Migration

    Подготовьте каждую учетную запись хранения к переносу, используя следующую команду.Validate each storage account for migration by using the following command. В этом примере имя учетной записи хранения — myStorageAccount.In this example, the storage account name is myStorageAccount. Замените имя в примере именем своей учетной записи хранения.Replace the example name with the name of your own storage account.

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

    Далее необходимо подготовить учетную запись хранения к миграции.Next step is to prepare the storage account for migration

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

    Проверьте конфигурацию для подготовленной учетной записи хранения с помощью Azure PowerShell или портала Azure.Check the configuration for the prepared storage account by using either Azure PowerShell or the Azure portal. Если вы не готовы к миграции и хотите вернуть предыдущее состояние, выполните следующую команду.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
    

    Если подготовленная конфигурация вас устраивает, можете продолжить процесс. Выполните следующую команду, чтобы зафиксировать ресурсы.If the prepared configuration looks good, you can move forward and commit the resources by using the following command:

        Move-AzureStorageAccount -Commit -StorageAccountName $storageAccountName
    

Следующие шагиNext steps