Azure で一般化された VM のレガシ マネージド イメージを作成する

適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット

重要

この記事では、以前のマネージド イメージ テクノロジについて説明します。 最新のテクノロジについては、Azure Compute Gallery を使用することをお勧めします。 ARM64、トラステッド起動、Confidential VM などのすべての新機能は、Azure Compute Gallery を通してのみサポートされます。  既存のマネージド イメージがある場合は、それをソースとして使用して Azure Compute Gallery イメージを作成できます。  詳細については、「イメージ定義とイメージ バージョンを作成する」を参照してください。

1 つのマネージド イメージは、最大 20 個の同時デプロイをサポートします。 同じマネージド イメージから 20 個を超える VM を同時に作成しようとすると、1 つの VHD におけるストレージ パフォーマンスの制限によって、プロビジョニングのタイムアウトが発生する可能性があります。 20 個を超える VM を同時に作成するには、20 のコンカレント VM デプロイごとに 1 つのレプリカで構成された Azure Compute Gallery (旧称 Shared Image Gallery) イメージを使用します。

マネージド イメージの課金方法については、「Managed Disks の価格」をご覧ください。

前提条件

イメージを作成するには、一般化された VM が必要です。

CLI: VM のレガシ マネージド イメージを作成する

az image create を使用して VM のマネージド イメージを作成します。 次の例では、myVM という名前の VM リソースを使用して myResourceGroup という名前のリソース グループに含まれる myImage という名前のイメージを作成します。

az image create \
   --resource-group myResourceGroup \
   --name myImage --source myVM

Note

このイメージは、ソース VM と同じリソース グループに作成されます。 このイメージから、サブスクリプション内の任意のリソース グループに VM を作成できます。 管理の観点から、VM のリソースとイメージに専用のリソース グループを作成することをお勧めします。

第 2 世代 VM のイメージをキャプチャする場合は、 --hyper-v-generation V2 パラメーターも使用します。 詳細については、「第 2 世代 VM」を参照してください。

イメージをゾーン回復性のあるストレージに格納する場合は、可用性ゾーンをサポートするリージョンにストレージを作成し、--zone-resilient true パラメーターを含める必要があります。

このコマンドからは、VM イメージを記述する JSON が返されます。 後で参照するためにこの出力を保存します。

PowerShell: VM のレガシ マネージド イメージを作成する

VM からイメージを直接作成すると、OS ディスクやすべてのデータ ディスクなど、VM に関連付けられているすべてのディスクが、イメージに確実に含まれます。 この例では、マネージド ディスクを使用する VM から管理対象イメージを作成する方法を示します。

始める前に、Azure PowerShell モジュールの最新バージョンがあることを確認してください。 バージョンを確認するには、PowerShell で Get-Module -ListAvailable Az を実行してください。 アップグレードが必要な場合は、「PowerShellGet を使用した Windows への Azure PowerShell のインストール」を参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount を実行して Azure との接続を作成します。

Note

イメージをゾーン冗長ストレージに格納する場合は、可用性ゾーンをサポートするリージョンにストレージを作成し、イメージの構成に -ZoneResilient パラメーターを含める必要があります (New-AzImageConfig コマンド)。

VM イメージを作成するには、次の手順を実行します。

  1. 変数をいくつか作成します。

     $vmName = "myVM"
     $rgName = "myResourceGroup"
     $location = "EastUS"
     $imageName = "myImage"
    
  2. VM の割り当てが解除されていることを確認します。

     Stop-AzVM -ResourceGroupName $rgName -Name $vmName -Force
    
  3. 仮想マシンの状態を [一般化] に設定します。

    Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized
    
  4. 仮想マシンを取得します。

     $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. イメージの設定を作成します。

     $image = New-AzImageConfig -Location $location -SourceVirtualMachineId $vm.Id 
    
  6. イメージを作成します。

    New-AzImage -Image $image -ImageName $imageName -ResourceGroupName $rgName
    

PowerShell: マネージド ディスクのレガシ マネージド イメージを作成する

OS ディスクのみのイメージを作成する場合は、OS ディスクとしてマネージド ディスクの ID を指定します。

  1. 変数をいくつか作成します。

     $vmName = "myVM"
     $rgName = "myResourceGroup"
     $location = "EastUS"
     $imageName = "myImage"
    
  2. VM を取得します。

    $vm = Get-AzVm -Name $vmName -ResourceGroupName $rgName
    
  3. マネージド ディスクの ID を取得します。

     $diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
    
  4. イメージの設定を作成します。

     $imageConfig = New-AzImageConfig -Location $location
     $imageConfig = Set-AzImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -ManagedDiskId $diskID
    
  5. イメージを作成します。

    New-AzImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
    

PowerShell: スナップショットのレガシ マネージド イメージを作成する

次の手順に従って、一般化された VM のスナップショットから管理対象イメージを作成できます。

  1. 変数をいくつか作成します。

     $rgName = "myResourceGroup"
     $location = "EastUS"
     $snapshotName = "mySnapshot"
     $imageName = "myImage"
    
  2. スナップショットを取得します。

    $snapshot = Get-AzSnapshot -ResourceGroupName $rgName -SnapshotName $snapshotName
    
  3. イメージの設定を作成します。

     $imageConfig = New-AzImageConfig -Location $location
     $imageConfig = Set-AzImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -SnapshotId $snapshot.Id
    
  4. イメージを作成します。

    New-AzImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
    

PowerShell: ストレージ アカウントを使用する VM からレガシ マネージド イメージを作成する

マネージド ディスクを使用しない VM からマネージド イメージを作成するには、ストレージ アカウントで、 https://mystorageaccount.blob.core.windows.net/vhdcontainer/vhdfilename.vhd という形式の OS VHD の URI が必要です。 この例では、VHD は vhdcontainer という名前のコンテナーの mystorageaccount 内にあり、VHD ファイル名は vhdfilename.vhd です。

  1. 変数をいくつか作成します。

    $vmName = "myVM"
    $rgName = "myResourceGroup"
    $location = "EastUS"
    $imageName = "myImage"
    $osVhdUri = "https://mystorageaccount.blob.core.windows.net/vhdcontainer/vhdfilename.vhd"
    
  2. VM を停止するか、VM の割り当てを解除します。

     Stop-AzVM -ResourceGroupName $rgName -Name $vmName -Force
    
  3. VM を一般化としてマークします。

     Set-AzVm -ResourceGroupName $rgName -Name $vmName -Generalized	
    
  4. 一般化した OS VHD を使ってイメージを作成します。

    $imageConfig = New-AzImageConfig -Location $location
    $imageConfig = Set-AzImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $osVhdUri
    $image = New-AzImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
    

CLI: レガシ マネージド イメージから VM を作成する

az vm create で、作成したイメージを使用して VM を作成します。 次の例では、myImage という名前のイメージから myVMDeployed という名前の VM を作成します。

az vm create \
   --resource-group myResourceGroup \
   --name myVMDeployed \
   --image myImage\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

CLI: レガシ マネージド イメージから別のリソース グループに VM を作成する

サブスクリプション内の任意のリソース グループでイメージから VM を作成できます。 イメージとは別のリソース グループに VM を作成するには、イメージに対する完全なリソース ID を指定します。 az image list を実行すると、イメージの一覧が表示されます。 出力は次の例のようになります。

"id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage",
   "location": "westus",
   "name": "myImage",

次の例では、az vm create を実行し、イメージ リソース ID を指定してソース イメージとは別のリソース グループに VM を作成します。

az vm create \
   --resource-group myOtherResourceGroup \
   --name myOtherVMDeployed \
   --image "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage" \
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

ポータル: レガシ マネージド イメージから VM を作成する

  1. Azure portal にアクセスしてマネージド イメージを検索します。 [イメージ] を検索して選択します。
  2. 一覧から使うイメージを選びます。 イメージの [概要] ページが開きます。
  3. メニューから [VM の作成] を選択します。
  4. 仮想マシンの情報を入力します。 ここに入力したユーザー名とパスワードが、仮想マシンへのログインに使用されます。 完了したら、 [OK] を選択します。 既存のリソース グループに新しい VM を作成するか、 [新規作成] を選択して VM を格納する新しいリソース グループを作成することができます。
  5. VM のサイズを選択します。 その他のサイズも表示するには、 [すべて表示] を選択するか、 [Supported disk type (サポートされているディスクの種類)] フィルターを変更します。
  6. [設定] で必要な変更を行い、 [OK] を選択します。
  7. 概要ページでは、イメージ名が [プライベート イメージ] の一覧に表示されます。 [OK] を選択して、仮想マシンのデプロイを開始します。

PowerShell: レガシ マネージド イメージから VM を作成する

PowerShell を使用すると、New-AzVm コマンドレットに対して設定された簡略化されたパラメーターを使用して、イメージから VM を作成できます。 このイメージは、VM を作成する同じリソース グループに存在する必要があります。

New-AzVm の簡易なパラメーター セットでは、イメージから VM を作成するための名前、リソース グループ、およびイメージ名を指定する必要があります。 New-AzVm には、自動的に作成するすべてのリソースの名前として -Name パラメーターの値が使用されます。 この例では、各リソースのより詳細な名前を指定しますが、それらがコマンドレットで自動的に作成されるようにしてください。 また、仮想ネットワークなどのリソースを事前に作成し、そのリソース名をコマンドレットに渡すこともできます。 New-AzVm では、一致する名前の既存のリソースが見つかった場合は、それが使用されます。

次の例では、myImage という名前のイメージから myVMFromImage という名前の VM を (myResourceGroup リソース グループ内に) 作成します。

New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVMfromImage" `
	-ImageName "myImage" `
    -Location "East US" `
    -VirtualNetworkName "myImageVnet" `
    -SubnetName "myImageSubnet" `
    -SecurityGroupName "myImageNSG" `
    -PublicIpAddressName "myImagePIP" 

次のステップ