Система IBM PureApplication™ поддерживает проблемно-ориентированные модели развертывания виртуальных приложений. Виртуальные приложения описываются в терминах артефактов приложения (компонентов и связей между ними), а также требуемых характеристик качества обслуживания (политик). Во время развертывания определяется платформа (инфраструктура и ПО промежуточного уровня), необходимая для размещения виртуального приложения.
Такой подход "платформа как сервис" реализуется путем комбинирования системы PureApplication System с контентом, зависящим от рабочей нагрузки. Система PureApplication обеспечивает общую инфраструктуру и механизм расширения для проектирования, развертывания и администрирования виртуальных приложений. Контент, зависящий от рабочей нагрузки, добавляется в качестве плагинов. Эти плагины определяют компоненты, связи и политики для описания образов виртуальных приложений, а также ПО промежуточного уровня и автоматизации, необходимое для реализации образов в процессе развертывания.
Разработчики создают плагины, которые "разместители" затем используют для описания и развертывания образов. Эта статья посвящена тому, как создавать плагины с помощью инструментария IBM Workload Plug-in Development Kit.
Плагин ― это основной механизм создания и установки расширений PureApplication System в процессе поддержки рабочих нагрузок и приложений заказчиков. Плагин является основным компонентом виртуальных приложений. Обычно он реализует определенные возможности. Например, плагин WebSphere® Application Server (WAS) обеспечивает возможность размещения приложений WAR/EAR/EBA на сервере WebSphere Application Server, а плагин WAS/DB ― связь WAR/EAR/EBA с базой данных.
Плагины ― это основные составляющие виртуального приложения, а также базовой реализации, которая позволяет развертывать приложения в облаке.
В состав PureApplication System входит инструмент для создания виртуальных приложений Virtual Application Builder (VAB).
- Виртуальные приложения строятся из компонентов.
- К компонентам могут применяться политики.
- Компоненты могут подключаться посредством связей.
- Компоненты, связи и политики могут иметь атрибуты, такие как имена пользователей, пароли, имена баз данных или архивные файлы, такие как файл WAR, которым пользователь присваивает значения в процессе создания виртуального приложения.
В PureApplication System готовое виртуальное приложение сохраняется в виде модели приложения JSONObject. Затем модель приложения может быть развернута.
При построении виртуального приложения сначала открывают Virtual Application Builder и выбирают типовой образ (pattern type). Образы поведения ― это группы плагинов. Типовой образ определяет выбранные опции и возможности пользователя при работе в Virtual Application Builder. Пользователь строит виртуальное приложение из набора компонентов, связей и политик, которые предоставляют плагины, содержащиеся в выбранном типовом образе.
Плагин, который обеспечивает компонент или связь, полностью определяет их семантику и функционирование. Он отвечает за реализацию своего воплощения при развертывании виртуального приложения и в продолжение всего его жизненного цикла. Например, плагин должен обеспечить надлежащие сценарии жизненного цикла для управления виртуальным приложением с помощью различных событий жизненного цикла.
Пользователь имеет дело главным образом с компонентами, связями и политиками, но у плагина есть и другие аспекты. IBM Workload Plug-in Development Kit позволяет создавать свои собственные плагины. Затем эти плагины можно импортировать в PureApplication System и использовать для добавления новых возможностей.
В PureApplication System пользователи могут взаимодействовать с действующими виртуальными приложениями с помощью операций, доступных на консоли виртуального приложения. Плагины добавляют эти операции и способы их реализации.
Типовые образы – это контейнеры с ресурсами, ориентированными на конкретное решение и топологию, необходимые для виртуальных приложений различных типов; это наборы плагинов, таких как Web-приложения (IBM Workload Deployer Pattern для Web-приложений) или базы данных (IBM Workload Deployer Pattern для DB2 Workgroup Edition).
Администратор облачной системы PureApplication может импортировать как типовые образы, так и отдельные плагины. Плагины могут предоставлять администратору облака PureApplication те или иные возможности по настройке параметров глобальной конфигурации.
Проектирование проблемно-ориентированных плагинов
Плагины должны проектироваться с учетом их использования для конкретного приложения. Это означает, что компоненты, связи и политики должны отражать артефакты и свойства приложения, а не инфраструктуры или промежуточного ПО. Например, артефактами приложений могут быть WAR-файлы и экземпляры базы данных. Чтобы связать WAR-файлы с экземплярами базы данных, требуется связь.
В число возможных расширений входит поддержка упругого масштабирования Web-приложения. Масштабирование - это качество обслуживания, которое можно смоделировать как объект политики в отношении компонента WAR-файла. (Добавление политики масштабирования может привести к дополнительным процессам в ходе развертывания, таким как прокси, репликация буфера сеанса и т.д., но плагин управляет всеми деталями в соответствии с намерениями разместителя).
При проектировании следует также учитывать вопросы управления приложением. Например, разместителям может потребоваться возможность замены WAR-файла во время работы приложения.
Разработчик плагина может принять решение о создании нового типового образа для выделения тех или иных возможностей пользователя. Альтернативой служит добавление плагинов к существующему типовому образу, такому как Web Application Pattern Type, чтобы предоставить разместителям доступ к комбинации из новых и уже существующих плагинов.
Соответствием между типовыми образами и плагинами управляет плагин. Типовой образ представляет собой именованную коллекцию; каждый плагин может указывать на свою связь с одним или несколькими типовыми образами. Такой подход самоуправления позволяет другим разработчикам расширять любые типовые образы.
Плагины могут расширять PureApplication System в различных местах, включая процессы проектирования (компоненты, связи и политики), развертывание (двоичные файлы и сценарии автоматизации), логику преобразования и управление.
Плагин объявляет свои связи с типовыми образами в объекте patterntypes. Он может установить связь с одним основным и одним или более дополнительными типовыми образами. Под основной связью подразумевается лицензированная связь; для упрощения обмена могут быть также указаны дополнительные связи. Если указана основная связь, то плагин остается недоступным до тех пор, пока не задействован основной типовой образ.
Объект packages предоставляет абстрактный уровень для отдельных компонентов, обеспечиваемых плагином. Компоненты (parts) ― это группы файлов, устанавливаемых на виртуальные машины по мере необходимости, причем к определенной целевой машине (операционной системы, архитектуры) могут относиться определенные компоненты. Преимущество для преобразователей – используемых для преобразования компонентов, связей или политик модели приложения в часть документа топологии, который можно применять для развертывания по образцу – заключается в том, что преобразователь просто добавляет пакеты в ВМ-шаблоны. Впоследствии PureApplication System разлагает пакеты на компоненты в соответствии с целевой машиной. Такая логика преобразования не зависит от специфики машины.
PDK - это инструмент, который помогает разработчиками плагинов PureApplication System создавать свои собственные плагины и типовые образы для Workload Deployer. PDK содержит среду для сборки плагинов и типовых образов, образцы и инструментарий для создания новых проектов по разработке плагинов. Дополнительные сведения приведены в Руководстве по разработке плагинов (EN).
Плагины и типовые образы строятся и упаковываются с помощью Apache Ant. PDK содержит для этой цели XML-файлы сборки Ant. Эти файлы сборки можно запускать из командной строки или среды Eclipse (могут работать и другие среды разработки, но PDK поддерживает только командную строку и Eclipse).
При использовании PDK предъявляются следующие требования:
- Java™ SE6, 32-разр.;
- Apache Ant, 1.7+;
- Eclipse V3.6.2, 32-разр. Рекомендуется использовать версию Java Enterprise Edition (JEE).
Среда Eclipse не обязательна, но при ее использовании выбирайте указанную выше версию. При использовании среды Eclipse можно применять входящий в нее пакет Ant, не устанавливая Ant отдельно. Пакет Ant находится в каталоге установки Eclipse: eclipse/plugins/org.apache.ant_1.*.
На первом шаге PDK загружается в рабочую станцию. Его можно загрузить из PureApplication System, когда после входа в систему появляется экран приветствия, или из вики PDK. PDK представляет собой ZIP-файл. После его загрузки и распаковки откройте командную строку из каталога, в который распакован ZIP-файл, и запустите Ant.
PDK – это лицензируемый продукт. После запуска Ant появится экран с текстом лицензионного соглашения. Чтобы продолжить, нужно принять условия лицензии и распаковать содержимое PDK.
Типовой образ hello позволяет развернуть простое виртуальное приложение hello. Типовые образы могут содержать компоненты, связи и политики, которые будут использоваться в Virtual Application Builder для создания виртуальных приложений.
В типовом образе hello два компонента и одна связь:
- HCenter: этот компонент выполняет развертывание виртуальной машины, содержащей промежуточное ПО простого центра управления сообщениями HelloCenter. HelloCenter открывает порт 4000, принимает запросы от клиентов и возвращает приветственные сообщения;
- Hello: этот компонент использует ВМ, содержащую клиентский компонент HelloCenter. Клиент направляет в HelloCenter запрос с идентификатором отправителя сообщения и пытается получить ответное приветственное сообщение, чтобы вывести его на консоль.
- HClink: устанавливает связь между компонентами Hello и HCenter. Передает Hello-клиенту IP-адрес сервера HCenter, что позволяет клиенту обращаться с запросами к серверу. У этой связи есть также атрибут с именем получателя приветственного сообщения.
В примере hello каждый компонент и каждая связь обеспечиваются отдельным одноименным плагином. В общем случае плагин может обеспечить любое количество компонентов, связей и политик.
Создание плагинов и типовых образов с помощью PDK
Для создания плагинов или типовых образов с помощью PDK введите из командной строки:
cd iwd-pdk-workspace/plugin.depends
ant /*Эта команда создает все плагины в рабочей области.*/
cd ../patterntype.hello
ant -f build.patterntype.xml /*Эта команда создает типовой образ hello, пример,
включенный в PDK ― см. описание ниже.
Каталог export содержит собранный типовой образ,
готовый для установки в IWD.*/
|
Обратите внимание, что эти сценарии сборки Ant можно запускать из Eclipse (или своей IDE) ― щелкните правой кнопкой мыши на файле build.xml и выберите Run As > Ant build.
Собранный типовой образ hello можно импортировать в PureApplication System, построить виртуальное приложение из его компонентов и развернуть это виртуальное приложение.
Оставшаяся часть статьи посвящена подробному описанию содержания PDK, включая образец приложения.
Каталог/проект plugin.depends содержит библиотеки плагинов Workload Deployer для разработки, инструменты сборки плагинов и образов и библиотеку сборки Ant, в том числе:
- папку lib со всеми файлами архивов Java (JAR), необходимыми для разработки плагинов;
- папку lib-build со всеми библиотеками, необходимыми для сценария сборки плагинов;
- файл build/build.plugins.xml, основной встроенный файл сценария сборки одного плагина. Файл сценария сборки каждого плагина импортирует этот файл сценария сборки и при необходимости добавляет дополнительные действия;
- общий сценарий сборки типовых образов build/build.patterntypes.xml. Файл сценария сборки каждого типового образа импортирует этот файл сценария сборки и при необходимости добавляет дополнительные действия;
- файл create.plugin.project.xml, который представляет собой сценарий Ant, используемый для создания проектов по разработке плагинов в рабочей области.
Для создания проектов по разработке плагинов можно использовать файл create.plugin.project.xml из каталога plugin.depends. Этот файл создает шаблон, или проект по разработке плагина на базе Java. У него два обязательных параметра: project-name и plugin-name. С помощью этих двух параметров создается шаблон-проект. Третий параметр, java.classname, необязательный. Если указано действительное имя класса, создается проект плагина Java. Имя класса может быть сокращенным, например, MyPlugin, или полным именем пакета, например, com.acme.iwd.plugin.MyPlugin. И важно не помещать на конце .java, поскольку это расширение уже подразумевается.
- Ant-сценарий create.plugin.project.xml использует plugin-project-template для создания проектов по разработке плагинов.
Примеры типовых образов и плагинов
В пакет ZIP PDK включены четыре проекта в виде плагинов. Эти плагины демонстрируют, как разработать модель приложения, конфигурацию, шаблон виртуальной машины и сценарии плагина на языке Python.
Проект разработки плагина HCenter
plugin.com.ibm.sample.hellocenter
Этот плагин содержит компонент HelloCenter, который представляет собой развернутую виртуальную машину с функцией сервера HelloCenter. По этому плагину можно научиться писать сценарии для таких этапов жизненного цикла, как установка, настройка, пуск и останов промежуточного ПО, подобного HelloCenter. Можно использовать следующие сценарии на языке Python:
- install.py: загружает артефакты из хранилища и устанавливает промежуточное ПО. Если нужно загрузить с сервера хранения данных и расширить установочный файл TGZ, используйте вместо этого функцию
downloadx; - configure.py: загружает артефакты, переданные плагином, настраивает промежуточное ПО и открывает межсетевой экран, чтобы принимать запросы клиентов. Экспортируйте его IP-адрес;
- start.py: Запускает сервер HelloCenter и изменяет состояние роли на Running;
- stop.py: останавливает сервер HelloCenter.
Можно также получить доступ к модулю maestro и использовать логгер для регистрации своих сообщений. Более подробные сведения о модуле maestro и расширенной журналах регистрации сообщений, таких как maestro.trace_call, приведены в PDK плагинов.
Проект разработки плагина Hello
plugin.com.ibm.sample.hello
Этот плагин обеспечивает компонент, который представляет собой развернутую машину, обращающуюся к HelloCenter, так что он должен работать вместе с плагином HClink. Этот плагин содержит следующие сценарии:
- configure.py: регистрирует сведения об отправителе;
- start.py: изменяет состояние роли на Running.
Проект разработки плагина HClink
plugin.com.ibm.sample.hclink
Этот плагин связывает Hello и HelloCenter и устанавливается вместе с плагином Hello на той же виртуальной машине. Он содержит следующий сценарий:
- changed.py: этот сценарий запускается только после того, как роли плагинов Hello и HelloCenter переходят в состояние Running. Сценарий проверяет, существует ли зависимая роль HelloCenter, и считывает из HelloCenter передаваемые параметры, которые экспортируются в сценарий HelloCenter configure.py. Сценарий change.py использует IP-адрес HelloCenter для доступа к HelloCenter и распечатывает ответные сообщения. Этот сценарий демонстрирует также способ локализации сообщений.
Плагины Hello, HelloCenter и HClink показывают:
- как передавать параметры между двумя плагинами;
- как обеспечить совместную работу двух или более плагинов.
В плагинах содержится пример модели и конфигурации приложения, шаблон виртуальной машины и конфигурация шаблона виртуальной машины.
Вы можете создавать свои артефакты не с нуля, а на основе этих образцов моделей приложения, конфигураций, образов виртуальных машин и конфигураций виртуальных машин. За более подробной информацией обращайтесь к PDK.
Проект разработки типового образа patterntype.hello
patterntype.hello
В проекте разработки типового образа patterntype.hello:
- файл patterntype.json содержит пример настройки типового образа;
- файл build.patterntype.xml используется для сборки типового образа в пакет. Внимание! Перед запуском этого сценария необходимо запустить build.xml в проекте plugin.depends, чтобы собрать все плагины в рабочей области;
- папка licenses содержит все документы лицензионных соглашений на всех поддерживаемых языках;
- папка locales хранит все переводы файла message.json на все поддерживаемые языки.
Мы надеемся, что эта статья стала хорошим экскурсом по IBM Workload Plug-in Development Kit. Но это еще не все! В сопутствующей статье Применение IBM Workload Plug-in Development Kit рассматриваются четыре базовые задачи, позволяющие приобрести практический опыт работы с PDK.
- Оригинал статьи: Create and customize virtual application patterns.
- Подробнее об IBM PureSystems.
- Ресурсы по IBM PureSystems на портале developerWorks.
-
Дополнительная информация по решению задач в IBM Cloud:
- загрузка и передача файлов из экземпляра Windows;
- установка Web-сервера IIS на Windows 2008 R2;
- создание экземпляра IBM Cloud из командной строки Linux;
- создание экземпляра IBM Cloud из командной строки Windows;
- расширение корпоративной сети с помощью IBM Cloud;
- приложения высокой готовности в облаке IBM;
- динамическая параметризация образов облака для создания специальных экземпляров;
- Windows-ориентированные подходы к подготовке IBM Cloud;
- развертывание программных продуктов с использованием службы быстрого развертывания;
- интеграция политики аутентификации с помощью прокси-сервера;
- настройка менеджера логических томов Linux;
- развертывание сложной топологии с помощью специальной утилиты;
- подготовка и настройка экземпляра, охватывающего публичную и частные VLAN;.
- безопасный доступ к IBM Cloud для Android-устройств;
- восстановление данных в IBM SmartCloud Enterprise;
- безопасные экземпляры виртуальной машины в облаке.

Тед Кирби занимается разработкой плагинов для шаблонов IBM Workload Deployer для веб-приложений в подразделении IBM в исследовательском центре Research Triangle Park, штат Северная Каролина. Он принимает участие в проекте Apache Geronimo и был разработчиком WebSphere Application Server Community Edition. Ранее он занимался популяризацией WebSphere для экстремальной обработки транзакций, а также улучшением и поддержкой сайтов электронной торговли и разработкой распределенных операционных систем, включая операционную систему для компьютера Deep Blue.