一般化した VHD を Azure にアップロードして新しい VM を作成する
このトピックでは、一般化した非管理ディスクをストレージ アカウントにアップロードし、アップロードしたディスクを使用して新しい VM を作成します。 一般化した VHD イメージでは、Sysprep を使用してすべての個人アカウント情報が削除されています。
ストレージ アカウント内の特殊な VHD から VM を作成する場合は、「Create a VM from a specialized VHD (特殊な VHD からの VM の作成)」を参照してください。
このトピックではストレージ アカウントの使用について説明していますが、代わりに Managed Disks の使用をお勧めします。 マネージド ディスクを使用する新しい VM の準備、アップロード、作成を行う方法の詳しいチュートリアルについては、Azure にアップロードされた一般化した VHD から Managed Disks を使用した新しい VM の作成に関するページをご覧ください。
VM を準備する
一般化した VMD イメージでは、Sysprep を使用してすべての個人アカウント情報が削除されています。 新しい VM を作成するためのイメージとして VHD を使用する場合、以下を行う必要があります。
- Windows VHD の Azure へのアップロードの準備。
- Sysprep を使用した仮想マシンの一般化
Sysprep を使用した Windows 仮想マシンの一般化
このセクションでは、Windows 仮想マシンをイメージとして使用できるように一般化する方法について説明します。 特に重要な点は、Sysprep がすべての個人アカウント情報を削除して、マシンをイメージとして使用できるように準備することです。 Sysprep の詳細については、「How to Use Sysprep: An Introduction (Sysprep の使用方法: 紹介)」を参照してください。
コンピューター上で実行されるサーバー ロールが Sysprep でサポートされていることを確認します。 詳しくは、「 Sysprep Support for Server Roles
重要
初めて VHD を Azure にアップロードする前に Sysprep を実行する場合、Sysprep の実行前に VM の準備ができていることを確認してください。
Windows 仮想マシンへのサインイン
管理者としてコマンド プロンプト ウィンドウを開きます。 ディレクトリを %windir%\system32\sysprep に変更し、
sysprep.exe
を実行します。[システム準備ツール] ダイアログ ボックスで [システムの OOBE (Out-of-Box Experience) に入る] を選択し、 [一般化する] チェック ボックスがオンになっていることを確認します。
[シャットダウン オプション] の [シャットダウン] を選択します。
[OK] をクリックします。
Sysprep は完了時に仮想マシンをシャットダウンします。
重要
Azure に VHD をアップロードするか VM からイメージを作成するまで、VM を再起動しないでください。 誤って VM を再起動した場合は、もう一度 Sysprep を実行して一般化してください。
VHD をアップロードする
VHD を Azure ストレージ アカウントにアップロードします。
Azure にログインする
PowerShell バージョン 1.4 以降がまだインストールされていない場合は、「Azure PowerShell のインストールおよび構成方法」をご覧ください。
Azure PowerShell を開き、Azure アカウントにサインインします。 Azure アカウント資格情報を入力するためのポップアップ ウィンドウが開きます。
Connect-AzAccount
使用可能なサブスクリプションのサブスクリプション ID を取得します。
Get-AzSubscription
このサブスクリプション ID を使用して、適切なサブスクリプションを設定します。
<subscriptionID>
を適切なサブスクリプションの ID と置き換えます。Select-AzSubscription -SubscriptionId "<subscriptionID>"
ストレージ アカウントを取得する
アップロードした VM イメージを格納するには、Azure にストレージ アカウントが必要です。 既存のストレージ アカウントを選択することも、新しいストレージ アカウントを作成することもできます。
使用できるストレージ アカウントを表示するには、次のように入力します。
Get-AzStorageAccount
既存のストレージ アカウントを使用する場合は、「VM イメージのアップロード」セクションに進みます。
ストレージ アカウントを作成する場合は、次の手順に従います。
ストレージ アカウントを作成するリソース グループ名が必要です。 サブスクリプションのすべてのリソース グループを検索するには、次のように入力します。
Get-AzResourceGroup
myResourceGroup という名前のリソース グループを米国西部リージョンで作成するには、次のように入力します。
New-AzResourceGroup -Name myResourceGroup -Location "West US"
New-AzStorageAccount コマンドレットを使用して、このリソース グループに mystorageaccount というストレージ アカウントを作成します。
New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" ` -SkuName "Standard_LRS" -Kind "Storage"
アップロードを開始する
Add-AzVhd コマンドレットを使用して、ストレージ アカウント内のコンテナーにイメージをアップロードします。 この例では、ファイル myVHD.vhd を"C:\Users\Public\Documents\Virtual hard disks\"
から myResourceGroup リソース グループの mystorageaccount というストレージ アカウントにアップロードします。 ファイルは mycontainer というコンテナーに配置され、新しいファイル名は myUploadedVHD.vhd になります。
$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
-LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"
成功した場合、次のような応答を取得します。
MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49
LocalFilePath DestinationUri
------------- --------------
C:\Users\Public\Doc... https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd
このコマンドは、ネットワーク接続や VHD ファイルのサイズによっては、完了に時間がかかることがあります。
新しい仮想マシンを作成する
アップロードした VHD を使用して、新しい VM を作成できます。
VHD の URI の設定
使用する VHD の URI は、 https://mystorageaccount.blob.core.windows.net/mycontainer/MyVhdName.vhd という形式になります。 この例では、myVHD という名前の VHD がストレージ アカウント mystorageaccount のコンテナー mycontainer にあります。
$imageURI = "https://mystorageaccount.blob.core.windows.net/mycontainer/myVhd.vhd"
仮想ネットワークの作成
仮想ネットワークの vNet とサブネットを作成します。
サブネットを作成します。 次の例では、アドレス プレフィックス 10.0.0.0/24 で mySubnet という名前のサブネットをリソース グループ myResourceGroup に作成します。
$rgName = "myResourceGroup" $subnetName = "mySubnet" $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
仮想ネットワークを作成します。 次の例では、アドレス プレフィックス 10.0.0.0/16 で myVnet という名前の仮想ネットワークを場所 West US に作成します。
$location = "WestUS" $vnetName = "myVnet" $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location ` -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
パブリック IP アドレスとネットワーク インターフェイスの作成
仮想ネットワークでの仮想マシンとの通信を有効にするには、 パブリック IP アドレス とネットワーク インターフェイスが必要です。
パブリック IP アドレスを作成します。 この例では、myPip という名前のパブリック IP アドレスを作成します。
$ipName = "myPip" $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location ` -AllocationMethod Dynamic
NIC を作成します。 この例では、myNic という名前の NIC を作成します。
$nicName = "myNic" $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location ` -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
ネットワーク セキュリティ グループと RDP 規則の作成
RDP を使用して VM にログインできるようにするには、ポート 3389 で RDP アクセスを許可するセキュリティ規則が必要です。
この例では、myNsg という名前の NSG を作成します。この NSG には、ポート 3389 経由の RDP トラフィックを許可する myRdpRule という名前の規則が含まれています。 NSG の詳細については、PowerShell を使用した Azure の VM へのポートの開放に関するページを参照してください。
$nsgName = "myNsg"
$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
-Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
-Name $nsgName -SecurityRules $rdpRule
仮想ネットワーク用の変数の作成
変数を作成して、仮想ネットワークの作成を完了します。
$vnet = Get-AzVirtualNetwork -ResourceGroupName $rgName -Name $vnetName
VM の作成
次の PowerShell スクリプトでは、仮想マシンの構成を設定し、アップロードした VM イメージを新しいインストールのソースとして使用する方法を示します。
# Enter a new user name and password to use as the local administrator account
# for remotely accessing the VM.
$cred = Get-Credential
# Name of the storage account where the VHD is located. This example sets the
# storage account name as "myStorageAccount"
$storageAccName = "myStorageAccount"
# Name of the virtual machine. This example sets the VM name as "myVM".
$vmName = "myVM"
# Size of the virtual machine. This example creates "Standard_D2_v2" sized VM.
# See the VM sizes documentation for more information:
# https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/
$vmSize = "Standard_D2_v2"
# Computer name for the VM. This examples sets the computer name as "myComputer".
$computerName = "myComputer"
# Name of the disk that holds the OS. This example sets the
# OS disk name as "myOsDisk"
$osDiskName = "myOsDisk"
# Assign a SKU name. This example sets the SKU name as "Standard_LRS"
# Valid values for -SkuName are: Standard_LRS - locally redundant storage, Standard_ZRS - zone redundant
# storage, Standard_GRS - geo redundant storage, Standard_RAGRS - read access geo redundant storage,
# Premium_LRS - premium locally redundant storage.
$skuName = "Standard_LRS"
# Get the storage account where the uploaded image is stored
$storageAcc = Get-AzStorageAccount -ResourceGroupName $rgName -AccountName $storageAccName
# Set the VM name and size
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $vmSize
#Set the Windows operating system configuration and add the NIC
$vm = Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $computerName `
-Credential $cred -ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzVMNetworkInterface -VM $vm -Id $nic.Id
# Create the OS disk URI
$osDiskUri = '{0}vhds/{1}-{2}.vhd' `
-f $storageAcc.PrimaryEndpoints.Blob.ToString(), $vmName.ToLower(), $osDiskName
# Configure the OS disk to be created from the existing VHD image (-CreateOption fromImage).
$vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri `
-CreateOption fromImage -SourceImageUri $imageURI -Windows
# Create the new VM
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm
VM 作成の確認
完了したら、Azure Portal で [参照]>[仮想マシン] にアクセスするか、次の PowerShell コマンドを使用して、新しく作成された VM を確認します。
$vmList = Get-AzVM -ResourceGroupName $rgName
$vmList.Name
次のステップ
Azure PowerShell で新しい仮想マシンを管理する方法については、 Azure Resource Manager と PowerShell を使用した仮想マシンの管理に関するページをご覧ください。