Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Automated Deployment solution for multiple Java web-apps

I'm looking for solutions, preferably open source, that can manage deployments of multiple interdependent java web-applications.

The solution requires an ability to create and store a release specification containing multiple items for release - specific versions of each application and relevant other artifacts (database config, apache config etc.).

The specification then needs to be parsed and each item then need to be deployed/executed on a target environment. Target environment is linux based. Web-apps are vanilla wars running on a j2ee standard app server.

A lot to ask?

Currently I think all the bits are in place - the binary artifacts are released with the maven release plugin and hence available from our maven repo for deployment, the database is versioned with dbdeploy and the apache config is versioned in svn. However I don't know of any tool that can put all these steps together on multiple applications.

My current preferred approach is to use a form of a parameterised build for hudson to create the specification. Then a second parameterised build to select a pre-created specification and deploy/execute it on a chosen environment.

However this seems to be a lot of work and a less than optimal custom solution.

Anyone know any prebuilt better ideas? or suggestions for for how to approach this - maybe a workflow engine would be better than hudson? maybe a custom web app?

Notes:

The target environments are prebuilt with all requirements in place - e.g. java and app server installed, database running etc. This is less of an environment configuration question and more of a deployment question.

Automating deployment of single apps is a problem with many solutions e.g. cargo, ant deployment scripts etc. However I need something that can wrap multiple deployments. E.g. kick off cargo on specific versions of multiple apps and their requirements.

like image 889
Pablojim Avatar asked Sep 22 '09 20:09

Pablojim


People also ask

What is the deployment format for a Java Web application?

Java web applications use a deployment descriptor file to determine how URLs map to servlets, which URLs require authentication, and other information. This file is named web. xml , and resides in the app's WAR under the WEB-INF/ directory. web.


2 Answers

Sounds like you need a chef to cook your configuration :)

like image 91
Jim Barrows Avatar answered Oct 16 '22 03:10

Jim Barrows


glu seems to be a very nice choice for automating deployments. Description from its web site:

What is glu?

glu is a free/open source deployment and monitoring automation platform.

What problems does glu solve?

glu is solving the following problems:

  • deploy (and monitor) applications to an arbitrary large set of nodes:
    • efficiently
    • with minimum/no human interaction
    • securely
    • in a reproducible manner
  • ensure consistency over time (prevent drifting)
  • detect and troubleshoot quickly when problems arise

How does it work?

glu takes a very declarative approach, in which you describe/model what you want, and glu can then:

  • compute the set of actions to deploy/upgrade your applications
  • ensure that it remains consistent over time
  • detect and alert you when there is a mismatch

It is maintained by Yan Pujante and originated at LinkedIn which used it in-house.

like image 30
stigkj Avatar answered Oct 16 '22 03:10

stigkj