DevTest Labs とスケジュールを移動する
DevTest Labs と、それらに関連付けられたスケジュールを別のリージョンまたはリソース グループに移動できます。 リソース グループは、Azure Portal を使用して移動できます。 ラボを移動するには、別のリージョンに既存のラボのコピーを作成します。 お使いのラボを移動した際、そのターゲット リージョン内に仮想マシン (VM) がある場合は、お使いのラボのスケジュールを移動できます...
この記事では、次のことについて説明します。
- リソースを別のリソース グループに移動します。
- ラボの Azure Resource Manager (ARM) テンプレートをエクスポートします。
- ターゲット リージョンと他のパラメーターを追加または更新して、テンプレートを変更します。
- テンプレートをデプロイして、ターゲット リージョンで新しいラボを作成します。
- 新しいラボを構成します。
- データを新しいラボに移動します。
- スケジュールをその新しいラボに移動します。
- ソース リージョンにあるリソースを削除します。
前提条件
お使いのアカウントで使用されるサービスと機能が、ターゲット リージョンでサポートされていることを確認してください。
プレビュー機能については、お使いのサブスクリプションがターゲット リージョンの許可リストに登録されていることを確認してください。
DevTest Labs では、エクスポートされた ARM テンプレートからパスワードを格納したり、公開したりすることはありません。 ユーザーは次のパスワード/シークレットを把握している必要があります。
- VM
- 保存されたシークレット
- プライベート アーティファクト レポジトリの PAT トークン (プライベート リポジトリをラボと共に移動するため)
ラボ スケジュールを移動する場合は、コンピューティング VM がそのターゲット リージョン内に存在することを確認してください。
ラボを移動する
次のセクションでは、リソースを別のリソース グループに移動し、ARM テンプレートを作成してカスタマイズして、ラボをあるリージョンから別のリージョンに移動する方法について説明します。
そのターゲット リージョン内に VM がある場合は、ラボを移動することなくスケジュールを移動できます。 ラボを移動することなくスケジュールを移動する場合は、「スケジュールを移動する」をご参照ください。
Azure Portal を使用してリソース グループを移動する
異なる場所にあるリソース グループ間でのリソースの移動が、DevTest Labs でシームレスに有効になりました。 同じサブスクリプション内の 1 つのグループから別のグループに任意のリソースを簡単に転送できます。
まず、移動するリソースを選択します。 リソースの [概要] ページで、現在の [リソース グループ] が上部に表示されます。 リソース グループ名の横に、(move)
という単語がかっこで囲まれて表示されます。
ハイパーリンク付きの move
テキストをクリックすると、リソースを同じサブスクリプション内の他のリソース グループに再配置できる新しいページに移動します。 移動先のリソース グループが別の場所にある場合でも、リソースを移動してもその場所は変更されないことに注意してください。 Azure Portal 経由でリソースを移動しない場合、または別のサブスクリプションのリソース グループに転送する場合は、ARM を使用する別の方法の概要を次に示します。
ラボを別のリージョンに移動する
ラボを移動する場合は、その移動の準備に必要ないくつかの手順があります。 以下を実行する必要があります。
- 仮想ネットワークを準備する
- ラボの ARM テンプレートをエクスポートする
- テンプレートの変更
- ラボを移動するためにテンプレートをデプロイする
- 新しいラボを構成する
- 新しい VM で、コンピューティング VM の OS ディスクを入れ替える
- 元のラボををクリーンアップする
仮想ネットワークを準備する
作業を開始するには、Resource Manager テンプレートをエクスポートして変更します。
Azure portal にサインインします。
ターゲット リージョンの下にリソース グループがない場合は、作成します。
「Azure 仮想ネットワークを別のリージョンに移動する」の記事内に記載されている手順に従い、その現在の仮想ネットワークをその新しいリージョンおよびリソース グループに移動します。
元の仮想ネットワークを保持する必要がない場合は、新しい仮想ネットワークを作成することもできます。
ラボの ARM テンプレートをエクスポートする
次に、そのラボを記述する設定が含まれた JSON テンプレートをエクスポートします。
Azure portal を使用してテンプレートをエクスポートするには:
[すべてのリソース] を選択し、ラボのリソース グループを選択します。
[テンプレートのエクスポート] を選択します。
[テンプレートのエクスポート] で [ダウンロード] を選択します。
ポータルからダウンロードした .zip ファイルを見つけて、選択したフォルダーにそのファイルを解凍します。
この zip ファイルには、テンプレートとテンプレートをデプロイするためのスクリプトから構成される .json ファイルが含まれています。 この中には、ラボの下にあるすべてのリソース (Shared Image Gallery リソースを除く) が ARM テンプレート形式で含まれています。
テンプレートの変更
ARM テンプレートを新しいリージョンに正しくデプロイするには、テンプレートの一部を変更する必要があります。
Azure portal を使用してテンプレートを更新するには:
Azure Portal で、 [リソースの作成] を選択します。
[Marketplace を検索] で「template deployment」と入力し、Enter キーを押します。
[テンプレートのデプロイ] を選択します。
[作成] を選択します
[Build your own template in the editor] (エディターで独自のテンプレートをビルド) を選択します。
[ファイルの読み込み] を選択し、手順に従って、前のセクションでダウンロードした template.json ファイルを読み込みます。
エディターで、template.json ファイルに次の変更を加えます。
元の
location
を、デプロイする新しいリージョン (westus2
、southeastasia
など) に置き換えます。リージョンの場所コードを取得するには、「Azure の場所」を参照してください。 リージョンのコードは、スペースを含まないリージョン名です (Central US =centralus
)。"variables": {}, "resources": [ { "type": "microsoft.devtestlab/labs", "location": "centralus",
[ラボの設定] で [1 つのリソース グループ内のすべての仮想マシン] が設定されている場合は、ARM テンプレートでも以下の値を更新します。
microsoft.devtestlab/labs
リソースのapiVersion
を2018-10-15-preview
に更新します。vmCreationResourceGroupId
をproperties
セクションに追加します。
"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",
"type": "microsoft.devtestlab/labs/users"
リソースを見つけます。 そこで、keyVaultld
とkeyVaultUri
のパラメーターを含むsecretStore
セクション全体を削除します。secretStore": { "keyVaultUri": "<vaultvalue>" "keyVaultld": "<id>" }
"type": "microsoft.devtestlab/labs/virtualnetworks"
リソースを見つけます。 前の手順で新しい仮想ネットワークを作成した場合は、/subnets/[SUBNET_NAME]
に実際のサブネット名を追加する必要があります。 その仮想ネットワークを新しいリージョンに移動することを選択した場合は、この手順をスキップする必要があります。"type": "microsoft.devtestlab/labs/virtualmachines"
リソースを見つけます。"properties" の下に、
"password": "RANDOM_PASSWORD"
を追加します。注意
新しい VM を作成するには、"password" プロパティが必要です。 後で OS ディスクを元の VM と入れ替える予定なので、ランダムなパスワードを入力しておきます。
共有 IP 仮想マシンの場合は、"properties.networkInterface" の下にこのスニペットを追加します。
RDP を使用する Windows VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 3389 } ] } }
SSH を使用する Linux VM:
"networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 22 } ] } }
microsoft.devtestlab/labs/users/secrets
リソースの下で、次のパラメーターを "properties" に追加します。YOUR_STORED_PASSWORD
を、ご利用のパスワードに置き換えます。重要
パスワード値には secureString を使用します。
"value": "YOUR_STORED_PASSWORD"
microsoft.devtestlab/labs/artifactsources
リソースの下で、次のパラメーターを "properties" に追加します。YOUR_STORED_PASSWORD
を、ご利用のパスワードに置き換えます。 ここでも、パスワード値には secureString を使用します。"securityToken": "YOUR_PAT_TOKEN_VALUE"
エディターで、テンプレートを保存します。
ラボを移動するためにテンプレートをデプロイする
テンプレートをデプロイして、ターゲット リージョンで新しいラボを作成します。
[カスタム デプロイ] ページにあるすべてのパラメーターを、テンプレートで定義されている対応する値に更新します。
次の値を入力します。
名前 値 サブスクリプション Azure サブスクリプションを選択します。 リソース グループ 前のセクションで作成したリソース グループの名前を選択します。 場所 ラボの場所を選択します。 たとえば [米国中部] です。 ラボ名 別の名前にする必要があります。 Vnet ID 移動した (または新規作成した) 仮想ネットワークを指定する必要があります。 [Review + create](レビュー + 作成) を選択します。
[作成] を選択します
画面の上部にあるベルのアイコン (通知) を選択して、デプロイの状態を確認します。 "デプロイを実行しています" と表示されます。 デプロイが完了するまでお待ちください。
新しいラボを構成する
ARM テンプレートによってほとんどのラボ リソースが新しいリージョンにレプリケートされましたが、いくつかの編集を手動で行う必要があります。
- 元のラボに Compute Gallery がある場合は、新しいラボにも追加します。
- 移動したラボに、[ユーザーごとの VM 数]、[ラボごとの VM 数]、および [許可される仮想マシン サイズ] のポリシーを追加します。
新しい VM で、コンピューティング VM の OS ディスクを入れ替える
新しいラボの下の VM が古いラボの下の VM と同じ仕様であることに注意してください。 唯一の違いは OS ディスクです。
新しいリージョンの下に空のディスクを作成します。
新しいラボで、ターゲットとなるコンピューティング 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
その後、新しいリージョンの下に新しいディスクが作成されます。
- 新しいラボのコンピューティング VM の OS ディスクを新しいディスクに入れ替えます。 方法については、記事「PowerShell を使用して Azure VM で使用される OS ディスクを変更する」を参照してください。
スケジュールを移動する
スケジュールを移動するには、次の 2 つの方法があります。
- 移動先の VM でスケジュールを手動で再作成する。 この処理には時間がかかり、エラーが発生する可能性があります。 この方法は、スケジュールと VM の数が少ない場合に最も便利です。
- ARM テンプレートを使用してスケジュールをエクスポートおよび再デプロイする。
ARM テンプレートを使用してスケジュールをエクスポートし、別の Azure リージョンに再デプロイするには、次の手順に従います。
Azure portal にサインインします。
対象の VM を保有する移動元のリソース グループに移動します。
[Resource Group Overview](リソース グループの概要) ページの [リソース] で、[非表示の型の表示] を選択します。
型が microsoft.devtestlab/schedules のすべてのリソースを選択します。
[テンプレートのエクスポート] を選択します。
[リソース グループ テンプレートのエクスポート] ページで、[デプロイ] を選択します。
[カスタム デプロイ] ページで [テンプレートの編集] を選択します。
テンプレート コードで、
"location": "<old location>"
のすべてのインスタンスを"location": "<new location>"
に変更し、[保存] を選択します。[カスタム デプロイ] ページで、ターゲット VM に一致する値を入力します。
Name 値 サブスクリプション Azure サブスクリプションを選択します。 リソース グループ リソース グループ名を選択します。 リージョン ラボ スケジュールの場所を選択します。 たとえば [米国中部] です。 スケジュール名 グローバルに一意の名前にする必要があります。 VirtualMachine_xxx_externalId ターゲット VM である必要があります。 重要
各スケジュールにはグローバルに一意の名前が必要であるため、新しい場所のスケジュール名は変更する必要があります。
[確認と作成] を選択してデプロイを作成します。
デプロイが完了したら、新しい VM で新しいスケジュールが正しく構成されていることを確認します。
破棄またはクリーンアップ
デプロイ後に最初からやり直す場合は、ターゲット ラボを削除し、この記事の「準備」と「移動」のセクションに示した手順を繰り返します。
変更をコミットして移動を完了するには、元のラボを削除する必要があります。
Azure portal を使用してラボを削除するには:
Azure portal で左側のメニューを展開してサービスのメニューを開き、[DevTest Labs] を選択してラボの一覧を表示します。
削除するターゲット ラボを見つけて、一覧の右側にある [詳細] ボタン (...) を右クリックします。
[削除] を選択して、確定します。
その元のスケジュールがもう使用されない場合は、クリーンアップすることも選択できます。 元のスケジュール リソース グループ (上記の手順 5 でテンプレートをエクスポートした場所) に移動し、スケジュール リソースを削除します。
次のステップ
この記事では、DevTest Labs をあるリージョンから別のリージョンに移動し、移動元リソースをクリーンアップしました。 リージョン間でのリソースの移動と Azure でのディザスター リカバリーの詳細については、以下を参照してください。