Criar e publicar um item do Marketplace do hub de Azure Stack personalizadoCreate and publish a custom Azure Stack Hub Marketplace item

Todos os itens publicados no Marketplace do hub de Azure Stack usam o formato de pacote (. azpkg) da galeria do Azure.Every item published to the Azure Stack Hub Marketplace uses the Azure Gallery Package (.azpkg) format. A ferramenta de Azure Gallery Packager permite que você crie um pacote personalizado da galeria do Azure que pode ser carregado no Marketplace do Hub de Azure Stack, que pode ser baixado pelos usuários.The Azure Gallery Packager tool enables you to create a custom Azure Gallery package that you can upload to the Azure Stack Hub Marketplace, which can then be downloaded by users. O processo de implantação usa um modelo de Azure Resource Manager.The deployment process uses an Azure Resource Manager template.

Itens do MarketplaceMarketplace items

Os exemplos neste artigo mostram como criar uma oferta de Marketplace de VM única, do tipo Windows ou Linux.The examples in this article show how to create a single VM Marketplace offer, of type Windows or Linux.

Pré-requisitosPrerequisites

Antes de criar o item de Marketplace de VM, faça o seguinte:Before creating the VM marketplace item, do the following:

  1. Carregue a imagem de VM personalizada no portal do hub de Azure Stack, seguindo as instruções em Adicionar uma imagem de VM ao Hub Azure Stack.Upload the custom VM image to the Azure Stack Hub portal, following the instructions in Add a VM image to Azure Stack Hub.
  2. Siga as instruções neste artigo para empacotar a imagem (criar um. azpkg) e carregá-la no Marketplace do hub de Azure Stack.Follow the instructions in this article to package the image (create an .azpkg) and upload it to the Azure Stack Hub Marketplace.

Criar um item do MarketplaceCreate a Marketplace item

Para criar um item do Marketplace personalizado, faça o seguinte:To create a custom marketplace item, do the following:

  1. Baixe a ferramenta de Azure Gallery Packager e o pacote de exemplo Azure Stack Galeria de hubs.Download the Azure Gallery Packager tool and the sample Azure Stack Hub gallery package. Este download inclui modelos de VM personalizados.This download includes custom VM templates. Extraia o arquivo. zip e, na pasta VMs personalizadas, você pode usar os modelos do Linux ou do Windows que estão disponíveis.Extract the .zip file, and under the folder Custom VMs, you can use either the Linux or the Windows templates that are available. Você pode optar por reutilizar os modelos predefinidos e modificar os respectivos parâmetros com os detalhes do produto do item que será exibido no portal do hub de Azure Stack.You can decide to re-use the pre-made templates and modify the respective parameters with the product details of the item that you will show on your Azure Stack Hub portal. Ou, você pode simplesmente reutilizar o arquivo. azpkg disponível e ignorar as etapas a seguir para personalizar seu próprio pacote da galeria.Or, you can simply re-use the .azpkg file available and skip the following steps to customize your own gallery package.

  2. Crie um modelo de Azure Resource Manager ou use nossos modelos de exemplo para Windows/Linux.Create an Azure Resource Manager template or use our sample templates for Windows/Linux. Esses modelos de exemplo são fornecidos no arquivo. zip da ferramenta do packager que você baixou na etapa 1.These sample templates are provided in the packager tool .zip file you downloaded in step 1. Você pode usar o modelo e alterar os campos de texto, ou pode baixar um modelo pré-configurado do GitHub.You can either use the template and change the text fields, or you can download a pre-configured template from GitHub. Para obter mais informações sobre modelos de Azure Resource Manager, consulte Azure Resource Manager modelos.For more information about Azure Resource Manager templates, see Azure Resource Manager templates.

  3. O pacote da Galeria deve conter a seguinte estrutura:The Gallery package should contain the following structure:

    Captura de tela da estrutura do pacote da Galeria

    A estrutura do arquivo de modelos de implantação aparece da seguinte maneira:The deployment templates file structure appears as follows:

    Captura de tela da estrutura modelos de implantação

  4. Substitua os valores realçados a seguir (aqueles com números) na Manifest.jsno modelo pelo valor que você forneceu ao carregar a imagem personalizada.Replace the following highlighted values (those with numbers) in the Manifest.json template with the value that you provided when uploading your custom image.

    Observação

    Nunca codifique os segredos como chaves de produto, senha ou qualquer informação de identificação do cliente no modelo de Azure Resource Manager.Never hard code any secrets such as product keys, password, or any customer identifiable information in the Azure Resource Manager template. Os arquivos JSON de modelo podem ser acessados sem a necessidade de autenticação depois de publicados na galeria.Template JSON files are accessible without the need for authentication once published in the gallery. Armazene todos os segredos no Key Vault e chame-os de dentro do modelo.Store all secrets in Key Vault and call them from within the template.

    É recomendável que, antes de publicar seu próprio modelo personalizado, você tente publicar o exemplo no estado em que se encontra e verifique se ele funciona em seu ambiente.It's recommended that before publishing your own custom template, you try to publish the sample as-is and make sure it works in your environment. Depois de verificar se essa etapa funciona, exclua o exemplo da galeria e faça alterações iterativas até ficar satisfeito com o resultado.Once you've verified this step works, then delete the sample from gallery and make iterative changes until you are satisfied with the result.

    O modelo a seguir é um exemplo de Manifest.jsno arquivo:The following template is a sample of the Manifest.json file:

    {
       "$schema": "https://gallery.azure.com/schemas/2015-10-01/manifest.json#",
       "name": "Test", (1)
       "publisher": "<Publisher name>", (2)
       "version": "<Version number>", (3)
       "displayName": "ms-resource:displayName", (4)
       "publisherDisplayName": "ms-resource:publisherDisplayName", (5)
       "publisherLegalName": "ms-resource:publisherDisplayName", (6)
       "summary": "ms-resource:summary",
       "longSummary": "ms-resource:longSummary",
       "description": "ms-resource:description",
       "longDescription": "ms-resource:description",
       "links": [
        { "displayName": "ms-resource:documentationLink", "uri": "http://go.microsoft.com/fwlink/?LinkId=532898" }
        ],
       "artifacts": [
          {
             "isDefault": true
          }
       ],
       "images": [{
          "context": "ibiza",
          "items": [{
             "id": "small",
             "path": "icons\\Small.png", (7)
             "type": "icon"
             },
             {
                "id": "medium",
                "path": "icons\\Medium.png",
                "type": "icon"
             },
             {
                "id": "large",
                "path": "icons\\Large.png",
                "type": "icon"
             },
             {
                "id": "wide",
                "path": "icons\\Wide.png",
                "type": "icon"
             }]
        }]
    }
    

    A lista a seguir explica os valores numerados anteriores no modelo de exemplo:The following list explains the preceding numbered values in the example template:

    • (1)-o nome da oferta.(1) - The name of the offer.
    • (2)-o nome do Publicador, sem um espaço.(2) - The name of the publisher, without a space.
    • (3)-a versão do modelo, sem um espaço.(3) - The version of your template, without a space.
    • (4)-o nome que os clientes veem.(4) - The name that customers see.
    • (5)-o nome do editor que os clientes veem.(5) - The publisher name that customers see.
    • (6)-o nome legal do editor.(6) - The publisher legal name.
    • (7)-o caminho e o nome de cada ícone.(7) - The path and name for each icon.
  5. Para todos os campos referentes ao MS-Resource, você deve alterar os valores apropriados dentro das cadeias de caracteres/resources.jsno arquivo:For all fields referring to ms-resource, you must change the appropriate values inside the strings/resources.json file:

    {
    "displayName": "<OfferName.PublisherName.Version>",
    "publisherDisplayName": "<Publisher name>",
    "summary": "Create a simple VM",
    "longSummary": "Create a simple VM and use it",
    "description": "<p>This is just a sample of the type of description you could create for your gallery item!</p><p>This is a second paragraph.</p>",
    "documentationLink": "Documentation"
    }
    
  6. Para garantir que o recurso possa ser implantado com êxito, teste o modelo com as APIs do hub de Azure Stack.To ensure that the resource can be deployed successfully, test the template with the Azure Stack Hub APIs.

  7. Se seu modelo se basear em uma imagem de máquina virtual (VM), siga as instruções para Adicionar uma imagem de VM ao Hub Azure Stack.If your template relies on a virtual machine (VM) image, follow the instructions to add a VM image to Azure Stack Hub.

  8. Salve seu modelo de Azure Resource Manager na pasta /contoso.TodoList/DeploymentTemplates/Save your Azure Resource Manager template in the /Contoso.TodoList/DeploymentTemplates/ folder.

  9. Escolha os ícones e o texto para o item do Marketplace.Choose the icons and text for your Marketplace item. Adicione ícones à pasta ícones e adicione texto ao arquivo de recursos na pasta cadeias de caracteres .Add icons to the Icons folder, and add text to the resources file in the Strings folder. Use a Convenção de nomenclatura pequena, média, grande e ampla para ícones.Use the small, medium, large, and wide naming convention for icons. Consulte a referência da interface do usuário do item do Marketplace para obter uma descrição detalhada desses tamanhos.See the Marketplace item UI reference for a detailed description of these sizes.

    Observação

    Todos os quatro tamanhos de ícone (pequeno, médio, grande, largo) são necessários para a criação correta do item do Marketplace.All four icon sizes (small, medium, large, wide) are required for building the Marketplace item correctly.

  10. Para obter mais edições para Manifest.jsem, consulte referência: item do Marketplace manifest.jsativado.For any further edits to Manifest.json, see Reference: Marketplace item manifest.json.

  11. Quando terminar de modificar os arquivos, converta-o em um arquivo. azpkg.When you finish modifying your files, convert it to an .azpkg file. Você executa a conversão usando a ferramenta de AzureGallery.exe e o pacote de exemplo da galeria que você baixou anteriormente.You perform the conversion using the AzureGallery.exe tool and the sample gallery package you downloaded previously. Execute o seguinte comando:Run the following command:

    .\AzureGallery.exe package -m c:\<path>\<gallery package name>\manifest.json -o c:\Temp
    

    Observação

    O caminho de saída pode ser qualquer caminho que você escolher e não precisa estar na unidade C:.The output path can be any path you choose, and does not have to be under the C: drive. No entanto, o caminho completo para o manifest.jsno arquivo, e o pacote de saída, deve existir.However, the full path to both the manifest.json file, and the output package, must exist. Por exemplo, se o caminho de saída for C:\<path>\galleryPackageName.azpkg , a pasta C:\<path> deverá existir.For example, if the output path is C:\<path>\galleryPackageName.azpkg, the folder C:\<path> must exist.

Publicar um item do marketplacePublish a Marketplace item

  1. Use o PowerShell ou Gerenciador de Armazenamento do Azure para carregar o item do Marketplace (. azpkg) no armazenamento de BLOBs do Azure.Use PowerShell or Azure Storage Explorer to upload your Marketplace item (.azpkg) to Azure Blob storage. Você pode carregar no armazenamento de Hub de Azure Stack local ou carregar no armazenamento do Azure, que é um local temporário para o pacote.You can upload to local Azure Stack Hub storage or upload to Azure Storage, which is a temporary location for the package. Verifique se o blob está acessível publicamente.Make sure that the blob is publicly accessible.

  2. Para importar o pacote da galeria para o Hub de Azure Stack, a primeira etapa é conectar-se remotamente (RDP) à VM do cliente, para copiar o arquivo que você acabou de criar para o Hub de Azure Stack.To import the gallery package into Azure Stack Hub, the first step is to remotely connect (RDP) to the client VM, in order to copy the file you just created to your Azure Stack Hub.

  3. Adicione um contexto:Add a context:

    $ArmEndpoint = "https://adminmanagement.local.azurestack.external"
    Add-AzEnvironment -Name "AzureStackAdmin" -ArmEndpoint $ArmEndpoint
    Add-AzAccount -EnvironmentName "AzureStackAdmin"
    
  4. Execute o script a seguir para importar o recurso para a Galeria:Run the following script to import the resource into your gallery:

    Add-AzsGalleryItem -GalleryItemUri `
    https://sample.blob.core.windows.net/<temporary blob name>/<offerName.publisherName.version>.azpkg -Verbose
    
  5. Verifique se você tem uma conta de armazenamento válida que esteja disponível para armazenar seu item.Verify that you have a valid Storage account that is available to store your item. Você pode obter o GalleryItemURI valor no portal do administrador do hub de Azure Stack.You can get the GalleryItemURI value from the Azure Stack Hub administrator portal. Selecione conta de armazenamento-> Propriedades de blob-> URL, com a extensão. azpkg.Select Storage account -> Blob Properties -> URL, with the extension .azpkg. A conta de armazenamento é apenas para uso temporário, a fim de publicar no Marketplace.The storage account is only for temporary use, in order to publish to the marketplace.

    Depois de concluir o pacote da galeria e carregá-lo usando Add-AzsGalleryItem, sua VM personalizada agora deverá aparecer no Marketplace, bem como na exibição criar um recurso .After completing your gallery package and uploading it using Add-AzsGalleryItem, your custom VM should now appear on the Marketplace as well as in the Create a resource view. Observe que o pacote da Galeria personalizada não está visível no Gerenciamento do Marketplace.Note that the custom gallery package is not visible in Marketplace Management.

    Item do Marketplace personalizado carregadoCustom marketplace item uploaded

  6. Depois que o item for publicado com êxito no Marketplace, você poderá excluir o conteúdo da conta de armazenamento.Once your item has been successfully published to the marketplace, you can delete the content from the storage account.

    Todos os artefatos da Galeria padrão e seus artefatos de galeria personalizados agora estão acessíveis sem autenticação nas seguintes URLs:All default gallery artifacts and your custom gallery artifacts are now accessible without authentication under the following URLs:

    • https://galleryartifacts.adminhosting.[Region].[externalFQDN]/artifact/20161101/[TemplateName]/DeploymentTemplates/Template.json
    • https://galleryartifacts.hosting.[Region].[externalFQDN]/artifact/20161101/[TemplateName]/DeploymentTemplates/Template.json
  7. Você pode remover um item do Marketplace usando o cmdlet Remove-AzGalleryItem .You can remove a Marketplace item by using the Remove-AzGalleryItem cmdlet. Por exemplo: For example:

    Remove-AzsGalleryItem -Name <Gallery package name> -Verbose
    

Observação

A interface do usuário do Marketplace pode mostrar um erro após a remoção de um item.The Marketplace UI may show an error after you remove an item. Para corrigir o erro, clique em configurações no Portal.To fix the error, click Settings in the portal. Em seguida, selecione descartar modificações em personalização do portal.Then, select Discard modifications under Portal customization.

Referência: item do Marketplace manifest.jsemReference: Marketplace item manifest.json

Informações de identidadeIdentity information

NomeName ObrigatórioRequired TypeType RestriçõesConstraints DescriçãoDescription
NomeName XX StringString [A-Za-z0-9]+[A-Za-z0-9]+
PublicadorPublisher XX StringString [A-Za-z0-9]+[A-Za-z0-9]+
VersãoVersion XX StringString SemVer v2SemVer v2

MetadadosMetadata

NomeName ObrigatórioRequired TypeType RestriçõesConstraints DescriçãoDescription
DisplayNameDisplayName XX StringString Recomendação de 80 caracteresRecommendation of 80 characters O portal pode não exibir o nome do item corretamente se tiver mais de 80 caracteres.The portal might not display your item name correctly if it's longer than 80 characters.
PublisherDisplayNamePublisherDisplayName XX StringString Recomendação de 30 caracteresRecommendation of 30 characters O portal pode não exibir o nome do editor corretamente se tiver mais de 30 caracteres.The portal might not display your publisher name correctly if it's longer than 30 characters.
PublisherLegalNamePublisherLegalName XX StringString Máximo de 256 caracteresMaximum of 256 characters
ResumoSummary XX StringString 60 a 100 caracteres60 to 100 characters
LongSummaryLongSummary XX StringString 140 a 256 caracteres140 to 256 characters Ainda não aplicável no Hub Azure Stack.Not yet applicable in Azure Stack Hub.
DescriçãoDescription XX HTMLHTML 500 a 5.000 caracteres500 to 5,000 characters

ImagensImages

O Marketplace usa os seguintes ícones:The Marketplace uses the following icons:

NomeName LarguraWidth AlturaHeight ObservaçõesNotes
AmplaWide 255 px255 px 115 px115 px Sempre necessárioAlways required
GrandeLarge 115 px115 px 115 px115 px Sempre necessárioAlways required
MédioMedium 90 px90 px 90 px90 px Sempre necessárioAlways required
PequenoSmall 40 px40 px 40 px40 px Sempre necessárioAlways required
Captura de telaScreenshot 533 px533 px 324 px324 px OpcionalOptional

CategoriasCategories

Cada item do Marketplace deve ser marcado com uma categoria que identifica onde o item aparece na interface do usuário do Portal.Each Marketplace item should be tagged with a category that identifies where the item appears on the portal UI. Você pode escolher uma das categorias existentes no Hub de Azure Stack (computação, dados + armazenamento e assim por diante) ou escolher uma nova.You can choose one of the existing categories in Azure Stack Hub (Compute, Data + Storage, and so on) or choose a new one.

Cada item do Marketplace pode incluir vários links para conteúdo adicional.Each Marketplace item can include various links to additional content. Os links são especificados como uma lista de nomes e URIs:The links are specified as a list of names and URIs:

NomeName ObrigatórioRequired TypeType RestriçõesConstraints DescriçãoDescription
DisplayNameDisplayName XX StringString Máximo de 64 caracteres.Maximum of 64 characters.
UriUri XX URIURI

Propriedades adicionaisAdditional properties

Além dos metadados anteriores, os autores do Marketplace podem fornecer dados de pares de chave/valor personalizados no seguinte formato:In addition to the preceding metadata, Marketplace authors can provide custom key/value pair data in the following form:

NomeName ObrigatórioRequired TypeType RestriçõesConstraints DescriçãoDescription
DisplayNameDisplayName XX StringString Máximo de 25 caracteres.Maximum of 25 characters.
ValorValue XX StringString Máximo de 30 caracteres.Maximum of 30 characters.

Limpeza de HTMLHTML sanitization

Para qualquer campo que permita HTML, os seguintes elementos e atributos são permitidos:For any field that allows HTML, the following elements and attributes are allowed:

h1, h2, h3, h4, h5, p, ol, ul, li, a[target|href], br, strong, em, b, i

Referência: interface do usuário do item do MarketplaceReference: Marketplace item UI

Os ícones e o texto dos itens do Marketplace, como visto no portal do hub de Azure Stack, são os seguintes.Icons and text for Marketplace items as seen in the Azure Stack Hub portal are as follows.

Folha CriarCreate blade

Criar folha — Azure Stack itens do Marketplace do Hub

Folha de detalhes do item do MarketplaceMarketplace item details blade

Folha detalhes do item do Marketplace do hub de Azure Stack

Próximas etapasNext steps