Поиск и использование образов виртуальных машин в Azure Marketplace с помощью Azure PowerShell

Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Универсальные масштабируемые наборы

В этой статье описывается, как с помощью Azure PowerShell находить образы виртуальных машин в Azure Marketplace. Таким образом, при создании виртуальной машины вы сможете просто указывать образ из Marketplace и информацию из плана.

Также, с помощью Microsoft Azure Marketplace или Azure CLI, вы сможете просматривать доступные образы и предложения.

Терминология

Атрибуты образа Marketplace в Azure:

  • Издатель. Организация, создавшая образ. Примеры: Canonical, MicrosoftWindowsServer.
  • Предложение. Имя группы связанных образов, созданных издателем. Примеры: Ubuntu Server, WindowsServer
  • Номер SKU. Экземпляр предложения, например основной выпуск дистрибутива. Примеры: 18.04-LTS, 2019-Datacenter
  • Версия. Номер версии SKU образа.

Эти значения можно передавать по отдельности или в виде образаURN, объединив эти значения через двоеточие (:). Например: Издатель:Предложение:SKU:Версия. Можно заменить номер версии в URN на latest (самая последняя), чтобы получить последнюю версию образа.

Если издатель изображений предоставляет другие условия лицензии и покупки, необходимо принять их, прежде чем использовать образ. Дополнительные сведения см. в разделе Принятие условий плана покупки.

Изображения по умолчанию

PowerShell предлагает несколько предварительно определенных псевдонимов изображений, чтобы упростить процесс создания ресурсов. Существуют различные образы ресурсов с операционной системой Windows или Linux. Несколько командлетов PowerShell, например New-AzVM и New-AzVmssпозволяют ввести имя псевдонима в качестве параметра. Например:

$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 Ubuntu2204 -Credential $credential -DomainNameLabel $domainNameLabel

Имена псевдонимов образов Linux и их подробные сведения:

Alias                     Architecture    Offer                         Publisher               Sku                                 Urn                                                                            Version
-----------------------   --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------ ---------
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
----------------------- --------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------   ---------
Win2022AzureEdition     x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition       MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition: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. По определенному издателю и его предложению составьте список доступных SKU, с помощью команды Get-AzVMImageSku.

    $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 (значения, разделенные ":"). Передайте этот URN с параметром -Image при создании виртуальной машины с помощью командлета New-AzVM. При необходимости вы можете заменить номер версии в URN словом latest (самая последняя), чтобы получить последнюю версию образа.

При развертывании виртуальной машины с шаблоном Resource Manager необходимо задать параметры образа отдельно в свойствах imageReference . Ознакомьтесь со статьей о справочнике по шаблонам.

Просмотрите условия плана покупки

Некоторые образы виртуальных машин в Azure Marketplace имеют другие условия лицензии и покупки, которые необходимо принять перед их программным развертыванием. Необходимо принять условия образа один раз на подписку.

Чтобы просмотреть сведения о плане покупки образа, выполните командлет 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   : []

В примере ниже показана подобная команда для образа Виртуальной машины для обработки и анализа данных в Windows 2016, имеющего следующие свойства PurchasePlan: name, product и 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. Необходимо принять условия соглашения для каждой подписки в образе. Обязательно используйте только строчные буквы в значениях параметров.

$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

Если у вас уже есть информация о том какой образ вы будете использовать, чтобы добавить эти сведения в конфигурацию виртуальной машины, отправьте их в командлет Set-AzVMSourceImage. В следующих разделах содержатся сведения о поиске и добавлении образов, доступных в 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

...

Затем нужно передать конфигурацию виртуальной машины (вместе с другими объектами конфигурации) в командлет New-AzVM. Подробный пример использования конфигурации виртуальной машины с применением PowerShell см. в этом скрипте.

Если вы получите сообщение о принятии условий образа, обратитесь к предыдущему разделу Принятие условий плана покупки.

Создание новой виртуальной машины с виртуального жесткого диска с использованием информации из плана покупки

Если у вас уже есть виртуальный жесткий диск, созданный с помощью образа из Azure Marketplace, при создании виртуальной машины на базе этого диска, вам может понадобиться информация из плана покупки.

Если у вас до сих пор осталась исходная виртуальная машина или у вас есть другая виртуальная машина, созданная с помощью того же образа, вы можете получить имя плана, издателя и сведения о продукте с помощью команды Get-AzVM. В данном примере мы видим виртуальную машину с именем myVM из группы ресурсов myResourceGroup, а далее отображается информация плана покупки.

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

Если у вас нет информацию из плана, перед тем как удалять первоначальную виртуальную машину, можно разместить Запрос в службу поддержки. Запрос на поддержку должен иметь минимальное имя виртуальной машины, идентификатор подписки и метку времени операции удаления.

Чтобы создать виртуальную машину на базе виртуального жесткого диска обратитесь к статье Создание виртуальной машины со специального виртуального жесткого диска и добавьте соответствующим образом информацию из плана в конфигурацию виртуальной машины. Это делается с помощью командлета Set-AzVMPlan, аналогично следующему примеру:

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

Следующие шаги

Инструкции по быстрому созданию виртуальной машины с помощью командлета New-AzVM на основе полученных данных образа см. в статье Создание виртуальной машины Windows с помощью PowerShell.

Дополнительные сведения об использовании образов Azure Marketplace для создания пользовательских образов в Коллекции вычислений Azure (ранее известная, как Коллекция общих образов) см. в статье Предоставление информации из плана покупки в Azure Marketplace при создании образов.