Создание и публикация пользовательского элемента Azure Stack Hub Marketplace

Каждый элемент, опубликованный в Azure Stack Hub Marketplace, доступен в формате пакета коллекции Azure (AZPKG-файл). Средство Azure Gallery Packager позволяет создать пользовательский пакет коллекции Azure, который можно отправить в Azure Stack Hub Marketplace для последующего скачивания пользователями. В процессе развертывания используется шаблон Azure Resource Manager.

Элементы Marketplace

Примеры в этой статье показывают, как создать в Marketplace одно предложение виртуальной машины типа Windows или Linux.

Предварительные требования

Перед созданием элемента Marketplace виртуальной машины сделайте следующее:

  1. Upload пользовательского образа виртуальной машины на портал Azure Stack Hub, следуя инструкциям в разделе "Добавление образа виртуальной машины в Azure Stack Hub".
  2. Следуйте инструкциям в этой статье, чтобы упаковать образ (создать azpkg) и отправить его в Azure Stack Hub Marketplace.

Создание элемента Marketplace

Чтобы создать пользовательский элемент Marketplace, выполните следующие действия.

  1. Скачайте средство packager коллекции Azure:

    Gallery packager

  2. Средство содержит примеры пакетов, которые находятся в формате AZPKG и должны быть извлечены первым. Вы можете переименовать расширения файлов из azpkg в ".zip" или использовать средство архивации по своему усмотрению:

    Samples packages

  3. После извлечения файл .zip содержит доступные шаблоны Linux или Windows Azure Resource Manager. Вы можете повторно использовать готовые шаблоны Resource Manager и изменить соответствующие параметры с подробными сведениями о продукте элемента, который будет отображаться на портале Azure Stack Hub. Кроме того, можно повторно использовать AZPKG-файл и пропустить следующие действия, чтобы настроить собственный пакет коллекции.

  4. Создайте шаблон Azure Resource Manager или выберите готовый пример шаблона для Windows или Linux. Эти примеры шаблонов размещены в ZIP-файле средства, который вы скачали на шаге 1. Вы можете изменить текстовые значения в полях шаблона либо скачать уже настроенный шаблон с сайта GitHub. Дополнительную информацию о шаблонах Resource Manager см. в статье Описание структуры и синтаксиса шаблонов Azure Resource Manager.

  5. Пакет коллекции должен иметь такую структуру:

    Screenshot of the Gallery package structure

  6. Замените следующие выделенные значения (числами) в шаблоне Manifest.json значением, указанным при отправке пользовательского изображения.

    Примечание

    В шаблоне Azure Resource Manager нельзя жестко задавать секреты, такие как ключи продуктов, пароли или персональные данные клиентов. После публикации в коллекции JSON-файлы шаблонов доступны без аутентификации. Храните все секреты в хранилище Key Vault и обращайтесь к ним из шаблона.

    Перед публикацией собственного настраиваемого шаблона рекомендуется опубликовать пример "как есть" и убедиться, что он работает в вашей среде. Убедившись, что пример работает правильно, удалите его из коллекции и вносите итеративные изменения, пока не будете удовлетворены результатом.

    Ниже показан пример файла Manifest.json.

    {
       "$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"
             }]
        }]
    }
    

    В следующем списке описаны пронумерованные значения в примере шаблона выше.

    • (1) — имя предложения.
    • (2) — имя издателя без пробела.
    • (3) — версия шаблона без пробела.
    • (4) — имя, которое видят клиенты.
    • (5) — имя издателя, которое видят клиенты.
    • (6) — юридическое имя издателя.
    • (7) — путь и имя для каждого значка.
  7. Для всех полей, в которых упоминается ms-resource, необходимо изменить соответствующие значения в файле strings/resources.json:

    {
    "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"
    }
    
  8. Шаблоны развертывания имеют следующую структуру файлов:

    Deployment templates

    Замените значения изображения в файле createuidefinition.json значением, указанным при отправке пользовательского образа.

  9. Проверьте, можно ли с помощью API-интерфейсов Azure Stack Hub развернуть ресурс из этого шаблона.

  10. Если шаблон использует образ виртуальной машины, добавьте этот образ виртуальной машины в Azure Stack Hub.

  11. Сохраните шаблон Azure Resource Manager в папке /Contoso.TodoList/DeploymentTemplates/ .

  12. Выберите значки и текст для элемента Marketplace. Значки добавляются в папку Icons, а текст — в файл resources, расположенный в папке Strings. Для значков следуйте соглашению об именовании мелких, обычных, крупных и огромных значков. Подробное описание этих размеров см. в разделе Справочные материалы. Пользовательский интерфейс элемента Marketplace.

    Примечание

    Для правильной сборки элемента Marketplace нужны значки всех четырех размеров (малый, средний, крупный и широкий).

  13. Дополнительные изменения в Manifest.json см. в справочнике по элементу Marketplace manifest.json.

  14. Завершив изменение файлов, преобразуйте их в AZPKG-файл. Преобразование выполняется с помощью средства AzureGallery.exe и скачанного ранее примера пакета коллекции. Выполните следующую команду:

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

    Примечание

    Для выходных данных можно выбрать любой путь, даже не обязательно на диске C:. Но пути к JSON-файлу манифеста и выходному пакету должны существовать в системе. Например, если путь к выходному файлу имеет значение C:\<path>\galleryPackageName.azpkg, то должна существовать папка C:\<path>.

Публикация элемента Marketplace

  1. Передайте созданный элемент Marketplace (файл AZPKG) в хранилище больших двоичных объектов Azure с помощью PowerShell или обозревателя службы хранилища Azure. Вы можете использовать локальное хранилище Azure Stack Hub или службу хранилища Azure, которая является временным хранилищем для пакета. Убедитесь, что используемый большой двоичный объект является общедоступным.

  2. Чтобы импортировать пакет коллекции в Azure Stack Hub, сначала выполните удаленное подключение (RDP) к клиентской виртуальной машине, чтобы скопировать файл, который вы только что создали в Azure Stack Hub.

  3. Добавьте контекст.

    $ArmEndpoint = "https://adminmanagement.local.azurestack.external"
    Add-AzEnvironment -Name "AzureStackAdmin" -ArmEndpoint $ArmEndpoint
    Connect-AzAccount -EnvironmentName "AzureStackAdmin"
    
  4. Выполните следующий скрипт, чтобы импортировать ресурс в коллекцию:

    Add-AzsGalleryItem -GalleryItemUri `
    https://sample.blob.core.windows.net/<temporary blob name>/<offerName.publisherName.version>.azpkg -Verbose
    

    Если при запуске Add-AzsGalleryItem возникает ошибка, возможно, установлена две версии gallery.admin модуля. Удалите все версии модуля и установите последнюю версию. Инструкции по удалению модулей PowerShell см. в статье "Удаление существующих версий модулей PowerShell Для Azure Stack Hub".

  5. Убедитесь, что у вас есть допустимая учетная запись хранения, в которой можно сохранить этот элемент. Значение GalleryItemURI можно получить на портале администрирования Azure Stack Hub. Выберите учетную запись служба хранилища —> свойства BLOB-объекта — URL-адрес> с расширением AZPKG. Учетная запись хранения используется непродложительно, только для публикации в Marketplace.

    После того, как вы подготовите пакет коллекции и отправите его командой Add-AzsGalleryItem, пользовательская виртуальная машина появится в Marketplace и в представлении Создание ресурсов. Обратите внимание, что пользовательский пакет коллекции не отображается в разделе управления Marketplace.

    Custom marketplace item uploaded

  6. После успешной публикации элемента в Marketplace можно удалить содержимое из учетной записи хранения.

    Все артефакты коллекции по умолчанию и пользовательские артефакты коллекции теперь доступны без проверки подлинности по следующим URL-адресам:

    • https://galleryartifacts.adminhosting.[Region].[externalFQDN]/artifact/20161101/[TemplateName]/DeploymentTemplates/Template.json
    • https://galleryartifacts.hosting.[Region].[externalFQDN]/artifact/20161101/[TemplateName]/DeploymentTemplates/Template.json
  7. Элемент Marketplace можно удалить с помощью командлета Remove-AzGalleryItem. Пример:

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

Примечание

После удаления элемента пользовательский интерфейс Marketplace может отобразить ошибку. Чтобы устранить эту ошибку, щелкните Параметры на портале. Затем щелкните Отменить изменения в разделе Настройка портала.

Справочные материалы. Файл manifest.json для элемента Marketplace

Сведения об удостоверении

Имя Обязательно Тип Ограничения Описание
Имя X Строка [A–Z, a–z, 0–9] +
Издатель X Строка [A–Z, a–z, 0–9] +
Версия X Строка SemVer v2

Метаданные

Имя Обязательно Тип Ограничения Описание
DisplayName X Строка Рекомендуется использовать 80 символов. Портал может неправильно отображать имя элемента, если его длина превышает 80 символов.
PublisherDisplayName X Строка Рекомендуется использовать 30 символов. Портал может неправильно отображать имя издателя, если его длина превышает 30 символов.
PublisherLegalName X Строка Не более 256 символов
Сводка X Строка 60–100 знаков.
LongSummary X Строка 140–256 знаков. Пока не применяется в Azure Stack Hub.
Описание X HTML От 500 до 5000 символов.

Изображения

В Marketplace используются следующие значки:

Имя Ширина Высота: Примечания
Широкий 255 пикселей 115 пикселей Обязательный
большой 115 пикселей 115 пикселей Обязательный
Средний 90 пикселей 90 пикселей Обязательный
Малый 40 пикселей 40 пикселей Обязательный
Снимок экрана 533 пикселя 324 пикселя Необязательно

Категории

Каждый элемент Marketplace должен снабжаться тегами категорий, которые определяют, где отображается этот элемент в пользовательском интерфейсе портала. Вы можете выбрать любую из имеющихся категорий Azure Stack Hub (Вычисления, Данные + хранилище и т. д.) или создать новую.

Каждый элемент Marketplace может содержать разные ссылки на дополнительное содержимое. Ссылки указываются в виде списка имен и универсальных кодов ресурса (URI).

Имя Обязательно Тип Ограничения Описание
DisplayName X Строка Длина не должна превышать 64 символов.
URI X URI

Дополнительные свойства

Помимо приведенных выше метаданных авторы Marketplace могут предоставить пользовательские данные в формате "ключ-значение", как показано далее.

Имя Обязательно Тип Ограничения Описание
DisplayName X Строка Длина не должна превышать 25 символов.
Значение X Строка Длина не должна превышать 30 символов.

Очистка HTML

Для всех полей, поддерживающих HTML, допускаются следующие элементы и атрибуты:

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

Справочные материалы. Пользовательский интерфейс элемента Marketplace

Для элемента Marketplace на портале Azure Stack Hub используются следующие значки и текстовые данные.

Колонка "Создание"

Create blade--Azure Stack Hub Marketplace items

Колонка информации об элементе Marketplace

Azure Stack Hub Marketplace item details blade

Дальнейшие действия