Azure コンピューティング ギャラリーは、組織全体でのカスタム イメージ共有を簡略化します。 カスタム イメージは Marketplace のイメージに似ていますが、カスタム イメージは自分で作成します。 イメージは、VM、VHD、スナップショット、マネージド イメージ、別のイメージ バージョンから作成できます。
Azure コンピューティング ギャラリーを使用すると、カスタム VM イメージを組織内、リージョン内、リージョン間、Microsoft Entra テナント内の他のユーザーと共有したり、community ギャラリーをパブリックに使用したりできます。 どのイメージを共有するか、どのリージョンでそのイメージを使用できるようにするか、および、だれと共有するかを選択することができます。 イメージを論理的にグループ化するために、複数のギャラリーを作成できます。 ARM64、高速ネットワーク、TrustedVM などの多くの新機能は、Azure コンピューティング ギャラリー経由でのみサポートされており、マネージド イメージでは使用できません。
Azure コンピューティング ギャラリー機能には、複数のリソースの種類があります。
| リソース |
説明 |
|
イメージのソース |
これは、ギャラリーにイメージ バージョンを作成するために使用できるリソースです。 イメージ ソースには、生成または特殊化、マネージド イメージ、スナップショット、または別のギャラリー内のイメージ バージョンの既存のAzure VM を指定できます。 |
|
[ギャラリー] |
Azure Marketplaceと同様に、gallery は、イメージと VM アプリケーションを管理するためのリポジトリですが、アクセス権を持つユーザーを制御します。 |
|
イメージ定義 |
イメージ定義はギャラリー内に作成され、内部で使用するためにイメージと要件に関する情報を伝達します。 これには、イメージがWindowsか Linux か、リリース ノート、最小メモリ要件と最大メモリ要件が含まれます。 これは、イメージの種類の定義です。 |
|
イメージ バージョン |
イメージ バージョンは、ギャラリーを利用している場合に、VM の作成に使用します。 お使いの環境に必要な複数のイメージ バージョンを保持できます。 マネージド イメージのように、イメージ バージョンを使用して VM を作成する場合、イメージ バージョンは VM 用の新しいディスクを作成するために使用されます。 イメージ バージョンは複数回、使用できます。 |
前提条件
この記事を完了するには、既存の Azure コンピューティング ギャラリーと、Azureで使用できるイメージのソースが必要です。 イメージ ソースは、次のものとすることができます。
- サブスクリプション内の VM。
特殊な VM と一般の VM の両方からイメージをキャプチャできます。
- 管理されたイメージ
- マネージド OS ディスクとデータ ディスク。
- ストレージ アカウント内の VHD としての OS ディスクとデータ ディスク。
- 同じギャラリー内、または同じサブスクリプションの別のギャラリー内の他のイメージ バージョン。
イメージにデータ ディスクが含まれる場合、データ ディスクのサイズは 1 TB を超えることはできません。
イメージ定義名は、大文字または小文字、数字、ドット、ダッシュおよびピリオドで構成できます。 イメージ定義に指定できる値の詳細については、イメージ定義に関するページを参照してください。
イメージ バージョンで許可されている文字は、数字とピリオドです。 数字は、32 ビット整数の範囲内になっている必要があります。 形式:MajorVersion.MinorVersion.Patch。
この記事に沿って作業する際、必要に応じてリソース名を置き換えてください。
一般化されたイメージについては、イメージをキャプチャする前に OS 固有のガイダンスを参照してください。
コミュニティ ギャラリーを使ってイメージを共有する場合は、ギャラリー、イメージ定義、イメージ バージョンを同じリージョンに作成してください。
ユーザーがコミュニティ ギャラリーイメージを検索すると、最新バージョンのイメージのみが表示されます。
重要
イメージの定義に含まれる情報は、たとえば 発行、オファー、SKU に関して提供された情報が、公開されます。
イメージを作成する
イメージ定義とイメージ バージョンを作成するには、次のオプションを選択します。
ポータルで VM からイメージを作成するには、VM のイメージのキャプチャに関するページを参照してください。
VM 以外のソースを使用してイメージを作成するには、次の手順に従います。
Azure ポータルに移動し、Azure コンピューティング ギャラリーを検索して選択します。
一覧から使うギャラリーを選びます。
ギャラリーのページで、ページの上部にある [追加] を選択し、ドロップダウンから [VM image definition](VM イメージ定義) を選択します。
Azure コンピュート ギャラリーに新しいイメージ定義を追加するページの、基本 タブで、リージョンを選択します。
[イメージの定義名] で、「myImageDefinition」などの名前を入力します。
[オペレーティング システム] では、ソースに基づいて適切なオプションを選択します。
[VM の生成] では、ソースに基づいてオプションを選択します。 ほとんどの場合、これは [Gen 1] になります。 詳細については、第 2 世代 VM に対するサポートに関するページを参照してください。
[オペレーティング システムの状態] では、ソースに基づいて適切なオプションを選択します。 詳細については、一般化と特殊化に関するページを参照してください。
Publisherには、myPublisher。
[オファー] に、一意の名前を入力します (myOfferなど)。
[SKU] に、一意の名前を入力します (mySKUなど)。
ページの下部で [確認および作成] を選択します。
イメージ定義の検証に合格した後、 [作成] を選択します。
デプロイが完了したら、 [リソースに移動] を選択します。
イメージ定義のページの [Get started](作業の開始) タブから [Create a version](バージョンの作成) を選択します。
[リージョン] でイメージを作成するリージョンを選択します。 場合によっては、ソースはイメージが作成されるのと同じリージョンに存在する必要があります。 後のドロップダウン リストにソースが表示されない場合は、イメージのリージョンを変更してみてください。 イメージは、後でいつでも他のリージョンにレプリケートできます。
[バージョン番号] には、「1.0.0」のような数値を入力します。 イメージ バージョン名では、整数を使用する major.minor.patch という形式に従う必要があります。
[ソース] で、ソースに使用するファイルの種類をドロップダウンから選択します。 各種類のソースの具体的な詳細については、次の表を参照してください。
| ソース |
その他のフィールド |
| ディスクまたはスナップショット |
- OS ディスクの場合、ドロップダウンからディスクまたはスナップショットを選択します。 - データ ディスクを追加するには、LUN 番号を入力し、ドロップダウンからデータ ディスクを選択します。 |
| イメージ バージョン |
- ドロップダウンからソース ギャラリーを選択します。 - ドロップダウンから正しいイメージ定義を選択します。 - ドロップダウンから、使用する既存のイメージ バージョンを選択します。 |
| マネージド イメージ |
\- ドロップダウンからソース イメージを選択します。 マネージド イメージは、 [インスタンスの詳細] で選択したのと同じリージョンにある必要があります。 |
| ストレージ アカウント内の VHD |
[参照] を選択して、VHD のストレージ アカウントを選択します。 |
[最新から除外] は、既定値の [いいえ] のままにします (ただし、バージョン番号の代わりに latest を使用して VM を作成するときにこのバージョンを使用したくない場合を除きます)。
[有効期限の終了日] で、このバージョンの使用の停止を検討している日付をカレンダーから選択します。
[レプリケーション] タブで、ドロップダウンからストレージの種類を選択します。
[既定のレプリカ数] を設定すると、追加するリージョンごとにこれをオーバーライドできます。
ソース リージョンにレプリケートする必要があります。そのため、一覧の最初のレプリカは、イメージを作成したリージョンになります。 レプリカをさらに追加するには、ドロップダウンからリージョンを選択し、必要に応じてレプリカ数を調整します。
完了したら、 [確認および作成] を選択します。 Azureは構成を検証します。
イメージ バージョンの検証に合格したら、 [作成] を選択します。
デプロイが完了したら、 [リソースに移動] を選択します。
イメージをすべてのターゲット リージョンにレプリケートするにはしばらく時間がかかる場合があります。
ポータルから既存の VM をイメージとしてキャプチャすることもできます。 詳細については、ポータルでの VM のイメージの作成に関するページを参照してください。
Azure CLIを使用してイメージを作成するには、まずイメージ定義を作成する必要があります。 イメージ定義では、イメージの論理グループを作成します。 これは、その中に作成されるイメージ バージョンに関する情報を管理するために使用されます。
az sig image-definition create を使用して、ギャラリー内にイメージ定義を作成します。 イメージ定義の種類が適切であることを確認します。 vm generalized (Linux の場合は waagent -deprovision、Windows の場合は Sysprep を使用) している場合は、--os-state generalized を使用して一般化されたイメージ定義を作成する必要があります。 既存のユーザー アカウントを削除せずに VM を使用する場合は、--os-state specialized を使用して、特殊化されたイメージ定義を作成します。
イメージ定義に指定できるパラメーターの詳細については、イメージ定義に関するページを参照してください。
この例では、イメージ定義は myImageDefinition という名前で、特殊化された Linux OS イメージ用です。 Windows OS を使用してイメージの定義を作成するには、--os-type Windows を使用します。
az sig image-definition create \
--resource-group myGalleryRG \
--gallery-name myGallery \
--gallery-image-definition myImageDefinition \
--publisher myPublisher \
--offer myOffer \
--sku mySKU \
--os-type Linux \
--os-state specialized
注釈
サードパーティの Marketplace イメージに由来するイメージを含むイメージ定義の場合、プラン情報は、サードパーティ イメージのプラン情報と正確に一致している必要があります。 イメージ定義にプラン情報を含めるには、イメージ定義を作成するときに、--plan-name、--plan-product、--plan-publisher を追加します。
イメージ バージョンの作成
az sig image version create を使用してイメージ バージョンを作成します。
イメージを作成するための構文は、ソースとして使用する内容に応じて変わります。 OS ソースが 1 つしかない場合は、ソースの種類を混在させることができます。 また、データ ディスクごとに異なるソースを使用することもできます。
| ソース |
パラメータセット |
|
OS ディスク: |
|
| VM ID を使用する VM |
--managed-image <Resource ID of the VM> |
| マネージド イメージまたは別のイメージバージョン |
--managed-image <Resource ID of the managed image or image version |
| スナップショットまたはマネージド ディスク |
--os-snapshot <Resource ID of the snapshot or managed disk> |
| ストレージ アカウント内の VHD |
--os-vhd-uri <URI> --os-vhd-storage-account <storage account name>。 |
|
データ ディスク: |
|
| スナップショットまたはマネージド ディスク |
--data-snapshots <Resource ID of the snapshot or managed disk> --data-snapshot-luns <LUN number> |
| ストレージ アカウント内の VHD |
--data-vhds-sa <storageaccountname> --data-vhds-uris <URI> --data-vhds-luns <LUN number> |
イメージにさまざまなソースを指定する方法の詳細な例については、az sig image-version create の例を参照してください。
次の例では、VM からイメージを作成します。 イメージのバージョンは 1.0.0 であり、ゾーン冗長ストレージを使用して "米国中西部" リージョンに 2 個のレプリカ、"米国中南部" リージョンに 1 個のレプリカ、および "米国東部 2" リージョンに 1 個のレプリカを作成しています。 レプリケーション リージョンには、ソース VM が配置されているリージョンが含まれている必要があります。
イメージを作成する前に VM を停止 (または割り当て解除) することをお勧めします。
この例の --virtual-machine の値を、VM の ID で置き換えます。
az sig image-version create \
--resource-group myGalleryRG \
--gallery-name myGallery \
--gallery-image-definition myImageDefinition \
--gallery-image-version 1.0.0 \
--target-regions "westcentralus" "southcentralus=1" "eastus=1=standard_zrs" \
--replica-count 2 \
--virtual-machine "/subscriptions/<Subscription ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"
注釈
同じマネージド イメージを使用して別のイメージ バージョンを作成する前に、そのイメージ バージョンが構築とレプリケーションを完全に完了するまで待つ必要があります。
イメージ バージョンを作成するときに、--storage-account-type premium_lrsを追加してイメージを Premium ストレージに格納することや、Zone Redundant Storageに格納するために--storage-account-type standard_zrsを追加することもできます。
PowerShell を使用してイメージを作成するには、まずイメージ定義を作成する必要があります。 イメージ定義では、イメージの論理グループを作成します。 イメージ定義を作成する際は、正しい情報がすべて含まれていることを確認してください。 ソース VM を一般化した場合、-OsState generalized を利用してイメージ定義を作成する必要があります。 ソースを一般化していない場合、-OsState specialized を利用してイメージ定義を作成します。
イメージ定義に指定できる値の詳細については、イメージ定義に関するページを参照してください。
イメージの定義は、New-AzGalleryImageDefinition を使用して作成します。
この例では、イメージ定義の名前は myImageDefinition であり、Windowsを実行する特殊化された VM 用です。 Linux を使用してイメージの定義を作成するには、-OsType Linux を使用します。
$imageDefinition = New-AzGalleryImageDefinition `
-GalleryName $gallery.Name `
-ResourceGroupName $gallery.ResourceGroupName `
-Location $gallery.Location `
-Name 'myImageDefinition' `
-OsState specialized `
-OsType Windows `
-Publisher 'myPublisher' `
-Offer 'myOffer' `
-Sku 'mySKU'
注釈
サードパーティ イメージに由来するイメージを含むイメージ定義の場合、プラン情報は、サードパーティ イメージのプラン情報と正確に一致している必要があります。 イメージ定義にプラン情報を含めるには、イメージ定義を作成するときに、-PurchasePlanName、-PurchasePlanProduct、-PurchasePlanPublisher を追加します。
イメージ バージョンを作成する
New-AzGalleryImageVersion を使用してイメージ バージョンを作成します。
イメージを作成するための構文は、ソースとして使用する内容に応じて変わります。
| ソース |
パラメーター セット |
|
OS ディスク |
|
| VM ID で識別される VM |
-SourceImageId <Resource ID of the VM> |
| マネージド イメージまたは別のイメージバージョン |
-SourceImageId <Resource ID of the managed image or image version |
| スナップショットまたはマネージド ディスク |
-OSDiskImage <Resource ID of the snapshot or managed disk> |
|
データ ディスク |
|
| スナップショットまたはマネージド ディスク |
-DataDiskImage @{Source = @{Id=<source_id>}; Lun=<LUN>; SizeInGB = <Size in GB>; HostCaching = <Caching> } |
次の例では、VM からイメージ バージョンを作成します。
Stop-AzVM を利用し、イメージを作成する前に VM を停止 (または割り当て解除) することをお勧めします。
この例のイメージ バージョンは 1.0.0 で、"米国中西部" と "米国中南部" の両方のデータセンターにレプリケートされます。 レプリケーションのターゲット リージョンを選択するときに、レプリケーションのターゲットとして、"ソース" リージョンも含める必要があることに注意してください。
$region1 = @{Name='South Central US';ReplicaCount=1}
$region2 = @{Name='East US';ReplicaCount=2}
$targetRegions = @($region1,$region2)
$job = $imageVersion = New-AzGalleryImageVersion `
-GalleryImageDefinitionName $imageDefinition.Name`
-GalleryImageVersionName '1.0.0' `
-GalleryName $gallery.Name `
-ResourceGroupName $gallery.ResourceGroupName `
-Location $gallery.Location `
-TargetRegion $targetRegions `
-SourceImageId $sourceVm.Id.ToString() `
-PublishingProfileEndOfLifeDate '2020-12-01' `
-asJob
すべてのターゲット リージョンにイメージがレプリケートされるまでにしばらく時間がかかることがあるため、進行状況を追跡できるようジョブを作成しました。 ジョブの進行状況を確認するには、「$job.State」と入力します。
$job.State
注釈
同じマネージド イメージを使用して別のイメージ バージョンを作成する前に、そのイメージ バージョンが構築とレプリケーションを完全に完了するまで待つ必要があります。
また、イメージ バージョンを作成するときに、-StorageAccountType Premium_LRS を追加してイメージを Premium ストレージに格納することや、-StorageAccountType Standard_ZRS を追加して Zone Redundant Storage に格納することもできます。
REST API を使用してイメージ定義を作成する
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryDefinitionName}?api-version=2019-12-01
{
"location": "eastus",
"properties": {
"hyperVGeneration": "V1",
"identifier": {
"offer": "myOffer",
"publisher": "myPublisher",
"sku": "mySKU"
},
"osState": "Specialized",
"osType": "Linux",
},
}
REST API を使用してイメージ バージョンを作成します。 この例では、VM からイメージ バージョンを作成します。 別のソースを使用するには、ソースのリソース ID を渡します (たとえば、OS ディスク スナップショットの ID を渡します)。
# @name imageVersion
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/images/{galleryDefinitionName}/versions/{galleryImageVersionName}?api-version=2019-12-01
{
"location": "{region}",
"properties": {
"publishingProfile": {
"endOfLifeDate": "2024-12-02T00:00:00+00:00",
"replicaCount": 1,
"storageAccountType": "Standard_ZRS",
"targetRegions": [
{
"name": "eastus",
"regionalReplicaCount": 2,
"storageAccountType": "Standard_LRS",
},
{
"name": "westus2",
}
]
},
"storageProfile": {
"source": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}"
}
}
}
}
別のテナントのソース イメージ バージョンを使用して、あるテナントにイメージ バージョンを作成する
ソース イメージのバージョンが存在するサブスクリプションで、閲覧者のアクセス許可をユーザーに付与します。 ユーザーがソース イメージ バージョンに対する閲覧者アクセス許可を持ったら、両方のアカウント (ソースとターゲット) にサインインします。
ソース イメージ バージョンの tenantID 、新しいイメージ バージョンが格納されるサブスクリプションの subscriptionID (ターゲット)、およびソース イメージ バージョンの resourceID が必要です。
az sig image-version createまたはNew-AzGalleryImageVersionを使用してイメージ バージョンを作成する前に、ターゲット ギャラリー イメージ定義が既に存在している必要があります。 さらに、ソース イメージのバージョンのリージョンまたはレプリカとターゲット リージョンが同じであることを確認します。
Azure CLIを使用して、別のテナントのソース イメージ バージョンを使用して、あるテナントにイメージ バージョンを作成します。
# Set some variables
tenantID="<tenant ID for the source image version>"
subID="<subscription ID where the image version will be created>"
sourceImageVersionID="<resource ID of the source image version>"
# Sign in to the subscription where the new image version will be created
az login
# Sign in to the tenant where the source image version is available
az login --tenant $tenantID
# Sign back in to the subscription where the image version will be created and ensure subscription context is set
az login
az account set --subscription $subID
# Create the image version from the source image version
az sig image-version create \
--gallery-image-definition myImageDef \
--gallery-image-version 1.0.0 \
--gallery-name myGallery \
--resource-group myResourceGroup \
--image-version $sourceImageVersionID \
--location myLocation
PowerShell を使用して、別のテナントのソース イメージ バージョンを使用して、あるテナントにイメージ バージョンを作成します。
# Set variables
$targetSubID = "<subscription ID for the target>"
$sourceTenantID = "<tenant ID for the source image version>"
$sourceImageVersionID = "<resource ID of the source image version>"
# Sign in to the tenant where the source image version is published
Connect-AzAccount -Tenant $sourceTenantID -UseDeviceAuthentication
# Sign in to the subscription where the new image version will be created and set the context
Connect-AzAccount -UseDeviceAuthentication -Subscription $targetSubID
Set-AzContext -Subscription $targetSubID
# Create the image version from the source image version in a different tenant
New-AzGalleryImageVersion -ResourceGroupName myResourceGroup -GalleryName myGallery -GalleryImageDefinitionName myImageDef -Location "West US 2" -Name 1.0.0 -SourceImageId $sourceImageVersionID
次のステップ
購入プラン情報を提供する方法については、イメージの作成時にSupply Azure Marketplace購入プラン情報を参照してください。