[chef] Re: Is Chef a good fit for Java deployments?


Chronological Thread 
  • From: Peter Donald < >
  • To: " " < >
  • Subject: [chef] Re: Is Chef a good fit for Java deployments?
  • Date: Sat, 1 Jun 2013 07:37:08 +1000

Hi,

We automate a large collection of java services that are hosted on glassfish, tomcat or are command line applications. The artifacts are stored in nexus and the version of the artifacts deployed in each environment are stored as data bag items. We have 7 different environments and the promotion of an artifacts between environments is either manual(click a button to go) or automatic depending on the delivery pipeline. We use Jenkins to do the deploy which mostly involves updating a version in a data bag item and running chef client across a selection of nodes.  The release may involve multiple phases (I.e down application on nodes in reverse order, migrate data, up nodes) but ultimately we have a common approach to automating release that will rollback on failure.


One thing we don't do is use snapshot versions. Every artifact has a specific version that can be traced to a specific version in git.

It is true that not s many talk about automating java but there is some of us about. You may also run into different problems - long chef converge times due to persistent services. But other than that it is all good :)

On Saturday, June 1, 2013, wrote:
My company is looking at a way to automate Java deployments, and manage
environments. There are tools from the Java community that will automate
deployments, but they won't do configuration management more broadly, and none
of them are terribly well established.

Our environments are relatively diverse, but to start with, we'd like to manage
a collection of apps running on Tomcat servers. We build with Maven and deploy
CI snapshots and releases to an internal Nexus repository. In an ideal world,
I'd like to be able to do two things:

1. When a new release occurs, tell Chef that test servers should receive that
release by incrementing the version number. Then have Chef download the
binaries from Nexus (which I'm sure it can do with its Maven resource), and
pass them to Tomcat. It seems to me this should be pretty easy.

2. On development servers, have Chef continuously check the snapshots on Nexus
and perform the same installation procedure when an update occurs. This also
seems like it's probably achievable.

What worries me is that Chef doesn't seem to be very widely used for Java
environments, and I'm wondering if there's a reason. Am I going down the wrong
road, or does it seem like this is a good fit?

For background, Chef will also need to configure agents for Logstash and Nagios
(which I know it can do), and update an XML file that defines Logback logging
configuration for Tomcat.


--
Cheers,

Peter Donald



Archive powered by MHonArc 2.6.16.

§