Tworzenie i publikowanie niestandardowego elementu portalu Azure Stack HubCreate and publish a custom Azure Stack Hub Marketplace item

Każdy element opublikowany w witrynie Centrum Azure Stack Hub używa formatu pakietu galerii platformy Azure (. azpkg).Every item published to the Azure Stack Hub Marketplace uses the Azure Gallery Package (.azpkg) format. Narzędzie Azure Gallery Packager umożliwia utworzenie niestandardowego pakietu galerii platformy Azure, który można przekazać do portalu Azure Stack Hub, który można następnie pobrać dla użytkowników.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. Proces wdrażania używa szablonu Azure Resource Manager.The deployment process uses an Azure Resource Manager template.

Elementy portalu MarketplaceMarketplace items

W przykładach w tym artykule przedstawiono sposób tworzenia jednej oferty portalu Marketplace w witrynie sieci VMNETWORK typu Windows lub Linux.The examples in this article show how to create a single VM Marketplace offer, of type Windows or Linux.

Wymagania wstępnePrerequisites

Przed utworzeniem elementu Marketplace maszyny wirtualnej wykonaj następujące czynności:Before creating the VM marketplace item, do the following:

  1. Przekaż niestandardowy obraz maszyny wirtualnej do portalu Azure Stack Hub, postępując zgodnie z instrukcjami w temacie Dodawanie obrazu maszyny wirtualnej do centrum 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. Postępuj zgodnie z instrukcjami w tym artykule, aby spakować obraz (utworzyć plik. azpkg) i przekazać go do portalu Azure Stack Hub.Follow the instructions in this article to package the image (create an .azpkg) and upload it to the Azure Stack Hub Marketplace.

Tworzenie elementu portalu MarketplaceCreate a Marketplace item

Aby utworzyć niestandardowy element portalu Marketplace, wykonaj następujące czynności:To create a custom marketplace item, do the following:

  1. Pobierz narzędzie Azure Gallery Packager i przykład Azure Stack pakiet galerii centrów.Download the Azure Gallery Packager tool and the sample Azure Stack Hub gallery package. To pobranie obejmuje niestandardowe szablony maszyn wirtualnych.This download includes custom VM templates. Wyodrębnij plik zip i w obszarze niestandardowe maszyny wirtualne folderu możesz użyć dostępnych szablonów systemu Linux lub Windows.Extract the .zip file, and under the folder Custom VMs, you can use either the Linux or the Windows templates that are available. Możesz zdecydować się na ponowne użycie wstępnie utworzonych szablonów i zmodyfikować odpowiednie parametry, podając szczegóły produktu elementu, który będzie wyświetlany w portalu Azure Stack Hub.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. Można też po prostu ponownie użyć pliku. azpkg i pominąć poniższe kroki, aby dostosować swój własny pakiet galerii.Or, you can simply re-use the .azpkg file available and skip the following steps to customize your own gallery package.

  2. Utwórz szablon Azure Resource Manager lub Użyj naszych przykładowych szablonów dla systemu Windows/Linux.Create an Azure Resource Manager template or use our sample templates for Windows/Linux. Te przykładowe szablony są dostępne w pliku narzędzia Pakowarka. zip pobranym w kroku 1.These sample templates are provided in the packager tool .zip file you downloaded in step 1. Możesz użyć szablonu i zmienić pola tekstowe lub pobrać wstępnie skonfigurowany szablon z usługi GitHub.You can either use the template and change the text fields, or you can download a pre-configured template from GitHub. Aby uzyskać więcej informacji na temat szablonów Azure Resource Manager, zobacz szablony Azure Resource Manager.For more information about Azure Resource Manager templates, see Azure Resource Manager templates.

  3. Pakiet galerii powinien zawierać następującą strukturę:The Gallery package should contain the following structure:

    Zrzut ekranu przedstawiający strukturę pakietu galerii

    Struktura pliku szablonów wdrożenia zostanie wyświetlona w następujący sposób:The deployment templates file structure appears as follows:

    Zrzut ekranu przedstawiający strukturę szablonów wdrożenia

  4. Zastąp następujące wyróżnione wartości (te z liczbami) w Manifest.jsszablonu o wartości podanej podczas przekazywania obrazu niestandardowego.Replace the following highlighted values (those with numbers) in the Manifest.json template with the value that you provided when uploading your custom image.

    Uwaga

    Nigdy nie należy nakodować żadnych wpisów tajnych, takich jak klucze produktów, hasło i informacje o identyfikacji klienta w szablonie Azure Resource Manager.Never hard code any secrets such as product keys, password, or any customer identifiable information in the Azure Resource Manager template. Pliki JSON szablonu są dostępne bez konieczności uwierzytelniania po opublikowaniu w galerii.Template JSON files are accessible without the need for authentication once published in the gallery. Przechowuj wszystkie wpisy tajne w Key Vault i Wywołaj je z poziomu szablonu.Store all secrets in Key Vault and call them from within the template.

    Zaleca się, aby przed opublikowaniem własnego szablonu niestandardowego próbować opublikować przykład jako-is i upewnić się, że działa on w Twoim środowisku.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. Po zweryfikowaniu tego kroku należy usunąć próbkę z galerii i wprowadzić iteracyjne zmiany do momentu, gdy wynik zostanie osiągnięty.Once you've verified this step works, then delete the sample from gallery and make iterative changes until you are satisfied with the result.

    Następujący szablon jest przykładem Manifest.jsw pliku: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"
             }]
        }]
    }
    

    Poniższa lista wyjaśnia poprzednie wartości numerowane w przykładowym szablonie:The following list explains the preceding numbered values in the example template:

    • (1) — nazwa oferty.(1) - The name of the offer.
    • (2) — nazwa wydawcy, bez spacji.(2) - The name of the publisher, without a space.
    • (3) — wersja szablonu bez spacji.(3) - The version of your template, without a space.
    • (4) — nazwa wyświetlana przez klientów.(4) - The name that customers see.
    • (5) — nazwa wydawcy widoczna dla klientów.(5) - The publisher name that customers see.
    • (6) — nazwa prawna wydawcy.(6) - The publisher legal name.
    • (7) — ścieżka i nazwa dla każdej ikony.(7) - The path and name for each icon.
  5. Dla wszystkich pól odnoszących się do usługi MS-Resource należy zmienić odpowiednie wartości wewnątrz ciągów/resources.jsw pliku: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. Aby upewnić się, że można pomyślnie wdrożyć zasób, przetestuj go za pomocą interfejsów API centrum Azure Stack.To ensure that the resource can be deployed successfully, test the template with the Azure Stack Hub APIs.

  7. Jeśli szablon korzysta z obrazu maszyny wirtualnej (VM), postępuj zgodnie z instrukcjami, aby dodać obraz maszyny wirtualnej do centrum 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. Zapisz szablon Azure Resource Manager w folderze /contoso.todolist/DeploymentTemplates/ .Save your Azure Resource Manager template in the /Contoso.TodoList/DeploymentTemplates/ folder.

  9. Wybierz ikony i tekst dla elementu witryny Marketplace.Choose the icons and text for your Marketplace item. Dodaj ikony do folderu ikon i Dodaj tekst do pliku resources w folderze Strings .Add icons to the Icons folder, and add text to the resources file in the Strings folder. Użyj małych, średnich, dużych i szerokich konwencji nazewnictwa dla ikon.Use the small, medium, large, and wide naming convention for icons. Szczegółowy opis tych rozmiarów można znaleźć w dokumentacji dotyczącej interfejsu użytkownika elementu portalu Marketplace .See the Marketplace item UI reference for a detailed description of these sizes.

    Uwaga

    Wszystkie cztery rozmiary ikon (małe, średnie, duże, szerokie) są wymagane do poprawnego kompilowania elementu witryny Marketplace.All four icon sizes (small, medium, large, wide) are required for building the Marketplace item correctly.

  10. Aby dowiedzieć się więcej o dalszych zmianach Manifest.jsw, zobacz temat Reference: Item Marketplace manifest.json.For any further edits to Manifest.json, see Reference: Marketplace item manifest.json.

  11. Po zakończeniu modyfikowania plików, przekonwertuj je na plik. azpkg.When you finish modifying your files, convert it to an .azpkg file. Konwersję można wykonać przy użyciu narzędzia AzureGallery.exe i pobranego wcześniej pakietu galerii przykładów.You perform the conversion using the AzureGallery.exe tool and the sample gallery package you downloaded previously. Uruchom następujące polecenie:Run the following command:

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

    Uwaga

    Ścieżka wyjściowa może być dowolną wybraną ścieżką i nie musi znajdować się na dysku C:.The output path can be any path you choose, and does not have to be under the C: drive. Jednak musi istnieć pełna ścieżka do pliku manifest.jsi pakietu wyjściowego.However, the full path to both the manifest.json file, and the output package, must exist. Na przykład, jeśli ścieżka wyjściowa to C:\<path>\galleryPackageName.azpkg , folder C:\<path> musi istnieć.For example, if the output path is C:\<path>\galleryPackageName.azpkg, the folder C:\<path> must exist.

Publikowanie elementu portalu MarketplacePublish a Marketplace item

  1. Użyj programu PowerShell lub Eksplorator usługi Azure Storage, aby przekazać element witryny Marketplace (. azpkg) do usługi Azure Blob Storage.Use PowerShell or Azure Storage Explorer to upload your Marketplace item (.azpkg) to Azure Blob storage. Można przekazać do magazynu lokalnego Azure Stack Hub lub przekazać do usługi Azure Storage, która jest tymczasową lokalizacją pakietu.You can upload to local Azure Stack Hub storage or upload to Azure Storage, which is a temporary location for the package. Upewnij się, że obiekt BLOB jest dostępny publicznie.Make sure that the blob is publicly accessible.

  2. Aby zaimportować pakiet galerii do centrum Azure Stack, pierwszym krokiem jest nawiązanie połączenia zdalnego (RDP) z maszyną wirtualną klienta w celu skopiowania właśnie utworzonego pliku do centrum 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. Dodaj kontekst:Add a context:

    $ArmEndpoint = "https://adminmanagement.local.azurestack.external"
    Add-AzEnvironment -Name "AzureStackAdmin" -ArmEndpoint $ArmEndpoint
    Connect-AzAccount -EnvironmentName "AzureStackAdmin"
    
  4. Uruchom następujący skrypt, aby zaimportować zasób do galerii: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. Sprawdź, czy masz prawidłowe konto magazynu, które jest dostępne do przechowania Twojego elementu.Verify that you have a valid Storage account that is available to store your item. Wartość można uzyskać GalleryItemURI z portalu administratora centrum Azure Stack.You can get the GalleryItemURI value from the Azure Stack Hub administrator portal. Wybierz pozycję konto magazynu — > właściwości obiektu BLOB — > adres URL z rozszerzeniem azpkg.Select Storage account -> Blob Properties -> URL, with the extension .azpkg. Konto magazynu służy tylko do tymczasowego użytku w celu opublikowania w portalu Marketplace.The storage account is only for temporary use, in order to publish to the marketplace.

    Po ukończeniu pakietu galerii i przekazaniu go przy użyciu polecenia Add-AzsGalleryItem Twoja niestandardowa maszyna wirtualna powinna teraz być wyświetlana w portalu Marketplace, a także w widoku Tworzenie zasobów .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. Należy zauważyć, że niestandardowy pakiet galerii nie jest widoczny w obszarze zarządzania w portalu Marketplace.Note that the custom gallery package is not visible in Marketplace Management.

    Przekazano niestandardowy element portalu MarketplaceCustom marketplace item uploaded

  6. Po pomyślnym opublikowaniu elementu w portalu Marketplace możesz usunąć zawartość z konta magazynu.Once your item has been successfully published to the marketplace, you can delete the content from the storage account.

    Wszystkie domyślne artefakty galerii i artefakty galerii niestandardowych są teraz dostępne bez uwierzytelniania w ramach następujących adresów URL: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. Element portalu Marketplace można usunąć za pomocą polecenia cmdlet Remove-AzGalleryItem .You can remove a Marketplace item by using the Remove-AzGalleryItem cmdlet. Na przykład:For example:

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

Uwaga

Interfejs użytkownika portalu Marketplace może wyświetlić błąd po usunięciu elementu.The Marketplace UI may show an error after you remove an item. Aby naprawić ten błąd, kliknij pozycję Ustawienia w portalu.To fix the error, click Settings in the portal. Następnie wybierz pozycję Odrzuć modyfikacje w obszarze Dostosowywanie portalu.Then, select Discard modifications under Portal customization.

Odwołanie: manifest.jselementu witryny MarketplaceReference: Marketplace item manifest.json

Informacje o tożsamościIdentity information

NazwaName WymaganyRequired TypType OgraniczeniaConstraints OpisDescription
NazwaName XX CiągString [A-za-Z0-9] +[A-Za-z0-9]+
PublisherPublisher XX CiągString [A-za-Z0-9] +[A-Za-z0-9]+
WersjaVersion XX CiągString SemVer v2SemVer v2

MetadaneMetadata

NazwaName WymaganyRequired TypType OgraniczeniaConstraints OpisDescription
Nazwa wyświetlanaDisplayName XX CiągString Zalecenie dotyczące 80 znakówRecommendation of 80 characters W portalu może nie być wyświetlana prawidłowa nazwa elementu, jeśli jest dłuższa niż 80 znaków.The portal might not display your item name correctly if it's longer than 80 characters.
PublisherDisplayNamePublisherDisplayName XX CiągString Zalecenie o 30 znakówRecommendation of 30 characters W portalu może nie być wyświetlana prawidłowa nazwa wydawcy, jeśli jest dłuższa niż 30 znaków.The portal might not display your publisher name correctly if it's longer than 30 characters.
PublisherLegalNamePublisherLegalName XX CiągString Maksymalnie 256 znakówMaximum of 256 characters
PodsumowanieSummary XX CiągString od 60 do 100 znaków60 to 100 characters
LongSummaryLongSummary XX CiągString od 140 do 256 znaków140 to 256 characters Jeszcze nie dotyczy centrum Azure Stack.Not yet applicable in Azure Stack Hub.
OpisDescription XX HTMLHTML od 500 do 5 000 znaków500 to 5,000 characters

ObrazyImages

W witrynie Marketplace są stosowane następujące ikony:The Marketplace uses the following icons:

NazwaName WidthWidth HeightHeight UwagiNotes
SzerokooćWide 255 pikseli255 px 115 pikseli115 px Zawsze wymaganeAlways required
DużyLarge 115 pikseli115 px 115 pikseli115 px Zawsze wymaganeAlways required
Śred.Medium 90 pikseli90 px 90 pikseli90 px Zawsze wymaganeAlways required
MałySmall 40 pikseli40 px 40 pikseli40 px Zawsze wymaganeAlways required
Zrzut ekranuScreenshot 533 pikseli533 px 324 pikseli324 px OpcjonalneOptional

KategorieCategories

Każdy element portalu Marketplace powinien być oznaczony kategorią, która identyfikuje miejsce wyświetlania elementu w interfejsie użytkownika portalu.Each Marketplace item should be tagged with a category that identifies where the item appears on the portal UI. Możesz wybrać jedną z istniejących kategorii w centrum Azure Stack (obliczenia, dane i Magazyn itd.) lub wybrać nowe.You can choose one of the existing categories in Azure Stack Hub (Compute, Data + Storage, and so on) or choose a new one.

Każdy element portalu Marketplace może zawierać różne linki do dodatkowej zawartości.Each Marketplace item can include various links to additional content. Linki są określone jako lista nazw i identyfikatorów URI:The links are specified as a list of names and URIs:

NazwaName WymaganyRequired TypType OgraniczeniaConstraints OpisDescription
Nazwa wyświetlanaDisplayName XX CiągString Maksymalnie 64 znaków.Maximum of 64 characters.
AdresuUri XX URIURI

Dodatkowe właściwościAdditional properties

Oprócz powyższych metadanych autorzy portalu Marketplace mogą udostępniać niestandardowe dane pary klucz/wartość w następującej postaci:In addition to the preceding metadata, Marketplace authors can provide custom key/value pair data in the following form:

NazwaName WymaganyRequired TypType OgraniczeniaConstraints OpisDescription
Nazwa wyświetlanaDisplayName XX CiągString Maksymalnie 25 znaków.Maximum of 25 characters.
WartośćValue XX CiągString Maksymalnie 30 znaków.Maximum of 30 characters.

Oczyszczanie HTMLHTML sanitization

Dla każdego pola, które zezwala na kod HTML, dozwolone są następujące elementy i atrybuty: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

Odwołanie: interfejs użytkownika elementu witryny MarketplaceReference: Marketplace item UI

Poniżej przedstawiono ikony i tekst dla elementów portalu Marketplace widzianych w centrum Azure Stack Hub.Icons and text for Marketplace items as seen in the Azure Stack Hub portal are as follows.

Blok tworzeniaCreate blade

Tworzenie bloku — elementy portalu Azure Stack Hub

Blok szczegółów elementu witryny MarketplaceMarketplace item details blade

Blok szczegółów elementu portalu Azure Stack Hub

Następne krokiNext steps