Решение для автоматизированного развертывания для нескольких веб-приложений Java - PullRequest
26 голосов
/ 23 сентября 2009

Я ищу решения, предпочтительно с открытым исходным кодом, которые могут управлять развертыванием нескольких взаимозависимых java-приложений.

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

Затем необходимо проанализировать спецификацию, а затем каждый элемент должен быть развернут / выполнен в целевой среде. Целевая среда основана на Linux. Веб-приложения - это ванильные войны на стандартном сервере приложений j2ee.

Много спросить?

В настоящее время я думаю, что все биты на месте - бинарные артефакты выпускаются с помощью плагина выпуска * maven *1011* и поэтому доступны из нашего репозитория maven для развертывания, базы данных имеет версию dbdeploy , а apache config имеет версию svn . Однако я не знаю ни одного инструмента, который мог бы объединить все эти шаги в нескольких приложениях.

Мой текущий предпочтительный подход заключается в использовании формы параметризованной сборки для hudson для создания спецификации. Затем вторая параметризованная сборка для выбора предварительно созданной спецификации и ее развертывания / выполнения в выбранной среде.

Однако, похоже, это большая работа и нестандартное решение.

Кто-нибудь знает какие-нибудь готовые лучшие идеи? или предложения о том, как подойти к этому - может быть, рабочий процесс будет лучше, чем Хадсон? может быть, пользовательское веб-приложение?

Примечания:

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

Автоматизация развертывания отдельных приложений - это проблема многих решений, например, груз, скрипты развертывания муравья и т. д. Однако мне нужно что-то, что может обернуть несколько развертываний. Например. начать груз на определенных версиях нескольких приложений и их требованиях.

Ответы [ 9 ]

16 голосов
/ 23 сентября 2009

Похоже, вам нужен шеф-повар для приготовления вашей конфигурации:)

9 голосов
/ 23 июня 2011

glu кажется очень хорошим выбором для автоматизации развертываний. Описание с сайта:

Что такое глю?

glu - платформа автоматизации развертывания и мониторинга с открытым исходным кодом.

Какие проблемы решает glu?

glu решает следующие задачи:

  • развертывание (и мониторинг) приложений на произвольно большом наборе узлов:
    • эффективно
    • с минимальным / без взаимодействия с человеком
    • надежно * * тысяча двадцать-один
    • воспроизводимым образом
  • обеспечить согласованность во времени (предотвратить дрейф)
  • обнаружение и устранение неполадок быстро при возникновении проблем

Как это работает?

glu использует очень декларативный подход, в котором вы описываете / моделируете то, что хотите, а глю может тогда:

  • вычисляет набор действий для развертывания / обновления ваших приложений
  • убедитесь, что оно остается постоянным во времени
  • обнаруживает и предупреждает вас о несоответствии

Он поддерживается Яном Пуджанте и создан в LinkedIn, который использовал его внутри компании.

7 голосов
/ 13 февраля 2013

Так как эта старая тема появляется первой в поиске Google, я хочу добавить новую альтернативу:

Ansible выполняет команды по SSH, и его очень легко настроить и использовать. Это займет всего несколько часов, чтобы понять концепции и начать писать свои собственные задачи.

Выдержка с сайта:

В дополнение к тому, что Ansible's Playbook не требует никаких демонов или начальной загрузки, он является самым простым языком управления системами. Это читается как английский. Мы считаем, что у вас есть другая работа, поэтому мы хотим, чтобы вы быстро справились со своими задачами и ушли с вашего пути.

6 голосов
/ 23 сентября 2009

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

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

альтернативный текст http://controltier.org/mediawiki/images/d/d2/ControlTier_HighLevel.png

5 голосов
/ 29 сентября 2009

Умная лягушка также стоит посмотреть.

2 голосов
/ 23 сентября 2009

Развертывание - сложный бизнес. В Maven есть много плагинов, которые могут вам понадобиться для управления развертыванием, но для того, чтобы он выполнял именно то, что вам нужно, требуется некоторая конфигурация. Ниже описано, как можно решить каждую из ваших проблем. Хотя в зависимости от вашей среды, это может быть больше проблем, чем стоит.

Плагин maven Cargo можно использовать для развертывания приложений. Очевидно, что это может быть довольно сложным, но Cargo - довольно хороший инструмент для управления развертыванием.

Конфигурация apache может быть упакована как отдельный jar-файл вашим процессом сборки и развернута в хранилище, а затем загружена / опубликована для использования в вашем jar-файле развертывания (плагин зависимости можно использовать для извлечения конфигурации баночка из хранилища). В качестве альтернативы Maven имеет scm api, который можно использовать для вызова произвольных команд в вашем хранилище SCM (см. этот ответ для примера плагина с использованием SCM API.

Насколько я знаю, для dbdeploy нет подключаемого модуля Maven, но в этом сообщении в блоге показано, как maven-antrun-plugin можно использовать для сценария развертывания.

1 голос
/ 12 января 2015

Я предлагаю использовать комбинацию инструментов (разделение задач, правильный инструмент для правильной задачи), которые помогут вам достичь вашей цели, позвольте мне упомянуть некоторые из тех, которые я использовал:

в дополнение к инструментам, упомянутым выше, есть и другие, которые могут быть полезны, и вы можете использовать их в соответствии с потребностями вашего проекта: http://www.oracle.com/technetwork/articles/java/deployment-tools-2227133.html

Теперь поговорим о проблеме. Первое, что я заметил, это то, что вы упомянули, что у вас уже есть ваши релиз-артефакты в вашем менеджере хранилища (например, Artifactory), поэтому следующий шаг, который нам нужно сделать, - это способ организовать развертывание этих артефактов одновременно, Я думаю, что одним из вариантов является использование Paremeterized Build (https://wiki.jenkins -ci.org / display / JENKINS / Parameterized + Build , где вам нужно определить несколько параметров, которые будут содержать разные версии артефактов, которые Если вы хотите выполнить развертывание, как только пользователь заполнит эти значения, мы будем использовать их для передачи в качестве параметров в задание rundeck (rundeck - это инструмент, который помогает вам организовать задачи на разных узлах), это мастер-задание развертывания rundeck получит параметры и организовать развертывание ваших артефактов. Некоторые примеры шагов, которые будет содержать задание rundeck: остановка вашего контейнера, резервное копирование ваших текущих компонентов, запуск вашего контейнера, загрузка артефактов из вашего менеджера хранилища, создание ресурсов в yo Контейнер, Разверните ваши компоненты в вашем контейнере, Выполните развертывание БД, Отправьте электронное письмо, если процесс завершится неудачей, и т. д. Обычно каждый из этих шагов является подзадачей (которые также получают параметры), и в конце мы создаем одного мастера задание, которое использует / организует все эти подзадачи.

Позвольте мне добавить несколько примеров изображений этого типа процесса CD. Этот пример развертывает только артефакты War / Ear, но он может помочь вам увидеть общую картину:

https://drive.google.com/folderview?id=0B-FVAopZZjDWdGl0WlNjX1RnRDQ&usp=sharing

Надеюсь, это может быть полезно.

1 голос
/ 11 марта 2013

У меня очень похожие требования. Кажется, что http://www.kwatee.net/product идеально подходит для развертывания приложений вместо развертывания среды

  • Веб-интерфейс для создания / настройки и управления развертываниями
  • Поддержка мультиплатформенного развертывания
  • Управление версиями, развертывание инкрементных обновлений
  • При необходимости используйте команды оболочки плана
  • Легкий и простой в использовании, понятный и управляемый
0 голосов
/ 05 октября 2013

Похоже, Apache Ace решит вашу проблему с помощью другого инструмента, такого как Aries. ACE отслеживает зависимости. Вы можете сопоставить свою функцию и сформировать распределение. Затем вы можете выбрать цели, на которых необходимо развернуть дистрибутив. Он также предоставляет RESTful API.

Apache ACE

Apache ACE - это структура распространения программного обеспечения, которая позволяет централизованно управлять и распространять программные компоненты, данные конфигурации и другие артефакты в целевые системы. Он построен с использованием OSGi и может быть развернут в разных топологиях. Целевые системы обычно также основаны на OSGi, но не обязательно.

http://ace.apache.org/

...