PowerShell を使用してクラシックから Azure Resource Manager へ IaaS リソースを移行するMigrate IaaS resources from classic to Azure Resource Manager by using 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 CLI を使用してリソースを移行することもできます。If you want, you can also migrate resources by using the Azure CLI.


移行プロセス中に実行する必要のある手順を順番に示すフローチャートを以下に示します。Here's a flowchart to identify the order in which steps need to be executed during a migration process.

Screenshot that shows the migration steps

手順 1:移行の計画Step 1: Plan for migration

ここでは、クラシックから Resource Manager へ IaaS リソースを移行すべきかを判断するために活用できるベスト プラクティスをいくつか紹介します。Here are a few best practices that we recommend as you evaluate whether to migrate 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, wait for the configuration or 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.

重要

現在、Application Gateway は、クラシックから Resource Manager への移行には対応していません。Application gateways aren't currently supported for migration from classic to Resource Manager. Application Gateway が設定された仮想ネットワークを移行するには、準備操作を実行してネットワークを移動する前に、まずそのゲートウェイを削除する必要があります。To migrate a virtual network with an application gateway, remove the gateway before you run a Prepare operation to move the network. 移行が完了した後、Azure Resource Manager でゲートウェイに再接続します。After you complete the migration, reconnect the gateway in Azure Resource Manager.

別のサブスクリプションの ExpressRoute 回線に接続する Azure ExpressRoute ゲートウェイは自動移行できません。Azure ExpressRoute gateways that connect to ExpressRoute circuits in another subscription can't be migrated automatically. そのような場合は、ExpressRoute ゲートウェイを削除し、仮想ネットワークを移行してゲートウェイを再作成します。In such cases, remove the ExpressRoute gateway, migrate the virtual network, and re-create the gateway. 詳細については、クラシック デプロイ モデルから Resource Manager デプロイ モデルへの ExpressRoute 回線および関連する仮想ネットワークの移行に関するページを参照してください。For more information, see Migrate ExpressRoute circuits and associated virtual networks from the classic to the Resource Manager deployment model.

手順 2:最新バージョンの PowerShell をインストールするStep 2: Install the latest version of PowerShell

Azure PowerShell をインストールするための主なオプションは 2 つあります:PowerShell ギャラリーまたは Web Platform Installer (WebPI)There are two main options to install Azure PowerShell: PowerShell Gallery or Web Platform Installer (WebPI). 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:サブスクリプションの管理者であることを確認するStep 3: Ensure that you're an administrator for the subscription

この移行を実行するには、Azure portal で自分をサブスクリプションの共同管理者として追加する必要があります。To perform this migration, you must be added as a coadministrator for the subscription in the Azure portal.

  1. Azure Portal にサインインします。Sign in to 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, and then look at the MY ROLE field. 共同管理者の場合、この値は [アカウント管理者] です。For a coadministrator, the value should be Account admin.

共同管理者を追加できない場合は、サービス管理者またはサブスクリプションの共同管理者に連絡して、追加してもらってください。If you're not able to add a coadministrator, contact a service administrator or coadministrator 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, 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"

注意

登録は 1 回限りの手順ですが、移行を試みる前に実行する必要があります。Registration is a one-time step, but you must do it once before you attempt migration. 登録を行わないと、次のエラー メッセージが表示されます。Without registering, you see the following error message:

BadRequest: 移行の対象サブスクリプションが登録されていません。BadRequest : Subscription is not registered for migration.

次のコマンドを使用して、移行リソース プロバイダーに登録します。Register with the migration resource provider by using the following command:

    Register-AzResourceProvider -ProviderNamespace Microsoft.ClassicInfrastructureMigrate

登録が完了するまで 5 分間お待ちください。Wait five minutes for the registration to finish. 承認の状態は、次のコマンドで確認できます。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 deployment 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:十分な数の Resource Manager VM vCPU を準備するStep 5: Have enough Resource Manager VM vCPUs

現在のデプロイまたは仮想ネットワークの Azure リージョンで Azure Resource Manager 仮想マシンの vCPU 数が十分にあることを確認します。Make sure that you have enough Azure Resource Manager virtual machine vCPUs in the Azure region of your current deployment or virtual network. Azure Resource Manager での現在の vCPU 数は、次の PowerShell コマンドを使用して確認できます。You can use the following PowerShell command to check the current number of vCPUs you have in Azure Resource Manager. vCPU クォータの詳細については、「制限と Azure Resource Manager」を参照してください。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:IaaS リソースを移行するコマンドを実行するStep 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. 移行するクラウド サービスを選択します。Then pick the cloud service that you want to migrate. クラウド サービスの VM が仮想ネットワーク内にある場合、または Web ロールか worker ロールを持つ場合は、コマンドではエラー メッセージが返されます。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. 2 つのオプションから選択できます。You have two options to choose from.

  • オプション 1:プラットフォームで作成した仮想ネットワークに VM を移行する。Option 1: Migrate the VMs to a platform-created virtual network.

    最初に、次のコマンドを使用して、クラウド サービスを移行できるかどうかを検証します。First, validate that you can migrate the cloud service by 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. 検証が成功した場合は、Prepare の手順に進むことができます。If validation is successful, you can move on to the Prepare step.

    Move-AzureService -Prepare -ServiceName $serviceName `
        -DeploymentName $deploymentName -CreateNewVirtualNetwork
    
  • オプション 2:Resource Manager デプロイ モデルの既存の仮想ネットワークに移行する。Option 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 that you can migrate the virtual network by 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. 検証が成功した場合は、次の Prepare の手順に進むことができます。If validation is successful, you can proceed with the following Prepare step:

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

上記のいずれかのオプションで Prepare 操作が完了したら、VM の移行状態を照会します。After the Prepare operation succeeds with either of the preceding options, query the migration state of the VMs. VM の状態が Prepared であることを確認してください。Ensure that they're in the Prepared state.

この例では、VM 名を myVM に設定します。This example sets the VM name to myVM. 例の名前を対象の VM の名前に置き換えてください。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're 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.

注意

クラシック デプロイ モデルを使用して作成された単一の仮想マシンを移行するには、仮想マシンの VHD (OS とデータ) ファイルを使用して Managed Disks を備えた新しい Resource Manager 仮想マシンを作成します。Migrate a single virtual machine created using the classic deployment model by creating a new Resource Manager virtual machine with Managed Disks by 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 portal には、[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 portal で確認します。Before you start the migration, look up the actual virtual network name by 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"

注意

仮想ネットワークに Web ロールか worker ロールが含まれる場合、またはサポートされない構成の VM が含まれる場合は、検証エラー メッセージが返されます。If the virtual network contains web or worker roles, or VMs with unsupported configurations, you get a validation error message.

最初に、次のコマンドを使用して、仮想ネットワークを移行できるかどうかを検証します。First, validate that 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. 検証が成功した場合は、次の Prepare の手順に進むことができます。If validation is successful, you can proceed with the following Prepare step:

    Move-AzureVirtualNetwork -Prepare -VirtualNetworkName $vnetName

Azure PowerShell または Azure Portal のどちらかを使用して、準備した仮想マシンの構成を確認します。Check the configuration for the prepared virtual machines by using either Azure PowerShell or the Azure portal. 移行の準備ができていない場合に以前の状態に戻すには、次のコマンドを使用します。If you're 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

仮想マシンの移行が完了したら、ストレージ アカウントを移行する前に、次の前提条件チェックを行います。After you're done migrating the virtual machines, perform the following prerequisite checks before you migrate the storage accounts.

注意

ストレージ アカウントに関連付けられたディスクまたは VM データがない場合は、「ストレージ アカウントを検証して移行を開始する」セクションに進むことができます。If your storage account has no associated disks or VM data, you can skip directly to the "Validate storage accounts and start migration" section.

  • VM を移行したか、ストレージ アカウントにディスク リソースがあるかどうかの前提条件のチェック:Prerequisite checks if you migrated any VMs or your storage account has disk resources:

    • ディスクがストレージ アカウントに格納されている仮想マシンを移行する。Migrate virtual machines whose disks are stored in the storage account.

      次のコマンドは、ストレージ アカウント内のすべての VM ディスクの RoleName および DiskName プロパティを返します。The following command returns RoleName and DiskName properties of all the 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 you migrate the storage account.

       $storageAccountName = 'yourStorageAccountName'
        Get-AzureDisk | where-Object {$_.MediaLink.Host.Contains($storageAccountName)} | Select-Object -ExpandProperty AttachedTo -Property `
        DiskName | Format-List -Property RoleName, DiskName
      
      
    • ストレージ アカウントに格納されている、接続されていない VM ディスクを削除する。Delete unattached VM disks stored in the storage account.

      次のコマンドを使用して、ストレージ アカウントの接続されていない VM ディスクを探します。Find unattached VM disks in the storage account by using the following command:

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

      上記のコマンドでディスクが返された場合、次のコマンドを使用してこれらのディスクを削除します。If the previous command returns disks, delete these disks by using the following command:

         Remove-AzureDisk -DiskName 'yourDiskName'
      
    • ストレージ アカウントに格納されている VM イメージを削除する。Delete VM images stored in the storage account.

      次のコマンドは、ストレージ アカウントに格納されたすべての VM イメージと OS ディスクを返します。The following command returns all the VM images with OS disks stored in the storage account.

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

      次のコマンドは、ストレージ アカウントに格納されたすべての VM イメージとデータ ディスクを返します。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
      

      次のコマンドを使用して、上記のコマンドによって返されるすべての VM イメージを削除します。Delete all the VM images returned by the previous commands by using this command:

      Remove-AzureVMImage -ImageName 'yourImageName'
      
  • ストレージ アカウントを検証して移行を開始する。Validate storage accounts 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
    

    次の手順で、ストレージ アカウントの移行の準備を行います。The next step is to prepare the storage account for migration.

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

    Azure PowerShell または Azure Portal のどちらかを使用して、準備したストレージ アカウントの構成を確認します。Check the configuration for the prepared storage account by using either Azure PowerShell or the Azure portal. 移行の準備ができていない場合に以前の状態に戻すには、次のコマンドを使用します。If you're 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