こんにちは。 Azure サポートチームの高橋です。
本日は一般化済みのイメージ (VHD ファイル) を使用し、リソース マネージャー モデル (ARM) 環境に VM を展開する手順をご紹介します。また、多くのお客様は旧ポータル (ASM) 環境にて既にマイ イメージに一般化された VHD をお持ちであるかと存じますので、その VHD をコピーして ARM 環境の VM にするという一工夫をしてみたいと思います。
ASM 環境からの一般化 VHD の持ち込みの手順は以下のステップ 1 ~ 3 にてご紹介していますが、旧ポータルのイメージではなく、新規に作成した持ち込みの一般化された VHD を使うケースの場合には、手順 4 から読み進めてください。
最初に、クラシック ポータルより作成した一般化済みのイメージ (VHD ファイル) の URL を確認します。
1. 一般化したイメージ (VHD) の URL をクラシック ポータルより確認する
- クラシック ポータル (https://manage.windowsazure.com/) にログインします。
- 左メニューの [仮想マシン] をクリックします。
- 画面上部の [イメージ] をクリックします。
- 当該イメージの名前をクリックします。
- 画面中央の [vhd] メニューの [場所] に記載されています URL をコピーします。
上記の VHD ファイルの URL は、後ほどの手順 3 で使用しますため、パスをお控えくださいますようお願いいたします。
ASM 環境にて作成した VHD ファイル(一般化済み)より ARM 環境に VM の展開をする手順は、大きく分けて以下の 3 つに分けられます。
2. 新ポータルより、リソース グループとストレージ アカウントを作成する
- 新ポータル (https://portal.azure.com/) にログインします。
- 画面左のメニューより、 [リソース グループ] をクリックします。
- [追加] を選択し、リソース グループを作成します。
- 作成したリソースグループを選択し、 [追加] をクリックします。
- [ストレージ アカウント] をクリックします。
- [作成] をクリックし、[リソース グループ] を先ほど作成したリソースグループに指定し、[作成] をクリックします。
- 作成が完了しましたら、ストレージアカウントをクリックし、 [BLOB] をクリックします。
- 画面上部の [コンテナー] をクリックします。名前を [vhds] に設定し、 [作成] をクリックします。
3. AzCopy を使用して、作成したストレージ アカウント内に VHD ファイルを複製する
- Microsoft Azure Storage Tools (https://aka.ms/downloadazcopy) をインストールし、起動します。
- 以下のコマンドを入力し、大元となる ASM 上の VHD ファイルから、ARM での VM 展開に利用する VHD ファイルを複製します。
AzCopy /Source:https://<コピー元 ストレージ アカウント名>.blob.core.windows.net/vhds /Dest:https://<コピー先 ストレージ アカウント名>.blob.core.windows.net/vhds /SourceKey:<コピー元 ストレージ アカウントのアクセスキー> /DestKey:<コピー先 ストレージ アカウントのアクセスキー> /Pattern:<VHD ファイル名>.vhd
※ アクセスキーの参照方法は後述します。
コマンド例) :
AzCopy /Source:https://mystorageclassic0123.blob.core.windows.net/vhds /Dest:https://mystorageresouce0123.blob.core.windows.net/vhds /SourceKey:xxxxxxxxxxxxxxxx== /DestKey:yyyyyyyyyyyyyyyyyyyyyyyy== /Pattern:classic.vhd
VHD ファイルの複製が完了すると、以下のように結果が表示されます。
Finished 1 of total 1 file(s).[2016/06/03 19:10:25] Transfer summary:
-----------------
Total files transferred: 1
Transfer successfully: 1
Transfer skipped: 0
Transfer failed: 0
Elapsed time: 00.00:17:38
- 複製が終わりましたら、新ポータルよりコピー先ストレージアカウント内の [BLOB] をクリックし、[vhds] をクリックします。配下に複製された当該 VHD ファイルがあることを確認します。
アクセクキーに関しましては、新ポータルより確認をすることが可能です。
[/SourceKey] は、コピー元のストレージ アカウントにアクセスするためのキー(パスワードとなる)文字列のことです。今回は、ポータルの [ストレージ アカウント(クラシック)] 内にある、既存の VHD ファイルが格納されているストレージ アカウントをご選択いただき、画面上部の鍵のアイコンをクリックます。プライマリ アクセス キーをご指定下さい。
[/DestKey] は、コピー先のストレージ アカウントにアクセスするためのキー(パスワードとなる)文字列のことです。今回は、ポータルにて、手順 2 で作成したストレージ アカウントを選択いただき、画面上部の鍵のアイコンをクリックします。 [key1] をご指定下さい。
AzCopy の利用方法については、以下のドキュメントもご参考ください。
- AzCopy コマンド ライン ユーティリティを使用してデータを転送する
https://azure.microsoft.com/ja-jp/documentation/articles/storage-use-azcopy/
4. 一般化された VHD ファイルより、仮想マシンを展開する
ARM にて、VHD から仮想マシンの作成を行う場合には Azure PowerShell を用いることが便利です。
以下の Azure PowerShell スクリプトを使用し、 VM を展開します。
# 共通設定$SubscriptionId = "xxxxxxxxxxxxxxxxxxxxxxxxxx" # 使用したいサブスクリプション ID
$ResourceGroupName = "xxx-RG" # 手順 2 で作成したリソース グループ名
$location = "xxxx" # リージョン名(手順 2 で作成したリソース グループのリージョンと同一に設定ください)
$pipName = "test-PIP" # パブリック IP アドレス名
$VnetName = "test-Vnet" # 仮想ネットワーク名
$AddressPrefix = "192.168.3.0/25" # プレフィックス
$SubnetName = "testSubnet" # サブネット名
$subnetPrefix = "192.168.3.0/27" # プレフィックス
$storageAccName = "mystorageresouce0123" # 手順 3 で指定したコピー先のストレージ アカウント名 (VHD が配置されているもの)
$nicname = "testnic" #NIC 名
$osDiskName = "classic" #OS ディスク名
$urlOfCapturedImageVhd = "https://mystorageresouce0123.blob.core.windows.net/vhds/classic.vhd" # 一般化済み VHD ファイルパス
# VM の設定
$VmName1 = "testVM" #仮想マシン名
$VmSize1 = "Standard_A1" #Standard_A1など仮想マシンのサイズ
# ログインおよびサブスクリプションの指定
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId $SubscriptionId
# パブリック IP アドレスの作成
$pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $ResourceGroupName -Location $location -AllocationMethod Static
# サブネットの作成
$subnetconfig = New-AzureRmVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $subnetPrefix
# 仮想ネットワークの作成
$vnet = New-AzureRmVirtualNetwork -Name $VnetName -ResourceGroupName $ResourceGroupName -Location $location -AddressPrefix $AddressPrefix -Subnet $subnetconfig
#NIC の作成
$nic = New-AzureRmNetworkInterface -Name $nicname -ResourceGroupName $ResourceGroupName -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
# 可用性セットを新規作成
$asName = Read-Host -Prompt "Enter a new Availability Set name"
$as = New-AzureRmAvailabilitySet -Name $asName -ResourceGroupName $ResourceGroupName -Location $location -PlatformUpdateDomainCount "5" -PlatformFaultDomainCount "3"
# ユーザー名・パスワードを設定
$cred = Get-Credential
# キャプチャーイメージが保存されたストレージアカウント情報を取得
$storageAcc = Get-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $storageAccName
# 仮想マシンの設定を定義
$vmConfig = New-AzureRmVMConfig -VMName $VmName1 -VMSize $VmSize1
$vm = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $VmName1 -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$osDiskUri = '{0}vhds/{1}{2}.vhd' -f $storageAcc.PrimaryEndpoints.Blob.ToString(), $VmName1.ToLower(), $osDiskName
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $urlOfCapturedImageVhd -Windows
#NIC の追加
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
# 可用性セットに追加
$asRef = New-Object Microsoft.Azure.Management.Compute.Models.SubResource
$asRef.Id = $as.Id
$vm.AvailabilitySetReference = $asRef # To remove VM from Availability Set, set to $nul
# 仮想マシンを作成
New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $location -VM $vm
上記スクリプトでは、可用性セットを新規で作成し、仮想マシンの展開に併せて追加していますが、既存の可用性セット内に仮想マシンを展開する場合には、以下のコマンドを [# 可用性セットを新規作成] の項と入れ替えます。なお、既存の可用性セット内に他の VM がある場合には、 VNet を同一のリソースに設定いただきますようご留意願います。
# 既存の可用性セットの情報を取得$asName = Read-Host -Prompt "Enter a Get Availability Set name"
$as = Get-AzureRmAvailabilitySet -Name $asName -ResourceGroupName $ResourceGroupName
補足いたしますと、上記のスクリプトは、一般化された既存の VHD ファイルを複製し、VM を展開するスクリプトになります。
そのため、複数台 VM を展開される場合にも新しく手動で VHD ファイルをコピーする必要がございません。
ただ、 手順 3 において AzCopy にて複製を行った、既存の一般化済み VHD ファイルはイメージの大本となりますので、削除をしないようにご注意をお願いたします。
Azure PowerShell につきましては、以下のドキュメントをご参考ください。
- Azure PowerShell のインストールおよび構成方法
https://azure.microsoft.com/ja-jp/documentation/articles/powershell-install-configure/
以上が、リソース マネージャー (新ポータル) でのイメージからの VM 展開手法となります。
一度スクリプトを作成していただければ、複製の際には以下のステップを行うことで、
既にご用意をいただいている、クラシックの一般化済みイメージを展開していただけます。
- Azure PowerShell により、VHD 名などのパラメータのみ変更し、実行
- VM 作成後、その他の設定についてはポータルから行う