Статьи

Развертывание OpenStack Cloud стало проще: плагин Heat для Cloudify

[Эта статья была написана Йорамом Вайнребом.]
Плагин OpenStack Heat Cloudify |  Открытое облако

OpenStack Heat упрощает развертывание нескольких элементов OpenStack с помощью концепции «стека».

Определив документ HOT (шаблон оркестровки Heat), в котором описывается стек, и «создавая» стек на основе документа, Heat будет координировать развертывание многих элементов, включая сети, подсети, порты, плавающие IP-адреса, группы безопасности, серверы и многое другое. ,

Cloudify может использовать Heat для развертывания аппаратного стека и в основном продолжать с того места, где заканчивается развертывание Heat, добавляя рабочие процессы развертывания программного обеспечения, мониторинг и аналитику для непрерывного управления вашими развертываниями.

В этом посте я объясню, а также покажу живой пример одного аспекта интеграции, который позволяет Cloudify «импортировать» стек Heat и построить на нем проект Cloudify ( вдохновленный TOSCA ).


OpenStack Тепловая оркестровка до макс. Получите Cloudify.  
Идти


Сначала мы определим стек Heat и развернем его. План, который мы будем использовать, описывает сеть, подсеть, порт и плавающий IP. Он основан на уже существующем маршрутизаторе и общедоступной сети, которые мы будем указывать в качестве параметров стека. Мы можем либо изменить значение по умолчанию в файле, либо добавить в среду файл среды, в котором будут установлены эти параметры. В нашем случае давайте изменим значения по умолчанию.

Когда это будет готово, мы можем развернуть его из командной строки, или если в нашей системе настроена среда OpenStack, или мы можем войти в веб-интерфейс OpenStack (Horizon) и перейти в раздел project => Orchestration.

Запустите команду создания стека из пользовательского интерфейса или просто введите:

 Heat stack-create –f ./simple_stack.yaml my_stack_name 

Бег

 heat stack-list 

или проверьте веб-интерфейс, чтобы убедиться, что развертывание стека завершено успешно.

Топология теплового стека

После развертывания стека мы можем запустить процесс, чтобы импортировать его в Cloudify.

Получить инструмент, запустив:

 git clone [email protected]:yoramw/Cloudify-Heat-Plugin.git 

Обновите файл отображения heat_mappings.json, указав имя сети управления Cloudify и имя стека.

Запустите утилиту импорта:

./bin/heat_resource_fetcher -s hello_stack -m ./heat_mappings.json –output-file ./out.yaml

Вывод out.yaml станет основой нашего проекта Cloudify.

Просматривая файл out.yaml, мы видим различные элементы Heat в их представлении Cloudify.

Чтобы создать проект Cloudify из out.yaml, мы просто открываем его и добавляем узлы out и их взаимосвязи.

В нашем примере мы добавим простой узел веб-сервера Python, который будет развернут поверх экземпляра сервера с именем «my_instance», который был развернут Heat.

Этот сервер использует плагин Cloudify Bash, поэтому сначала мы добавим импорт для этого плагина в разделах импорта и определения типов:

http://www.getcloudify.org/spec/bash-plugin/1.0/plugin.yaml
типы:

# A web server configured with bash scripts
cloudify.types.bash.web_server_with_index_and_image:
derived_from: cloudify.types.bash.web_server
properties:
– image_path
– index_path

Затем мы добавим в конец файла сам узел веб-сервера:

- name: http_web_server
type: cloudify.types.bash.web_server_with_index_and_image
properties:
port: 8080
image_path: images/cloudify-logo.png
index_path: index.html
scripts:
configure: scripts/configure.sh
start: scripts/start.sh
stop: scripts/stop.sh
relationships:
– type: cloudify.relationships.contained_in
target: my_instance

Развертывание веб-сервера зависит от нескольких скриптов Bash и веб-ресурсов. Мы сохраним этот обновленный файл в новой папке с именем blueprint.yaml. В эту же папку мы будем загружать остальные необходимые ресурсы отсюда.

Затем нам нужно загрузить менеджер Cloudify в наше облако.

Загрузите Cloudify, если у вас его еще нет, и выполните следующую команду:

cfy init openstack

Был создан файл конфигурации с именем Cloudify-config.yaml.

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

В нашем случае мы хотим, чтобы Cloudify была развернута в сети, генерируемой Heat, поэтому мы обновим сеть и подсеть до тех, которые были развернуты в Heat:

int_network:
create_if_missing: false
name: my_app_network
subnet:
create_if_missing: false
name: my_app_subnet

Далее мы запустим процесс начальной загрузки:

cfy bootstrap

Узлу управления Cloudify потребуется несколько минут для завершения подготовки.

Как только это будет сделано, мы можем проверить, что сервер готов, выполнив:

cfy status 

Все сервисы должны отображаться как работающие. Это приводит нас к следующему этапу загрузки созданного нами проекта:

 cfy blueprint upload –b hello_stack ./myblueprintfolder/blueprint.yaml 

Cloudify Blueprint

 cfy deployments create –b hello_stack –d my_stack 

Чтобы запустить рабочий процесс развертывания, мы вводим следующую команду:

 cfy deployments execute –d my_stack install 

Процесс развертывания должен занимать несколько минут, и в то же время рекомендуется открыть веб-интерфейс и просмотреть ход развертывания. Его можно получить, введя IP-адрес сервера (из команды bootstrap) в браузере.

Установка Cloudify Deployment завершена

Как только все будет сделано, вы увидите, что Cloudify показывает представление развернутых элементов Heat в Cloudify с соответствующими взаимосвязями.

Кроме того, вы можете увидеть развернутый веб-сервер Python Cloudify, содержащийся в экземпляре развернутого сервера Heat.