Создание и публикация пользовательского элемента 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. Отправьте пользовательский образ виртуальной машины на портал Azure Stack Hub, следуя инструкциям в разделе Добавление образа виртуальной машины в Azure Stack Hub.
  2. Следуйте инструкциям в этой статье, чтобы упаковать образ (создать azpkg) и отправить его в Azure Stack Hub Marketplace.

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

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

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

    Средство упаковки из коллекции

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

    Примеры пакетов

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

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

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

    Снимок экрана: структура пакета коллекции

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

    Шаблоны развертывания

    Замените значения изображения в файле 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.

    Пользовательский элемент Marketplace отправлен

  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 используются следующие значки и текстовые данные.

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

Колонка

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

Колонка информации об элементе Marketplace для Azure Stack Hub

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