Azure PowerShell を使用して Azure Marketplace VM イメージを検索して使用する

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

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

この記事では、Azure PowerShell を使用して Azure Marketplace 内で VM イメージを検索する方法について説明します。 その後、VM の作成時に Marketplace イメージとプランの情報を指定できるようになります。

また、Azure Marketplace または Azure CLI を使用して、使用できるイメージとオファーを参照することもできます。

用語

Azure Marketplace イメージには、次の属性があります。

  • 発行元: イメージを作成した組織です。 例: Canonical、MicrosoftWindowsServer
  • プラン: 発行元によって作成された関連するイメージのグループ名です。 例: UbuntuServer、WindowsServer
  • SKU: ディストリビューションのメジャー リリースなど、プランのインスタンス。 例: 18.04-LTS、2019-Datacenter
  • バージョン: イメージの SKU のバージョン番号。

これらの値は、個別に、またはイメージ URN として渡すことができます。その際、値はコロン (:) で区切って指定します。 例: Publisher:Offer:Sku:Version。 URN 内のバージョン番号を latest に置き換えると、イメージの最新バージョンを使用することができます。

イメージの発行元が他のライセンスや購入契約条件を提示している場合、イメージを使用するには、それらに事前に同意する必要があります。 詳細については、「購入プランのご契約条件への同意」を参照してください。

既定のイメージ

Powershell には、リソース作成プロセスを容易にするために、事前に定義されたイメージのエイリアスがいくつか用意されています。 Windows または Linux オペレーティング システムを使用するリソースに対する、さまざまなイメージが存在します。 New-AzVMNew-AzVmss などのいくつかの Powershell コマンドレットを使用すると、エイリアス名をパラメーターとして入力できます。 たとえば次のような点です。

$rgname = <Resource Group Name>
$location = <Azure Region>
$vmName = "v" + $rgname
$domainNameLabel = "d" + $rgname
$securePassword = <Password> | ConvertTo-SecureString -AsPlainText -Force
$username = <Username>
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
New-AzVM -ResourceGroupName $rgname -Location $location -Name $vmName -image CentOS85Gen285Gen2 -Credential $credential -DomainNameLabel $domainNameLabel

Linux イメージのエイリアス名とその詳細は次のとおりです。

Alias                     Architecture    Offer                         Publisher               Sku                                 Urn                                                                            Version
-----------------------   --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------ ---------
CentOS85Gen2              x64             CentOS                        OpenLogic               8_5-gen2                            OpenLogic:CentOS:8_5-gen2:latest                                               latest
Debian11                  x64             Debian-11                     Debian                  11-backports-gen2                   Debian:debian-11:11-backports-gen2:latest                                      latest
FlatcarLinuxFreeGen2      x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                             latest
OpenSuseLeap154Gen2       x64             opensuse-leap-15-4            SUSE                    gen2                                SUSE:opensuse-leap-15-4:gen2:latest                                            latest
RHELRaw8LVMGen2           x64             RHEL                          RedHat                  8-lvm-gen2                          RedHat:RHEL:8-lvm-gen2:latest                                                  latest
SLES                      x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                   latest
Ubuntu2204                x64             0001-com-ubuntu-server-jammy  Canonical               22_04-lts-gen2                      Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest                   latest

Windows イメージのエイリアス名とその詳細は次のとおりです。

Alias                   Architecture    Offer                         Publisher               Sku                                 Urn                                                                              Version
----------------------- --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------   ---------
Win2022Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                      latest
Win2022AzureEditionCore x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest   latest
Win10                   x64             Windows                       MicrosoftVisualStudio   Windows-10-N-x64                    MicrosoftVisualStudio:Windows:Windows-10-N-x64:latest                            latest
Win2019Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                      latest
Win2016Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                      latest
Win2012R2Datacenter     x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                   latest
Win2012Datacenter       x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                      latest

イメージの一覧表示

既定で提供されていない特定のイメージを使用する場合は、PowerShell を使用してイメージの一覧を絞り込むことができます。 必要に応じて、以下の変数の値を置き換えてください。

  1. Get-AzVMImagePublisher を使用して、イメージの発行元を一覧表示します。

    $locName="<location>"
    Get-AzVMImagePublisher -Location $locName | Select PublisherName
    
  2. 指定されたパブリッシャーについては、Get-AzVMImageOffer を使用してプランを一覧表示します。

    $pubName="<publisher>"
    Get-AzVMImageOffer -Location $locName -PublisherName $pubName | Select Offer
    
  3. 特定の発行元とプランについては、Get-AzVMImageSku を使用して、利用可能な SKU を一覧表示します。

    $offerName="<offer>"
    Get-AzVMImageSku -Location $locName -PublisherName $pubName -Offer $offerName | Select Skus
    
  4. SKU の場合は、Get-AzVMImage を使用してイメージのバージョンを一覧表示します。

    $skuName="<SKU>"
    Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Sku $skuName | Select Version
    

    特定の古いバージョンではなく、最新のイメージを使用する場合は、latest を使用することもできます。

これで、選択した発行元、プラン、SKU、およびバージョンを URN (: で区切られた値) へと結合することができます。 New-AzVM コマンドレットで VM を作成するときに、この URN を -Image パラメーターを使用して渡します。 また、URN 内のバージョン番号を latest に置き換えて、最新バージョンのイメージを取得することもできます。

Resource Manager テンプレートを使って VM をデプロイする場合は、imageReference プロパティでイメージ パラメーターを個別に設定する必要があります。 テンプレート リファレンスをご覧ください。

購入プランのプロパティを表示する

Azure Marketplace の一部の VM イメージには、プログラムでデプロイする前に同意する必要がある他のライセンスや購入契約条件があります。 サブスクリプションごとに 1 回、イメージの契約条件に同意する必要があります。

イメージの購入プラン情報を表示するには、Get-AzVMImage コマンドレットを実行します。 出力内の PurchasePlan プロパティが null ではない場合、イメージには、プログラムによるデプロイの前に同意しなければならない使用条件があります。

たとえば、Windows Server 2016 Datacenter イメージに追加条項がないのは、PurchasePlan 情報が null であるためです。

$version = "2016.127.20170406"
Get-AzVMImage -Location $locName -PublisherName $pubName -Offer $offerName -Skus $skuName -Version $version

出力は次の出力のようになります。

Id               : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/MicrosoftWindowsServer/ArtifactTypes/VMImage/Offers/WindowsServer/Skus/2016-Datacenter/Versions/2019.0.20190115
Location         : westus
PublisherName    : MicrosoftWindowsServer
Offer            : WindowsServer
Skus             : 2019-Datacenter
Version          : 2019.0.20190115
FilterExpression :
Name             : 2019.0.20190115
OSDiskImage      : {
                     "operatingSystem": "Windows"
                   }
PurchasePlan     : null
DataDiskImages   : []

下の例は、Data Science Virtual Machine - Windows 2016 イメージの同様のコマンドを示しています。次の PurchasePlan プロパティが表示されます: nameproduct、および publisher。 イメージによっては、promotion code プロパティもあります。 このイメージをデプロイするには、次のセクションを参照して使用条件に同意し、プログラムによるデプロイを有効にします。

Get-AzVMImage -Location "westus" -PublisherName "microsoft-ads" -Offer "windows-data-science-vm" -Skus "windows2016" -Version "0.2.02"

出力は次の出力のようになります。

Id               : /Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/microsoft-ads/ArtifactTypes/VMImage/Offers/windows-data-science-vm/Skus/windows2016/Versions/19.01.14
Location         : westus
PublisherName    : microsoft-ads
Offer            : windows-data-science-vm
Skus             : windows2016
Version          : 19.01.14
FilterExpression :
Name             : 19.01.14
OSDiskImage      : {
                     "operatingSystem": "Windows"
                   }
PurchasePlan     : {
                     "publisher": "microsoft-ads",
                     "name": "windows2016",
                     "product": "windows-data-science-vm"
                   }
DataDiskImages   : []

ライセンス条項を表示するには、Get-AzMarketplaceterms コマンドレットを使用し、購入プラン パラメーターを渡します。 出力には、Marketplace イメージの使用条件へのリンクと、以前その使用条件に同意したかどうかが表示されます。 パラメーターの値は全小文字で入力してください。

Get-AzMarketplaceterms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016"

出力は次のようになります。

Publisher         : microsoft-ads
Product           : windows-data-science-vm
Plan              : windows2016
LicenseTextLink   : https://storelegalterms.blob.core.windows.net/legalterms/3E5ED_legalterms_MICROSOFT%253a2DADS%253a24WINDOWS%253a2DDATA%253a2DSCIENCE%253a2DVM%253a24WINDOWS2016%253a24OC5SKMQOXSED66BBSNTF4XRCS4XLOHP7QMPV54DQU7JCBZWYFP35IDPOWTUKXUC7ZAG7W6ZMDD6NHWNKUIVSYBZUTZ245F44SU5AD7Q.txt
PrivacyPolicyLink : https://www.microsoft.com/EN-US/privacystatement/OnlineServices/Default.aspx
Signature         : 2UMWH6PHSAIM4U22HXPXW25AL2NHUJ7Y7GRV27EBL6SUIDURGMYG6IIDO3P47FFIBBDFHZHSQTR7PNK6VIIRYJRQ3WXSE6BTNUNENXA
Accepted          : False
Signdate          : 1/25/2019 7:43:00 PM

購入プランの契約条件に同意する

Set-AzMarketplaceterms コマンドレットを使用して、使用条件に同意するか、または拒否します。 使用条件に同意する必要があるのは、イメージのサブスクリプションごとに 1 回だけです。 パラメーターの値は全小文字で入力してください。

$agreementTerms=Get-AzMarketplaceterms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016"

Set-AzMarketplaceTerms -Publisher "microsoft-ads" -Product "windows-data-science-vm" -Name "windows2016" -Terms $agreementTerms -Accept
Publisher         : microsoft-ads
Product           : windows-data-science-vm
Plan              : windows2016
LicenseTextLink   : https://storelegalterms.blob.core.windows.net/legalterms/3E5ED_legalterms_MICROSOFT%253a2DADS%253a24WINDOWS%253a2DDATA%253a2DSCIENCE%253a2DV
                    M%253a24WINDOWS2016%253a24OC5SKMQOXSED66BBSNTF4XRCS4XLOHP7QMPV54DQU7JCBZWYFP35IDPOWTUKXUC7ZAG7W6ZMDD6NHWNKUIVSYBZUTZ245F44SU5AD7Q.txt
PrivacyPolicyLink : https://www.microsoft.com/EN-US/privacystatement/OnlineServices/Default.aspx
Signature         : XXXXXXK3MNJ5SROEG2BYDA2YGECU33GXTD3UFPLPC4BAVKAUL3PDYL3KBKBLG4ZCDJZVNSA7KJWTGMDSYDD6KRLV3LV274DLBXXXXXX
Accepted          : True
Signdate          : 2/23/2018 7:49:31 PM

Marketplace イメージから VM を作成する

使用するイメージに関する情報が既にある場合は、その情報を Set-AzVMSourceImage コマンドレットに渡して、イメージ情報を VM 構成に追加することができます。 Marketplace で入手できるイメージの検索と一覧表示については、次のセクションを参照してください。

一部の有料イメージでは、Set-AzVMPlan を使用して購入プランの情報も提供する必要があります。

...

$vmConfig = New-AzVMConfig -VMName "myVM" -VMSize Standard_D1

# Set the Marketplace image
$offerName = "windows-data-science-vm"
$skuName = "windows2016"
$version = "19.01.14"
$vmConfig = Set-AzVMSourceImage -VM $vmConfig -PublisherName $publisherName -Offer $offerName -Skus $skuName -Version $version

# Set the Marketplace plan information, if needed
$publisherName = "microsoft-ads"
$productName = "windows-data-science-vm"
$planName = "windows2016"
$vmConfig = Set-AzVMPlan -VM $vmConfig -Publisher $publisherName -Product $productName -Name $planName

...

その後、VM 構成と他の構成オブジェクトを New-AzVM コマンドレットに渡します。 PowerShell で VM 構成を使用する詳細な例については、このスクリプトを参照してください。

イメージの使用条件への同意に関するメッセージが表示された場合は、前のセクション「購入プランのご契約条件への同意」を参照してください。

購入プラン情報を使用して VHD から新しい VM を作成する

Azure Marketplace イメージを使用して作成された既存の VHD がある場合は、その VHD から新しい VM を作成するときに、購入プランの情報を指定することが必要になる場合があります。

元の VM、または同じイメージから作成した他の VM がある場合は、Get-AzVM を使用して、そこからプラン名、発行元、および製品情報を取得できます。 この例では、myResourceGroup リソース グループの myVM という名前の VM を取得し、購入プラン情報を表示します。

$vm = Get-azvm `
   -ResourceGroupName myResourceGroup `
   -Name myVM
$vm.Plan

元の VM が削除される前にプラン情報を取得しなかった場合は、サポート リクエストを提出できます。 サポート リクエストには、少なくとも VM 名、サブスクリプション ID、削除操作のタイム スタンプが必要です。

VHD を使用して VM を作成するには、「特殊化した VHD から VM を作成する」の記事を参照して、Set-AzVMPlan を使用して以下のように VM の設定にプラン情報を追加する行を追加します。

$vmConfig = Set-AzVMPlan `
   -VM $vmConfig `
   -Publisher "publisherName" `
   -Product "productName" `
   -Name "planName"

次のステップ

基本イメージ情報を使用し、New-AzVM コマンドレットを使って仮想マシンをすばやく作成するには、「PowerShell で Windows 仮想マシンを作成する」をご覧ください。

Azure Marketplace イメージを使用して Azure Compute Gallery (旧称 Shared Image Gallery) にカスタム イメージを作成する方法の詳細については、イメージ作成時に Azure Marketplace 購入プラン情報を提供する方法に関する記事を参照してください。