[Эта статья была написана Йорамом Вайнребом.]
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 git@github.com: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
cfy deployments create –b hello_stack –d my_stack
Чтобы запустить рабочий процесс развертывания, мы вводим следующую команду:
cfy deployments execute –d my_stack install
Процесс развертывания должен занимать несколько минут, и в то же время рекомендуется открыть веб-интерфейс и просмотреть ход развертывания. Его можно получить, введя IP-адрес сервера (из команды bootstrap) в браузере.
Как только все будет сделано, вы увидите, что Cloudify показывает представление развернутых элементов Heat в Cloudify с соответствующими взаимосвязями.
Кроме того, вы можете увидеть развернутый веб-сервер Python Cloudify, содержащийся в экземпляре развернутого сервера Heat.