DevTest Labs とスケジュールを別のリージョンに移動する

DevTest Labs と、それらに関連付けられたスケジュールを別のリージョンに移動できます。 ラボを移動するには、別のリージョンに既存のラボのコピーを作成します。 お使いのラボを移動した際、そのターゲット リージョン内に仮想マシン (VM) がある場合は、お使いのラボのスケジュールを移動できます。

この記事では、次のことについて説明します。

  • ラボの Azure Resource Manager (ARM) テンプレートをエクスポートします。
  • ターゲット リージョンと他のパラメーターを追加または更新して、テンプレートを変更します。
  • テンプレートをデプロイして、ターゲット リージョンで新しいラボを作成します。
  • 新しいラボを構成します。
  • データを新しいラボに移動します。
  • スケジュールをその新しいラボに移動します。
  • ソース リージョンにあるリソースを削除します。

前提条件

  • お使いのアカウントで使用されるサービスと機能が、ターゲット リージョンでサポートされていることを確認してください。

  • プレビュー機能については、お使いのサブスクリプションがターゲット リージョンの許可リストに登録されていることを確認してください。

  • DevTest Labs では、エクスポートされた ARM テンプレートからパスワードを格納したり、公開したりすることはありません。 ユーザーは次のパスワード/シークレットを把握している必要があります。

    • VM
    • 保存されたシークレット
    • プライベート アーティファクト レポジトリの PAT トークン (プライベート リポジトリをラボと共に移動するため)
  • ラボ スケジュールを移動する場合は、コンピューティング VM がそのターゲット リージョン内に存在することを確認してください。

ラボを移動する

次のセクションでは、ARM テンプレートを作成してカスタマイズし、ラボを 1 つのリージョンから別のリージョンに移動する方法について説明します。

そのターゲット リージョン内に VM がある場合は、ラボを移動することなくスケジュールを移動できます。 ラボを移動することなくスケジュールを移動する場合は、「スケジュールを移動する」をご参照ください。

ラボの移動を準備する

ラボを移動する場合は、その移動の準備に必要ないくつかの手順があります。 以下を実行する必要があります。

  • 仮想ネットワークを準備する
  • ラボの ARM テンプレートをエクスポートする
  • テンプレートの変更
  • ラボを移動するためにテンプレートをデプロイする
  • 新しいラボを構成する
  • 新しい VM で、コンピューティング VM の OS ディスクを入れ替える
  • 元のラボををクリーンアップする

仮想ネットワークを準備する

作業を開始するには、Resource Manager テンプレートをエクスポートして変更します。

  1. Azure portal にサインインします。

  2. ターゲット リージョンの下にリソース グループがない場合は、作成します。

  3. Azure 仮想ネットワークを別のリージョンに移動する」の記事内に記載されている手順に従い、その現在の仮想ネットワークをその新しいリージョンおよびリソース グループに移動します。

    元の仮想ネットワークを保持する必要がない場合は、新しい仮想ネットワークを作成することもできます。

ラボの ARM テンプレートをエクスポートする

次に、そのラボを記述する設定が含まれた JSON テンプレートをエクスポートします。

Azure portal を使用してテンプレートをエクスポートするには:

  1. [すべてのリソース] を選択し、ラボのリソース グループを選択します。

  2. [テンプレートのエクスポート] を選択します。

  3. [テンプレートのエクスポート][ダウンロード] を選択します。

  4. ポータルからダウンロードした .zip ファイルを見つけて、選択したフォルダーにそのファイルを解凍します。

    この zip ファイルには、テンプレートとテンプレートをデプロイするためのスクリプトから構成される .json ファイルが含まれています。 この中には、ラボの下にあるすべてのリソース (Shared Image Gallery リソースを除く) が ARM テンプレート形式で含まれています。

テンプレートの変更

ARM テンプレートを新しいリージョンに正しくデプロイするには、テンプレートの一部を変更する必要があります。

Azure portal を使用してテンプレートを更新するには:

  1. Azure Portal で、 [リソースの作成] を選択します。

  2. [Marketplace を検索] で「template deployment」と入力し、Enter キーを押します。

  3. [テンプレートのデプロイ] を選択します。

    [テンプレートのデプロイ] が選択された Azure Marketplace を示すスクリーンショット。

  4. [作成] を選択します

  5. [Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。

  6. [ファイルの読み込み] を選択し、手順に従って、前のセクションでダウンロードした template.json ファイルを読み込みます。

  7. エディターで、template.json ファイルに次の変更を加えます。

    1. 元の location を、デプロイする新しいリージョン (westus2southeastasia など) に置き換えます。リージョンの場所コードを取得するには、「Azure の場所」を参照してください。 リージョンのコードは、スペースを含まないリージョン名です (Central US = centralus)。

      "variables": {},
      "resources": [
        {
          "type": "microsoft.devtestlab/labs",
          "location": "centralus",
      
    2. [ラボの設定] で [1 つのリソース グループ内のすべての仮想マシン] が設定されている場合は、ARM テンプレートでも以下の値を更新します。

      • microsoft.devtestlab/labs リソースの apiVersion2018-10-15-preview に更新します。
      • vmCreationResourceGroupIdproperties セクションに追加します。
      "variables": {},
      "resources": [
        {
          "type": "microsoft.devtestlab/labs",
          "apiVersion": "2018-10-15-preview",
          "name": "[parameters('labs_lj_dtl_rgsettings_name')]",
          "location": "<regionName>",
          "properties": {
            "vmCreationResourceGroupId": "/subscriptions/<subscriptionID>/resourceGroups/<myResourceGroup>",
            "labStorageType": "Premium",
      
    3. "type": "microsoft.devtestlab/labs/users" リソースを見つけます。 そこで、keyVaultldkeyVaultUri のパラメーターを含む secretStore セクション全体を削除します。

      secretStore": {
        "keyVaultUri": "<vaultvalue>"
        "keyVaultld": "<id>"
      }
      
    4. "type": "microsoft.devtestlab/labs/virtualnetworks" リソースを見つけます。 前の手順で新しい仮想ネットワークを作成した場合は、/subnets/[SUBNET_NAME] に実際のサブネット名を追加する必要があります。 その仮想ネットワークを新しいリージョンに移動することを選択した場合は、この手順をスキップする必要があります。

    5. "type": "microsoft.devtestlab/labs/virtualmachines" リソースを見つけます。

      1. "properties" の下に、"password": "RANDOM_PASSWORD" を追加します。

        注意

        新しい VM を作成するには、"password" プロパティが必要です。 後で OS ディスクを元の VM と入れ替える予定なので、ランダムなパスワードを入力しておきます。

      2. 共有 IP 仮想マシンの場合は、"properties.networkInterface" の下にこのスニペットを追加します。

        RDP を使用する Windows VM:

        "networkInterface": {
          "sharedPublicIpAddressConfiguration": {
            "inboundNatRules": [
              {
                "transportProtocol": "tcp",
                "backendPort": 3389
              }
            ]
          }
        }
        

        SSH を使用する Linux VM:

         "networkInterface": {
            "sharedPublicIpAddressConfiguration": {
              "inboundNatRules": [
                {
                  "transportProtocol": "tcp",
                  "backendPort": 22
                }
              ]
            }
          }
        
    6. microsoft.devtestlab/labs/users/secrets リソースの下で、次のパラメーターを "properties" に追加します。 YOUR_STORED_PASSWORD を、ご利用のパスワードに置き換えます。

      重要

      パスワード値には secureString を使用します。

      "value": "YOUR_STORED_PASSWORD"
      
    7. microsoft.devtestlab/labs/artifactsources リソースの下で、次のパラメーターを "properties" に追加します。 YOUR_STORED_PASSWORD を、ご利用のパスワードに置き換えます。 ここでも、パスワード値には secureString を使用します。

      "securityToken": "YOUR_PAT_TOKEN_VALUE"
      
    8. エディターで、テンプレートを保存します。

ラボを移動するためにテンプレートをデプロイする

テンプレートをデプロイして、ターゲット リージョンで新しいラボを作成します。

  1. [カスタム デプロイ] ページにあるすべてのパラメーターを、テンプレートで定義されている対応する値に更新します。

  2. 次の値を入力します。

    名前
    サブスクリプション Azure サブスクリプションを選択します。
    リソース グループ 前のセクションで作成したリソース グループの名前を選択します。
    場所 ラボの場所を選択します。 たとえば [米国中部] です。
    ラボ名 別の名前にする必要があります。
    Vnet ID 移動した (または新規作成した) 仮想ネットワークを指定する必要があります。
  3. [Review + create](レビュー + 作成) を選択します。

  4. [作成] を選択します

  5. 画面の上部にあるベルのアイコン (通知) を選択して、デプロイの状態を確認します。 "デプロイを実行しています" と表示されます。 デプロイが完了するまでお待ちください。

新しいラボを構成する

ARM テンプレートによってほとんどのラボ リソースが新しいリージョンにレプリケートされましたが、いくつかの編集を手動で行う必要があります。

  1. 元のラボに Compute Gallery がある場合は、新しいラボにも追加します。
  2. 移動したラボに、[ユーザーごとの VM 数]、[ラボごとの VM 数]、および [許可される仮想マシン サイズ] のポリシーを追加します。

新しい VM で、コンピューティング VM の OS ディスクを入れ替える

新しいラボの下の VM が古いラボの下の VM と同じ仕様であることに注意してください。 唯一の違いは OS ディスクです。

  1. 新しいリージョンの下に空のディスクを作成します。

    • 新しいラボで、ターゲットとなるコンピューティング VM OS ディスク名を取得します。 コンピューティング VM とそのディスクは、ラボの [仮想マシン] ページの [リソース グループ] で確認できます。

    • AzCopy を使用して、古いディスクの内容を新しいリージョンの新しい (または空の) ディスクにコピーします。 PowerShell コマンドは、Dev Box または Azure Cloud Shell から実行できます。

      AzCopy は、データの移動に推奨されるツールです。 パフォーマンスのために最適化されています。 より迅速な方法では、データが直接コピーされます。その場合、AzCopy では、コンピューターのネットワーク帯域幅を使用しません。 コマンド ラインまたはカスタム スクリプトの一部として AzCopy を使用します。 AzCopy の作業開始に関するページを参照してください。

      # Fill in the source/target disk names and their resource group names
      $sourceDiskName = "SOURCE_DISK"
      $sourceRG = "SOURCE_RG"
      $targetDiskName = "TARGET_DISK"
      $targetRG = "TARGET_RG"
      $targetRegion = "TARGET_LOCATION"
      
      # Create an empty target disk from the source disk
      $sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName
      $targetDiskconfig = New-AzDiskConfig -SkuName $sourceDisk.Sku.Name -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetRegion -OsType $sourceDisk.OsType -CreateOption 'Upload'
      $targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig
      
      # Copy the disk content from source to target
      $sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 1800 -Access 'Read'
      $targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 1800 -Access 'Write'
      azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob
      Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName
      Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName
      

      その後、新しいリージョンの下に新しいディスクが作成されます。

    1. 新しいラボのコンピューティング VM の OS ディスクを新しいディスクに入れ替えます。 方法については、記事「PowerShell を使用して Azure VM で使用される OS ディスクを変更する」を参照してください。

スケジュールを移動する

スケジュールを移動するには、次の 2 つの方法があります。

  • 移動先の VM でスケジュールを手動で再作成する。 この処理には時間がかかり、エラーが発生する可能性があります。 この方法は、スケジュールと VM の数が少ない場合に最も便利です。
  • ARM テンプレートを使用してスケジュールをエクスポートおよび再デプロイする。

ARM テンプレートを使用してスケジュールをエクスポートし、別の Azure リージョンに再デプロイするには、次の手順に従います。

  1. Azure portal にサインインします。

  2. 対象の VM を保有する移動元のリソース グループに移動します。

  3. [Resource Group Overview](リソース グループの概要) ページの [リソース] で、[非表示の型の表示] を選択します。

  4. 型が microsoft.devtestlab/schedules のすべてのリソースを選択します。

  5. [テンプレートのエクスポート] を選択します。

    リソース グループ内の非表示のリソースを示すスクリーンショット。スケジュールが選択されています。

  6. [リソース グループ テンプレートのエクスポート] ページで、[デプロイ] を選択します。

  7. [カスタム デプロイ] ページで [テンプレートの編集] を選択します。

  8. テンプレート コードで、"location": "<old location>" のすべてのインスタンスを "location": "<new location>" に変更し、[保存] を選択します。

  9. [カスタム デプロイ] ページで、ターゲット VM に一致する値を入力します。

    Name
    サブスクリプション Azure サブスクリプションを選択します。
    リソース グループ リソース グループ名を選択します。
    リージョン ラボ スケジュールの場所を選択します。 たとえば [米国中部] です。
    スケジュール名 グローバルに一意の名前にする必要があります。
    VirtualMachine_xxx_externalId ターゲット VM である必要があります。

    カスタムデプロイ ページを示すスクリーンショット。関連する設定の新しい場所の値があります。

    重要

    各スケジュールにはグローバルに一意の名前が必要であるため、新しい場所のスケジュール名は変更する必要があります。

  10. [確認と作成] を選択してデプロイを作成します。

  11. デプロイが完了したら、新しい VM で新しいスケジュールが正しく構成されていることを確認します。

破棄またはクリーンアップ

デプロイ後に最初からやり直す場合は、ターゲット ラボを削除し、この記事の「準備」と「移動」のセクションに示した手順を繰り返します。

変更をコミットして移動を完了するには、元のラボを削除する必要があります。

Azure portal を使用してラボを削除するには:

  1. Azure portal で左側のメニューを展開してサービスのメニューを開き、[DevTest Labs] を選択してラボの一覧を表示します。

  2. 削除するターゲット ラボを見つけて、一覧の右側にある [詳細] ボタン (...) を右クリックします。

  3. [削除] を選択して、確定します。

その元のスケジュールがもう使用されない場合は、クリーンアップすることも選択できます。 元のスケジュール リソース グループ (上記の手順 5 でテンプレートをエクスポートした場所) に移動し、スケジュール リソースを削除します。

次のステップ

この記事では、DevTest Labs をあるリージョンから別のリージョンに移動し、移動元リソースをクリーンアップしました。 リージョン間でのリソースの移動と Azure でのディザスター リカバリーの詳細については、以下を参照してください。