Автоматизация развертывания приложений в 1 клик на платформе InfoboxCloud Jelastic с JPS

Цель платформы Jelastic — сделать использование сложных технологий простым и понятным. Наша цель — сократить время, которое разработчики обычно тратят на выполнение рутинных задач для повышения эффективности работы. Однако всегда найдется то, что можно сделать лучше.В этой статье мы рассмотрим решение, позволяющее автоматизировать установку приложения в один клик — Jelastic Packaging Standard (JPS). Мы опишем, как запаковать приложение в качестве готового к использованию продукта.

Jelastic Packaging Standard

Общая информация JPS — это стандарт, который может быть использован для создания шаблонов приложений, готовых для установки в Jelastic за 1 клик. В настоящий момент, система поддерживает приложения на Java, PHP и Ruby. В будущем, мы планируем добавить поддержку и других языков программирования.

JPS упрощает установку и конфигурацию приложения для конечного пользователя, управляет процессом развертывания приложения, определяет набор его свойств и конфигурацию кластера, в котором будет работать приложение. JPS также указывает количество необходимых ресурсов и пределы масштабирования для каждого контейнера в окружении.

Используя JPS, можно предложить пользователям виджет для быстрой установки приложений. Это способствует распространению приложения и росту продаж. Привлечь пользователей становится проще из-за легкости установки и настройки. Помимо этого, снижаются траты на поддержку и прочие моменты, связанные с распространением приложения.

Процесс установки с JPS Каждый установочный виджет содержит манифест приложения (или ссылку на него) с описанием топологии окружения, необходимого для корректной работы, а также инструкции по установке и настройке. Манифест JPS основан на JSON.JPS application manifestДля начала установки подготовленного приложения пользователь должен нажать на виджет и ввести действующий e-mail. На указанный адрес будет выслано письмо, по ссылке из которого нужно перейти для инициалиазии установки. Пользователь будет перенеправлен в панель управления Jelastic, где он сможет произвести подтверждение действия.

После этого Jelastic потребуется несколько минут для завершения процесса установки. Стоит отметить, что фактическая продолжительность зависит от выбранного приложения, его свойств и характеристик. Jelastic опирается на манифест и создает необходимые ноды: серверы приложений, базы данных, балансировщик нагрузки и так далее. В результате пользователь получает полностью работоспособное приложение без каких-либо ручных операций.

JPS Initiate InstallationНиже мы подробно рассмотрим техническую сторону подготовки манифеста и создания виджета. И конечно мы покажем как выглядит установка в один клик со стороны конечного пользователя.

Манифест приложения Прежде чем запаковать приложение, мы рекомендуем развернуть его в облаке Jelastic вручную и проверить, все ли работает как необходимо. Это стоит сделать, чтобы точно знать, какую конфигурацию нужно указать в манифесте.Для создания манифеста, полностью подходящего под требования JSON, можно использовать JSON Formatter & Validator или http://pro.jsonlint.com. Ваш код должен содержать набор строк, необходимых для успешной установки приложения.

Содержимое манифеста Обязательная часть манифеста содержит несколько строк: { «jpsVersion»:»0.2» «jpsType»: «install», «application»: { } } Этa часть содержит информацию о версии JPS и типе установки приложения (например, «install» запускает процесс создания нового окружения, которое подходит для деплоя).

Параметры приложения Указанный выше код необходимо расширить в соответствии с настройками приложения, которое вы собираетесь упаковать по стандарту JPS. Сведения о конфигурации включены в параметр «application»: { }В первую очередь нужно описать некоторую общую информацию о приложении. К примеру, название, версия, язык программирования и прочее.

Пример кода для OpenCMS, которая содержит базовую информацию о приложении:

{ application: { «id»: «opencms», «name»: «OpenCMS», «version»:»8.5», «logo»:», «type»: «java», «homepage»:», «description»: { «en»: «OpenCMS from Alkacon Software is a professional, easy to use website content management system. OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.», «ru»: «Russian description» }, «startPage» :»/install.jsp», «success»: { «text»: «Dashboard success text», «email»: «Email success text» } }} Подробную информацию о доступных параметрах можно почитать в документации по JPS.

Параметры окружения Здесь вам нужно указать сведения об окружении, которое требуется приложению для оптимальной работы. Настройки указанные в этой части кода будут использованы при создании и конфигурации окружения необходимого для установки пакета.Используейте параметр «env»: { } для описания всех необходимых значений. При этом нужно учитывать возможные варианты, которые перечислены в документации.

Из параметров можно использовать:

«topology»:{ } содержит данные о языке программирования окружения, данные о необходимых нодах и позволяет использовать такие дополнительные функции как High Availability и SSL.

«topology»:{ «ha»: «value», «engine»: «value», «ssl»: «value», «nodes»:[ ] }, «deployments»:[ ] отвечает за процесс деплоя приложения в готовом окружении.

«deployments»:[ { «archive»: «value», «name»: «value», «context»: «value» } ] «upload»:[ ] — блок может быть добавлен, если приложению требуются сторонние файлы, они будут загружены и установлены.

«upload»:[ { «nodeType»: «value», «sourcePath»: «value», «destPath»: «value» } ], «configs»:[ ] — этот блок позволяет изменять любой файл на любой из нод для настройки параметров приложения (например, описание процесса установки соединения между сервером приложений и базой данных).

«configs»:[ { «nodeType»: «value», «restart»: «value», «replacements»:[] «path»: «value», «database»:{}, } ] Пример кода, который описывает параметры окружения для выполнения Hello World:

«env»: { «topology»: { «engine»: «php5.3», «nodes»: [{ «extip»: false, «count»: 1, «cloudlets»: 16, «nodeType»: «apache2» } ], «ssl»: false, «ha»: false }, «deployments»: [{ «archive»: «http://app.jelastic.com/xssu/cross/download/RDYYHFNuUQYJBFpPZQ08F0UWCRlUHxdBD0ZlTS4gcQJFFBJUDwIBQmNTTEBI», «name»: «Hello World», «context»: «ROOT» } ], «configs»: [] }, Детальная информация о первичных настройках доступна здесь.

JPS поддерживает список шаблонов (placeholders), которые могут быть использованы в любой части файла JPS (если блок не ограничен строго содержимым). Контроллер JPS постарается преобразовать все шаблоны на стадии установки пакетов. Если этого не произойдет, шаблон не будет реализован и отобразится в тексте как ${placeholder}

Проверка результата Для проверки корректности созданного манифеста используйте ссылку ниже. Ссылка инициализирует процесс установки: app.jelasticloud.com? manifest={manifest_code}

Отметим, в указанной ссылке вместо кода манифеста, мы рекомендуем использовать URL с JSON файлом манифеста.

В случая проблем с манифестом можно нажать Send report и отобразятся подробности ошибки в details:

eb7abf3dedd4fb11aec8414e24ef50d0.jpg

Код JSON можно проверить например в валидаторе http://pro.jsonlint.com и исправить ошибку.

В случае успеха вы увидите предложение к развертыванию приложения:

294902c693dd4ce1b557e0372f7bd1d8.jpg

Образец манифеста для Magento Перед вами пример манифеста Magento. Вы можете использовать этот код как основу при подготовке пакетов приложений. С остальными примерами можно ознакомиться здесь.

{ «jpsVersion»:»0.2», «jpsType»: «install», «application»: { «id»: «omagento1», «logo»: «https://app.jelastic.com/xssu/cross/download/RDYYHFNvBFQOA1RKYgFoRhdDWhRTS00RDxZtG34gIlYWHhdXDwIBQmNTTEBI/view», «description»: { «en»: «Magento is the eCommerce software and platform trusted by the world’s leading brands. Grow your online business with Magento!» }, «name»: «Magento1», «env»: { «topology»: { «engine»: «php5.3», «nodes»: [{ «extip»: false, «cloudlets»: 16, «count»: 1, «nodeType»: «apache2» }, { «extip»: false, «cloudlets»: 16, «count»: 1, «nodeType»: «mysql5» } ], «ssl»: false, «ha»: false }, «deployments»: [{ «name»: «magento-1.7.0.2.zip», «context»: «ROOT», «archive»: «https://app.jelastic.com/xssu/cross/download/RDYYHA9jBlRaAVRLZldjQUdFDhhUG0dACkY4TnpzJlFFEhZVDwIBQmNTTEBI» } ], «configs»: [{ «nodeType»: «mysql5», «database»: { «dump»: «https://app.jelastic.com/xssu/cross/download/RDYYHFM0UFEJU1VNNwVqRRBAXhhXGBEQChNrG31xdFQRFkBYDwIBQmNTTEBI», «patch»: «UPDATE magento.admin_user SET password=CONCAT (MD5('qX${user.appPassword}'), ': qX'), email='${user.email}' WHERE username='admin';», «name»: «magento», «user»: «magento» } }, { «replacements»: [{ «replacement»:»», «pattern»:»{{key}}» }, { «replacement»:»», «pattern»:»{{db_host}}» }, { «replacement»:»», «pattern»:»{{db_user}}» }, { «replacement»:»», «pattern»:»{{db_pass}}» }, { «replacement»:»», «pattern»:»{{db_name}}» }, { «replacement»:»», «pattern»:»{{db_name}}» } ], «path»:»/var/www/webroot/ROOT/app/etc/local.xml», «nodeType»: «apache2» }, { «restart»: true, «replacements»: [{ «replacement»: «extension=gd.so», «pattern»:»; Dynamic Extensions;» } ], «path»:»/etc/php.ini», «nodeType»: «apache2» } ] }, «success»: { «text»: «Admin panel URL: ${env.url}index.php/admin/ Username: admin Password: ${user.appPassword}», «email» : «Admin panel URL: ${env.url}index.php/admin/ Username: admin Password: ${user.appPassword}» }, «type»: «php», «homepage»: «http://www.magentocommerce.com/», «version»:»1.7.0.2» } } Дополнительная полезная информация:

ссылки в манифесте на логотип должны быть https. аттрибут ha доступен только для Java–приложений в настоящий момент. для корректного отображения description должен быть на всех языках, которые включены в панели управления Jelastic (в настоящий момент это русский и английский). Установочный виджет Давайте рассмотрим другую сторону использования JPS. Когда манифест приложения будет готов, вы сможете поделиться возможностью установки приложения в 1 клик с пользователями с помощью виджета установки: b81e8764dfee88366e2bc80106f22109.pngВ виде примера мы разбираем виджет пакета Magento.

1) Разместите следующий JavaScript на вашей странице. Лучше всего, если код будет сразу после открывающего тэга .

2) Этот код поместите в любом месте, где вы бы хотели увидеть виджет.

Указанные выше атрибуты отвечают за: data-manifest — определяет ссылку на файл JSON.data-width — ширина виджета.data-theme — цвет виджета. Доступны: flat-blue, flat-purple, flat-orange, flat-green; data-text — начальная метка виджета. Текст по умолчанию: Get it hosted now! data-tx-empty — при наведении мыши на виджет пользователь увидит текст, описанный этим атрибутом. Дефолт: Type your email and click the buttondata-tx-invalid-email — текст, описанный атрибутом, отдается если e-mail некорректный. Дефолт: Invalid email, please check the spellingdata-tx-error — если пройзойдет какая-либо ошибка пользователь увидит сообщение: An error has occurred, please try again laterdata-tx-success — текст будет показан, если все хорошо, процесс установки начат и письмо для подтверждения отправлено: Check your email.class — атрибут всегда содержит значение je-app.data-key — необязательный параметр, который определяет хостинг-провайдера. Если параметр не определен, то дейтсвует GeoIP. Будет выбран географически близкий к пользователю провайдер.

Виджет вы можете использовать на любой сайте и кастомизировать его как угодно. Единственное условие, которое следует соблюдать, виджет должен запрашивать ссылку следующего вида:

reg.app.jelasticloud.com/installapp? email={user_email}&id={app_id}

Со стороны пользователя Когда виджет уже размещен на сайте, любой пользователь может начать процесс установки, кликнув кнопку Get it hosted now! и выполнив ряд действий:1) Введите электронный почтовый адрес и нажмите на указатель.

a4fffd833a8eeb3bdc9c979d0e5103c8.png2) Письмо с ссылкой для подтверждения будет отправлено на указанный e-mail. Ссылка действует один раз и осуществляет перенаправление в панель управления Jelastic.a1e5e977a6d716d668c17d8f0f35845f.pngЕсли e-mail уже зарегестрирован в Jelastic, то пользователь автоматически залогиниться в панель управления. В противном случае, пользователю на e-mail придут учетные данные для входа.

3) В панели управления будет открыто окно Сonfirm installation of application c краткой информацией о приложении.

Необходимо ввести название окружения, которое будет создано для деплоя приложения и нажать Install.

6eab2dd73e97c17573892273ca6dd558.png

4) Процесс создания начат. Необходимо выждать пару минут, Создание окружения, его конфигурация и деплой приложения будут завершены.

Url приложения и данные для доступа к нему отобразятся по окончании процесса установки (разумеется, если это указано для приложения).

5) Нажмите кнопку Open in browser и приложение загрузится в тот же момент.

Как видите, приложение работает и готово к использованию. Нет ничего сложного!

Итоги В этой статье мы рассмотрели как просто запаковать приложение и дать конечному пользователю возможность с легкостью развернуть его.Создавайте пакеты ваших приложений и делитесь ими на сайтах с помощью виджетов. Один клик — и готово!

Чем больше виджетов, тем больше пользователей.

Начните сейчас и ощутите выгоду от использования формата JPS и платформы InfoboxCloud Jelastic.

© Habrahabr.ru