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

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

Este artigo descreve como usar o Azure PowerShell para localizar imagens de VM no Azure Marketplace. Em seguida, você pode especificar uma imagem do Marketplace e planejar informações ao criar uma VM.

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

Terminologia

Uma imagem do Marketplace no Azure tem os seguintes atributos:

  • Editor: A organização que criou a imagem. Exemplos: Canonical, MicrosoftWindowsServer
  • Oferta: o nome de um grupo de imagens relacionadas criadas por um editor. 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 da versão de uma imagem SKU.

Estes valores podem ser passados individualmente ou como uma imagem URN, combinando os valores separados pelos dois pontos (:). Por exemplo: Publisher:Offer:Sku:Version. Você pode substituir o número da versão na URN por latest para usar a versão mais recente da imagem.

Se o editor de imagens fornecer outros termos de licença e compra, você deverá aceitá-los antes de poder usar a imagem. Para obter mais informações, consulte Aceitar 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. Existem imagens diferentes 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 editores de imagem usando Get-AzVMImagePublisher.

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

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

    $offerName="<offer>"
    Get-AzVMImageSku -Location $locName -PublisherName $pubName -Offer $offerName | Select Skus
    
  4. Para uma 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 mais antiga específica.

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

Se você implantar uma VM com um modelo do Gerenciador de Recursos, deverá definir os parâmetros de imagem individualmente nas imageReference propriedades. Veja a referência de modelo.

Ver propriedades do plano de compra

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

Para exibir as informações do plano de compra de uma imagem, execute o Get-AzVMImage cmdlet. Se a PurchasePlan propriedade na saída não nullfor , 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 PurchasePlan informações são null:

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

A saída é semelhante à seguinte saída:

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 Data Science Virtual Machine - Windows 2016 , que tem as seguintes PurchasePlan propriedades: name, producte publisher. Algumas imagens também têm uma promotion code propriedade. Para implantar essa imagem, consulte as seções a seguir para aceitar os termos e habilitar 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 é semelhante à seguinte saída:

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 de 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 dos parâmetros.

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

A saída será semelhante à seguinte:

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 cmdlet 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 dos 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 a partir de uma imagem de mercado

Se você já tiver as informações sobre qual imagem deseja usar, 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 mercado.

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 os outros objetos de configuração para o New-AzVM cmdlet. 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 termos do plano de compra.

Criar uma nova VM a partir 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 a partir da mesma imagem, poderá 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 exibe as informações do plano de compra.

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

Se você não obteve as informações do plano antes que a VM original fosse excluída, 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 a partir de um VHD especializado e adicionar uma linha para adicionar as informações do plano à configuração da VM usando Set-AzVMPlan semelhante à seguinte:

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

Próximos passos

Para criar uma máquina virtual rapidamente com o cmdlet usando informações básicas de imagem, consulte Criar uma máquina virtual do Windows com o New-AzVM 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), consulte Fornecer informações do plano de compra do Azure Marketplace ao criar imagens.