Localizar e usar imagens de VM do Azure Marketplace com Azure PowerShell

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Orientações sobre fim da vida útil do CentOS.

Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes

Este tópico descreve como usar o Azure PowerShell para localizar imagens de VM no Azure Marketplace. Você pode então especificar uma imagem do Marketplace e planejar informações ao criar uma VM.

Você também pode procurar imagens e ofertas disponíveis usando a vitrine do Azure Marketplace ou a CLI do Azure.

Terminologia

Uma imagem do Marketplace no Azure tem os seguintes atributos:

  • Publicador: a organização que criou a imagem. Exemplos: Canonical, MicrosoftWindowsServer
  • Oferta: Nome de um grupo de imagens relacionadas criadas por um publicador. Exemplos: UbuntuServer, WindowsServer
  • SKU: uma instância de uma oferta, como uma versão principal de uma distribuição. Exemplos: 18.04-LTS, 2019-Datacenter
  • Versão: o número de versão de uma imagem de SKU.

Esses valores podem ser passados individualmente ou como uma URNde imagem, combinando os valores separados por dois-pontos (:). Por exemplo: Publicador:Oferta:SKU:Versão. Você pode substituir o número de versão na URN por latest para usar a versão mais recente da imagem.

Se o distribuidor de imagens fornecer outros termos de licença e compra, você deverá aceitar esses termos antes de usar a imagem. Para obter mais informações, consulte Aceitar os termos do plano de compra.

Imagens padrão

O PowerShell oferece vários aliases de imagem predefinidos para facilitar o processo de criação de recursos. Há diferentes imagens para recursos com um sistema operacional Windows ou Linux. Vários cmdlets do PowerShell, como New-AzVM e New-AzVmss, permitem que você insira o nome do alias como um parâmetro. Por exemplo:

$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

Os nomes de alias de imagem do Linux e seus detalhes são:

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

Os nomes de alias de imagem do Windows e seus detalhes são:

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

Listar imagens

Você pode usar o PowerShell para restringir uma lista de imagens se quiser usar uma imagem específica que não é fornecida por padrão. Substitua os valores das variáveis abaixo para atender às suas necessidades.

  1. Liste os distribuidores de imagem usando Get-AzVMImagePublisher.

    $locName="<location>"
    Get-AzVMImagePublisher -Location $locName | Select PublisherName
    
  2. Para um determinado distribuidor, liste as ofertas dele usando Get-AzVMImageOffer.

    $pubName="<publisher>"
    Get-AzVMImageOffer -Location $locName -PublisherName $pubName | Select Offer
    
  3. Para um determinado distribuidor e oferta, liste os SKUs disponíveis usando Get-AzVMImageSku.

    $offerName="<offer>"
    Get-AzVMImageSku -Location $locName -PublisherName $pubName -Offer $offerName | Select Skus
    
  4. Para um SKU, liste as versões da imagem usando Get-AzVMImage.

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

    Você também pode usar latest se quiser usar a imagem mais recente e não uma versão anterior específica.

Agora você pode combinar o editor, a oferta, a SKU e a versão selecionados em um URN (valores separados por :). Passe esse URN com o parâmetro -Image quando criar uma VM com o cmdlet New-AzVM. Você pode substituir o número de versão na URN por latest para usar a versão mais recente da imagem.

Se você implantar uma VM com um modelo do Resource Manager, você precisará definir os parâmetros da imagem individualmente nas propriedades imageReference. Consulte a referência de modelo.

Ver as propriedades do plano de compra

Algumas imagens de VM no Azure Marketplace têm outros termos de licença e de compra que você deve aceitar antes de implantá-las programaticamente. Você precisa aceitar os termos da imagem uma vez para cada assinatura.

Para exibir as informações do plano de compra de uma imagem, execute o cmdlet Get-AzVMImage. Se a propriedade PurchasePlan na saída não for null, isso significa que a imagem tem termos que você precisa aceitar antes da implantação programática.

Por exemplo, a imagem do Windows Server 2016 Datacenter não tem termos adicionais, portanto, as informações de PurchasePlansãonull:

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

A saída deve ser semelhante ao seguinte exemplo:

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   : []

O exemplo abaixo mostra um comando semelhante para a imagem da Máquina Virtual de Ciência de Dados - Windows 2016, que possui as seguintes PurchasePlan propriedades: name, product e publisher. Algumas imagens também têm um promotion code propriedade. Para implantar essa imagem, consulte as seções a seguir para aceitar os termos e ativar a implantação programática.

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

A saída deve ser semelhante ao seguinte exemplo:

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   : []

Para exibir os termos da licença, use o cmdlet Get-AzMarketplaceterms e passe os parâmetros do plano de compra. A saída fornece um link para os termos da imagem do Marketplace e mostra se você aceitou os termos anteriormente. Certifique-se de usar todas as letras minúsculas nos valores de parâmetros.

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

A saída terá esta aparência:

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

Aceitar os termos do plano de compra

Use o cmlet Set-AzMarketplaceterms para aceitar ou rejeitar os termos. Você só precisa aceitar os termos uma vez por assinatura para a imagem. Certifique-se de usar todas as letras minúsculas nos valores de parâmetros.

$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

Criar uma nova VM de uma imagem do Marketplace

Se você já tiver as informações sobre a imagem que deseja usar, você poderá passar essas informações para o cmdlet set-AzVMSourceImage para adicionar informações de imagem à configuração da VM. Consulte as próximas seções para pesquisar e listar as imagens disponíveis no Marketplace.

Algumas imagens pagas também exigem que você forneça informações do plano de compra usando o 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

...

Em seguida, você passará a configuração da VM junto com outros objetos de configuração para o cmdlet New-AzVM. Para obter um exemplo detalhado de como usar uma configuração de VM com o PowerShell, consulte este script.

Se você receber uma mensagem sobre como aceitar os termos da imagem, consulte a seção anterior Aceitar os termos do plano de compra.

Criar uma nova VM de um VHD com informações do plano de compra

Se você tiver um VHD existente que foi criado usando uma imagem do Azure Marketplace, talvez seja necessário fornecer as informações do plano de compra ao criar uma nova VM a partir desse VHD.

Se você ainda tiver a VM original ou outra VM criada na mesma imagem, você pode obter o nome do plano, o editor e as informações do produto usando Get-AzVM. Este exemplo obtém uma VM chamada myVM no grupo de recursos myResourceGroup e, em seguida, exibe as informações do plano de compra.

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

Se você não tiver as informações de plano antes da exclusão da VM original, você pode registrar uma solicitação de suporte. A solicitação de suporte precisa, no mínimo, do nome da VM, da ID da assinatura e do carimbo de data/hora da operação de exclusão.

Para criar uma VM usando um VHD, consulte este artigo Criar uma VM de um VHD especializado e adicionar uma linha para adicionar as informações do plano à configuração da VM usando Set-AzVMPlan semelhante ao seguinte:

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

Próximas etapas

Para criar uma máquina virtual rapidamente com o cmdlet New-AzVM usando informações básicas de imagem, consulte Criar uma máquina virtual do Windows com o PowerShell.

Para obter mais informações sobre como usar imagens do Azure Marketplace para criar imagens personalizadas em uma Galeria de Computação do Azure (anteriormente conhecida como Galeria de Imagens Compartilhadas), confira Fornecer informações sobre o plano de compra do Azure Marketplace ao criar imagens.