Подтвердить что ты не робот

Автоматизированное решение для развертывания для нескольких веб-приложений Java

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

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

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

Сколько спросить?

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

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

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

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

Примечания:

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

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

4b9b3361

Ответ 1

Похоже, вам нужна chef, чтобы подготовить вашу конфигурацию:)

Ответ 2

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

Что такое glu?

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

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

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

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

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

alt text http://controltier.org/mediawiki/images/d/d2/ControlTier_HighLevel.png

Ответ 5

Smart Frog также стоит посмотреть.

Ответ 6

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

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

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

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

Ответ 7

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

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

Ответ 8

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

в дополнение к упомянутым выше инструментам есть и другие, которые могут быть полезны, и вы можете использовать их в соответствии с вашими потребностями проекта: 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: Остановите свой контейнер, создайте резервные копии ваших текущих компонентов, запустите свой контейнер, загрузите свои артефакты из своего менеджера хранилища, создайте ресурсы в своем контейнере, разверните лет ur компонентов в вашем контейнере, выполните свое развертывание БД, отправьте электронное письмо, если процесс завершился неудачно, и т.д. Обычно каждый из этих шагов является подзаголовками (которые также принимают параметры), и в конце мы создаем одно основное задание, которое использует/организовать все эти подзаголовки.

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

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

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

Ответ 9

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

Apache ACE

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

http://ace.apache.org/