適用対象: ✔️ Linux VM ✔️ Windows VM
Azure Compute Gallery (旧称 Shared Image Gallery) に格納されている特殊化されたイメージ バージョンから VM を作成します。 一般化されたイメージ バージョンを使用して VM を作成する場合は、一般化されたイメージ バージョンからの VM の作成に関する記事をご覧ください。
この記事では、特殊化されたイメージから VM を作成する方法について説明します。
重要
特殊化されたイメージから新しい VM を作成すると、新しい VM は、元の VM のコンピューター名を保持します。 CMID などの他のコンピューター固有の情報も保持されます。 この重複する情報が原因で問題が発生する可能性があります。 VM をコピーするときは、アプリケーションが依存するコンピューター固有の情報の種類を把握しておいてください。
ギャラリーからの VM の作成
内部ギャラリーから VM を作成します。
az sig image-definition list を使用してギャラリー内のイメージ定義を一覧表示すると、定義の名前と ID を確認できます。
resourceGroup=myGalleryRG
gallery=myGallery
az sig image-definition list \
--resource-group $resourceGroup \
--gallery-name $gallery \
--query "[].[name, id]" \
--output tsv
イメージが特殊化されたイメージであることを示す --specialized
パラメーターを使用した az vm create を使用して、VM を作成します。
--image
にイメージ定義 ID を指定して、使用可能なイメージの最新バージョンから VM を作成します。 また、--image
にイメージ バージョン ID を指定して、特定のバージョンから VM を作成することもできます。
この例では、myImageDefinition イメージの最新バージョンから VM を作成しています。
az group create --name myResourceGroup --location eastus
az vm create --resource-group myResourceGroup \
--name myVM \
--image "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition" \
--specialized
特殊化されたイメージ バージョンが用意できたら、New-AzVM コマンドレットを使用して新しい VM を 1 つ以上作成できます。
この例では、イメージ定義 ID を使用して、新しい VM で最新バージョンのイメージが使用されるようにしています。 Set-AzVMSourceImage -Id
にイメージ バージョン ID を使用して、特定のバージョンを使用することも可能です。 たとえば、イメージ バージョン 1.0.0 を使用するには、次のように入力します: Set-AzVMSourceImage -Id "/subscriptions/<subscription ID where the gallery is located>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition/versions/1.0.0"
。
特定のイメージ バージョンを使用すると、その特定のイメージ バージョンが使用できない場合 (リージョンから削除されるなどして)、オートメーションが失敗する可能性があります。 特定のイメージ バージョンが必要な場合を除き、新しい VM の作成にはイメージ定義 ID の使用をお勧めします。
この例では、必要に応じてリソース名を置き換えてください。
# Create some variables for the new VM.
$resourceGroup = "mySIGSpecializedRG"
$location = "South Central US"
$vmName = "mySpecializedVM"
# Get the image. Replace the name of your resource group, gallery, and image definition. This will create the VM from the latest image version available.
$imageDefinition = Get-AzGalleryImageDefinition `
-GalleryName myGallery `
-ResourceGroupName myResourceGroup `
-Name myImageDefinition
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name MYvNET `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
$pip = New-AzPublicIpAddress `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name "mypublicdns$(Get-Random)" `
-AllocationMethod Static `
-IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig `
-Name myNetworkSecurityGroupRuleRDP `
-Protocol Tcp `
-Direction Inbound `
-Priority 1000 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name myNetworkSecurityGroup `
-SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface `
-Name $vmName `
-ResourceGroupName $resourceGroup `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using Set-AzVMSourceImage -Id $imageDefinition.Id to use the latest available image version.
$vmConfig = New-AzVMConfig `
-VMName $vmName `
-VMSize Standard_D1_v2 | `
Set-AzVMSourceImage -Id $imageDefinition.Id | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $location `
-VM $vmConfig
これで、1 つ以上の新しい VM を作成できるようになりました。 この例では、"米国東部" のデータセンターにある myResourceGroup に、myVM という名前の VM を作成します。
- イメージ定義に移動します。 リソース フィルターを使用すると、使用可能なすべてのイメージ定義を表示できます。
- イメージ定義のページで、ページの上部にあるメニューから [VM の作成] を選択します。
- [リソース グループ] で、 [新規作成] を選択し、名前として「myResourceGroup」と入力します。
- [仮想マシン名] に、「myVM」と入力します。
- [リージョン] で、 [米国東部] を選択します。
- [可用性オプション] で、既定の [インフラストラクチャ冗長は必要ありません] のままにします。
- イメージ定義のページから操作を開始していれば、 [イメージ] の値に
latest
イメージ バージョンが自動的に入力されます。
- [サイズ] では、利用可能なサイズの一覧から VM サイズを選択し、 [選択] を選択します。
- ソース VM のユーザー名と資格情報が使用されるため、[管理者アカウント] のユーザー名は淡色表示されます。
- VM へのリモート アクセスを許可する場合、 [パブリック受信ポート] で、 [選択したポートを許可する] を選択し、ドロップダウンから [SSH (22)] または [RDP (3389)] を選択します。 VM へのリモート アクセスを許可しない場合、 [パブリック受信ポート] で、 [なし] を選択したままにします。
- 完了したら、ページの下部にある [確認と作成] ボタンを選択します。
- VM が検証に合格したら、ページの下部にある [作成] を選択し、デプロイを開始します。
RBAC - 組織内
ギャラリーが存在するサブスクリプションが同じテナント内にある場合は、RBAC を通して共有されているイメージは、CLI と PowerShell を使用して VM を作成するために利用できます。
使用するイメージの imageID
が必要であり、VM を作成するリージョンにイメージがレプリケートされていることを確認します。
image="/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition"
vmResourceGroup='myResourceGroup'
location='westus'
vmName='myVM'
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $image \
--specialized
# Create some variables for the new VM.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVM"
$image = "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition"
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name MYvNET `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
$pip = New-AzPublicIpAddress `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name "mypublicdns$(Get-Random)" `
-AllocationMethod Static `
-IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig `
-Name myNetworkSecurityGroupRuleRDP `
-Protocol Tcp `
-Direction Inbound `
-Priority 1000 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name myNetworkSecurityGroup `
-SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface `
-Name $vmName `
-ResourceGroupName $resourceGroup `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using Set-AzVMSourceImage -Id $imageDefinition.Id to use the latest available image version.
$vmConfig = New-AzVMConfig `
-VMName $vmName `
-VMSize Standard_D1_v2 | `
Set-AzVMSourceImage $image | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $location `
-VM $vmConfig
RBAC - 別のテナントまたは組織から
使用するイメージが、同じテナント (ディレクトリ) にないギャラリーに格納されている場合は、アクセスできることを確認するために、各テナントにサインインする必要があります。
使用するイメージの imageID
が必要であり、VM を作成するリージョンにイメージがレプリケートされていることを確認します。 また、ソース ギャラリーの tenantID
と、VM を作成する場所の tenantID
も必要です。
イメージが格納されているテナントにサインインし、アクセス トークンを取得してから、VM を作成するテナントにサインインする必要があります。 これは、ユーザーがイメージにアクセスできることを Azure が認証する方法です。
tenant1='<ID for tenant 1>'
tenant2='<ID for tenant 2>'
az account clear
az login --tenant $tenant1
az account get-access-token
az login --tenant $tenant2
az account get-access-token
イメージが特殊化されたイメージであることを示す --specialized
パラメーターを使用した az vm create を使用して、VM を作成します。
imageid=""/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition""
resourcegroup="myResourceGroup"
location="West US 3"
name='myVM'
az group create --name $resourcegroup --location $location
az vm create --resource-group $resourcegroup \
--name $name \
--image $image \
--specialized
イメージが格納されているテナントにサインインし、アクセス トークンを取得してから、VM を作成するテナントにサインインする必要があります。 これは、ユーザーがイメージにアクセスできることを Azure が認証する方法です。
$tenant1 = "<Tenant 1 ID>"
$tenant2 = "<Tenant 2 ID>"
Connect-AzAccount -Tenant "<Tenant 1 ID>" -UseDeviceAuthentication
Connect-AzAccount -Tenant "<Tenant 2 ID>" -UseDeviceAuthentication
VM を作成します。 例の情報を自身のものに置き換えます。 VM を作成する前に、VM を作成するリージョンにイメージがレプリケートされていることを確認してください。
# Create some variables for the new VM.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "myVM"
# Set a variable for the image version in Tenant 1 using the full image ID of the image version
$image = "/subscriptions/<Tenant 1 subscription>/resourceGroups/<Resource group>/providers/Microsoft.Compute/galleries/<Gallery>/images/<Image definition>/versions/<version>"
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
-Name mySubnet `
-AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name MYvNET `
-AddressPrefix 192.168.0.0/16 `
-Subnet $subnetConfig
$pip = New-AzPublicIpAddress `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name "mypublicdns$(Get-Random)" `
-AllocationMethod Static `
-IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig `
-Name myNetworkSecurityGroupRuleRDP `
-Protocol Tcp `
-Direction Inbound `
-Priority 1000 `
-SourceAddressPrefix * `
-SourcePortRange * `
-DestinationAddressPrefix * `
-DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup `
-ResourceGroupName $resourceGroup `
-Location $location `
-Name myNetworkSecurityGroup `
-SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface `
-Name $vmName `
-ResourceGroupName $resourceGroup `
-Location $location `
-SubnetId $vnet.Subnets[0].Id `
-PublicIpAddressId $pip.Id `
-NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration using Set-AzVMSourceImage -Id $imageDefinition.Id to use the latest available image version.
$vmConfig = New-AzVMConfig `
-VMName $vmName `
-VMSize Standard_D1_v2 | `
Set-AzVMSourceImage -Id $image | `
Add-AzVMNetworkInterface -Id $nic.Id
# Create a virtual machine
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $location `
-VM $vmConfig
コミュニティに投稿された仮想マシン イメージを使用することには、いくつかのリスクがあります。 イメージは、マルウェアやセキュリティの脆弱性が含まれている、または誰かの知的財産を侵害している場合があります。 コミュニティのために安全で信頼性の高いエクスペリエンスをつくり出せるように、これらの問題が発生した場合にイメージを報告できます。
コミュニティ ギャラリーで問題を報告する最も簡単な方法は、レポートの情報が事前に入力されるポータルを使用することです:
- 画像定義のフィールド内のリンクやその他の情報に関する問題については、コミュニティ イメージのレポート を選択します。
- イメージバージョンに悪意のあるコードが含まれている場合、または特定のバージョンの画像に関するその他の問題がある場合は、イメージバージョンのテーブルの レポートのバージョン 列の下にある レポート を選択します。
次のリンクを使用して問題を報告することもできますが、フォームには事前入力されません:
コミュニティ ギャラリーに共有されているイメージを使用して VM を作成するには、--image
に指定するイメージに、次の形式の一意の ID を使用します。
/CommunityGalleries/<community gallery name, like: ContosoImages-1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f>/Images/<image name>/Versions/latest
エンド ユーザーとして、コミュニティ ギャラリーのパブリック名を取得するには、ポータルを使用する必要があります。 [仮想マシン]>[作成]>[Azure 仮想マシン]>[イメージ]>[すべてのイメージを表示]>[コミュニティ イメージ]>[Public gallery name] (パブリック ギャラリー名) に移動します。
az sig image-definition list-community を使用して、コミュニティ ギャラリーで使用可能なすべてのイメージ定義を一覧表示します。 この例では、"米国西部" の ContosoImage ギャラリー内のすべてのイメージと、VM、OS、OS の状態を作成するために必要な一意の ID を一覧表示します。
az sig image-definition list-community \
--public-gallery-name "ContosoImages-1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f" \
--location westus \
--query [*]."{Name:name,ID:uniqueId,OS:osType,State:osState}" -o table
コミュニティ ギャラリーで一般化されたイメージから VM を作成するには、一般化されたイメージ バージョンからの VM の作成に関する記事をご覧ください。
イメージが特殊化されたイメージであることを示す --specialized
パラメーターを使用した az vm create を使用して、VM を作成します。
この例では、myImageDefinition イメージの最新バージョンから VM を作成しています。
az group create --name myResourceGroup --location eastus
az vm create --resource-group myResourceGroup \
--name myVM \
--image "/CommunityGalleries/ContosoImages-f61bb1d9-3c5a-4ad2-99b5-744030225de6/Images/LinuxSpecializedVersions/latest" \
--specialized
コミュニティ イメージを使用する際は、法的条項への同意を求められます。 ここに示したのは、そのメッセージの例です。
To create the VM from community gallery image, you must accept the license agreement and privacy statement: http://contoso.com. (If you want to accept the legal terms by default, please use the option '--accept-term' when creating VM/VMSS) (Y/n):
- 検索に「virtual machines」と入力します。
- [サービス] で、 [仮想マシン] を選択します。
- [仮想マシン] ページで、[作成] を選択してから [仮想マシン] を選択します。 [仮想マシンの作成] ページが開きます。
- [基本] タブの [プロジェクトの詳細] で、正しいサブスクリプションが選択されていることを確認し、リソース グループの [新規作成] を選択するか、ドロップダウンから選択します。
- [インスタンスの詳細] で、 仮想マシン名を入力します。
- [セキュリティの種類] で、[標準] が選択されていることを確認します。
- イメージの場合は、[すべてのイメージを表示] を選択します。 [イメージの選択] ページが開きます。
- 左側のメニューの [その他の項目] で、[コミュニティ イメージ] を選択します。 その他の項目 | コミュニティ イメージ ページが開きます。
- 一覧からイメージを選択します。 [OS の状態] が [特殊化] であることを確認します。 特殊化されたイメージを使用する場合は、一般化されたイメージ バージョンを使用した VM の作成に関するページをご覧ください。 イメージの選択に応じて、VM が作成されるリージョンがイメージと一致するように変更されます。
- 残りのオプションに入力してから、ページの下部にある [確認と作成] ボタンを選択します。
- [仮想マシンの作成] ページで、これから作成しようとしている VM の詳細を確認できます。 準備ができたら、 [作成] を選択します。
直接共有ギャラリー
重要
Azure Compute Gallery – 直接共有ギャラリーは現在プレビュー段階であり、Azure Compute Gallery のプレビューの使用条件の対象となります。
プレビュー中にイメージを直接共有ギャラリーに公開するには、https://aka.ms/directsharedgallery-preview で登録する必要があります。 直接共有ギャラリーからの VM の作成は、すべての Azure ユーザーに開放されています。
プレビュー中は、プロパティ sharingProfile.permissions
を Groups
に設定して、新しいギャラリーを作成する必要があります。 CLI を使用してギャラリーを作成するときは、--permissions groups
パラメーターを使用します。 既存のギャラリーを使用することはできません。プロパティは現在更新できません。
サブスクリプションまたはテナントに共有されている最新バージョンのイメージを使用して VM を作成するには、次の形式のイメージの ID が必要です。
/SharedGalleries/<uniqueID>/Images/<image name>/Versions/latest
共有されているギャラリーの uniqueID
を検索するには、az sig list-shared を使用します。 この例では、米国西部リージョンのギャラリーを見ています。
region=westus
az sig list-shared --location $region --query "[].name" -o tsv
ギャラリー名を使用して、使用可能なすべてのイメージを見つけます。 この例では、米国西部のすべてのイメージと、VM、OS、OS の状態を作成するために必要な一意の ID を一覧表示します。
galleryName="1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f-myDirectShared"
az sig image-definition list-shared \
--gallery-unique-name $galleryName \
--location $region \
--query [*]."{Name:name,ID:uniqueId,OS:osType,State:osState}" -o table
イメージの状態が、Specialized
となっていることを確認します。 Generalized
状態のイメージを使用する場合は、「一般化されたイメージ バージョンからの VM の作成」をご覧ください。
イメージが特殊化されたイメージであることを示す --specialized
パラメーターを使用した az vm create を使用して、VM を作成します。
VM を作成するための '--image' の値として、最新バージョンを使用するために /Versions/latest
が付加された Id
を使用します。
この例では、myImageDefinition イメージの最新バージョンから VM を作成しています。
imgDef="/SharedGalleries/1a2b3c4d-1234-abcd-1234-1a2b3c4d5e6f-MYDIRECTSHARED/Images/myDirectDefinition/Versions/latest"
vmResourceGroup=myResourceGroup
location=westus
vmName=myVM
az group create --name $vmResourceGroup --location $location
az vm create\
--resource-group $vmResourceGroup \
--name $vmName \
--image $imgDef \
--specialized
注意
既知の問題: Azure portal で、リージョンを選択し、イメージを選択してからリージョンを変更すると、"このイメージのレプリケーション リージョンでのみ VM を作成できます" というエラー メッセージが、イメージがそのリージョンにレプリケートされているときでも表示されます。 エラーを解消するには、別のリージョンを選択してから、希望のリージョンに切り替えてください。 イメージが使用可能な場合、エラー メッセージはクリアされるはずです。
Azure CLI を使用して、共有されているイメージを確認することもできます。 たとえば、"az sig list-shared --location westus" を使用して、米国西部リージョンで共有されているイメージを確認できます。
- 検索に「virtual machines」と入力します。
- [サービス] で、 [仮想マシン] を選択します。
- [仮想マシン] ページで、[作成] を選択してから [仮想マシン] を選択します。 [仮想マシンの作成] ページが開きます。
- [基本] タブの [プロジェクトの詳細] で、正しいサブスクリプションが選択されていることを確認し、リソース グループの [新規作成] を選択するか、ドロップダウンから選択します。
- [インスタンスの詳細] で、 仮想マシン名を入力します。
- [セキュリティの種類] で、[標準] が選択されていることを確認します。
- イメージの場合は、[すべてのイメージを表示] を選択します。 [イメージの選択] ページが開きます。
- 左側のメニューの [その他の項目] で、[直接共有イメージ (プレビュー)] を選択します。 [その他の項目] | [直接共有イメージ (プレビュー)] ページが開きます。
- 一覧からイメージを選択します。 [OS の状態] が [特殊化] であることを確認します。 一般化されたイメージを使用する場合は、一般化されたイメージ バージョンを使用した VM の作成に関するページをご覧ください。 イメージの選択に応じて、VM が作成されるリージョンがイメージと一致するように変更されます。
- 残りのオプションに入力してから、ページの下部にある [確認と作成] ボタンを選択します。
- [仮想マシンの作成] ページで、これから作成しようとしている VM の詳細を確認できます。 準備ができたら、 [作成] を選択します。
次のステップ