Приятно видеть, что Murano набирает популярность и использование с момента его выпуска, наряду с дополнительными проектами, добавленными в последних выпусках OpenStack — от Сахары до Маркони, я нахожу добавление и разнообразие проектов, теперь доступных в этой растущей экосистеме, чрезвычайно впечатляющим.
Авторы этой статьи: Ури Коэн и Лютер Траммелл
Таким образом, для тех, кто незнаком, OpenStack Murano представил каталог приложений для OpenStack, который позволяет разработчикам приложений и администраторам облачных вычислений публиковать свои готовые к работе в облаке приложения в удобном для навигации и категоризованном каталоге.
Для пользователей OpenStack это по сути означает то, что теперь они могут отправлять и загружать пакеты приложений в Murano в различных форматах, от шаблонов оркестровки Heat , до пакетов MuranoPL (язык Murano) и даже изображений Glance, и развертывать эти загруженные приложения в OpenStack по адресу щелчок кнопки. Раньше, если вы хотели настроить кластер Hadoop или кластер Kubernetes, это требовало ручной настройки и настройки, чтобы связать все это вместе. Большой новостью стало то, что внезапно облачные пользователи, как опытные, так и неопытные, могут использовать этот каталог для создания надежных сред приложений одним нажатием кнопки.
Организовать развертывание приложений в OpenStack, VMware, AWS и т. Д. Получите Cloudify. ИДТИ
В Murano новый бэкэнд предоставляет роли и разрешения для администрирования приложений — так что вы можете иметь роль разработчика приложения (который разрабатывает приложение и загружает его в Murano), роль пользователя в облаке (который использует загруженные приложения) и роль администратора, которая сама управляет сервисом Murano. Это значительно упрощает управление приложениями в OpenStack.
Murano делает все это возможным в OpenStack. Однако, когда приложения развертываются или совместно используются несколькими облаками или вообще не развертываются в OpenStack, Murano мало что может сделать для вас.
Murano, как и Cloudify, может быть подключен со встроенной системой плагинов, поэтому для команды Cloudify было вполне естественным партнерство с командой разработчиков Murano для создания плагина Cloudify для Murano. Этот плагин позволяет Murano напрямую управлять шаблонами TOSCA и развертывать их в OpenStack и других облаках напрямую, используя Cloudify. Это происходит в дополнение, а не вместо уже существующих интеграций с Heat, Glance и самим MuranoPL. Используя этот плагин, пользователи могут существенно расширить Murano для любой инфраструктуры и даже развертывать и моделировать приложения в смешанных инфраструктурах.
Кроме того, Cloudify добавляет возможность подключаться к дополнительным технологиям, недоступным только через Murano, например, к контроллерам SDN вне OpenStack (для приложений, ориентированных на NFV, AKA VNF). Он также позволяет легко моделировать сложные топологии приложений в стандартном формате (например, смешанные рабочие нагрузки контейнерных неконтейнерных компонентов, например развертывание веб-приложения как части контейнера Docker и базы данных mongo непосредственно на виртуальной машине OpenStack). Вы также автоматически получаете все функциональные возможности после развертывания, доступные в Cloudify, управление приложениями и мониторинг, исцеление и масштабирование, а также переносимость приложений через облака.
Лично для меня это был отличный опыт работы со звездной инженерной командой в Mirantis, чтобы распространить Murano на дополнительные облака и варианты использования. Мы ожидаем, что эта интеграция упростит развертывание в гибридных средах, а также в других популярных облаках, включая VMware, GCP и другие.
Теперь посмотрим, как это работает под капотом
Плагин содержит два основных файла Python: cloudify_tosca_package.py, который определяет способ упаковки чертежей Cloudify TOSCA , и cloudify_client.py, который взаимодействует с API отдыха Cloudify Manager через HTTP.
Когда вы упаковываете архив чертежей для загрузки в Murano, он должен иметь примерно такую структуру:
./
| LICENSE
| logo.png
| manifest.yaml
| README.rst
| Resources
| | some-blueprint.yaml
| | types/
| | scripts/
Каталог Resources содержит Blueify Blueprint и необходимые файлы, а Manifest.yaml сообщает Murano, что происходит:
EntryPoint в Manifest.yaml указывает имя файла проекта Cloudify для загрузки в Cloudify Manager. Например, в нашем примере структуры папок выше, вы бы назвали «some-blueprint.yaml».
Format: Cloudify.TOSCA/1.0
Type: Application
FullName: org.getcloudify.muranoapps.examples.MyApp
EntryPoint: some-blueprint.yaml
Name: My App
Description: >
This is my application
Author: Me
Tags:
- TOSCA
- Cloudify
Это вызывается кодом плагина Cloudify Murano (cloudify_tosca_package.py):
class CloudifyToscaPackage(package_base.PackageBase):
def __init__(self, format_name, runtime_version, source_directory,
manifest):
super(CloudifyToscaPackage, self).__init__(
format_name, runtime_version, source_directory, manifest)
self._entry_point = manifest.get('EntryPoint', 'main.yaml')
Когда приложение будет выполнено на более позднем этапе, весь каталог ресурсов будет сжат Cloudify, когда Murano сделает остальной API-вызов:
@specs.parameter('entry_point', yaqltypes.String())
def publish_blueprint(self, entry_point):
global archive_upload_lock
if self._check_blueprint_exists():
return
path = self._application_package.get_resource(entry_point)
with archive_upload_lock:
try:
self._client.blueprints.upload(
path, self._blueprint_id)
except cloudify_exceptions.CloudifyClientError as e:
if e.status_code != 409:
raise
Вы можете раскошелиться на код и обязательно предоставите нам обратную связь.
Посмотрите видео ниже для более глубокого прохождения.