1

For a project I am working on, we have CI setup using Jenkins.

We now want to setup Continuous Delivery (CD) using Puppet.

Here is our dev environment specs

  • Windows 2008 Server
  • Jboss-SOA-P (jboss AS 5.1 app server) - 2 instances
  • Jenkins for CI
  • Installed Puppet Learning VM (as we are evaluating, so we don't have a license to install Puppet Enterprise).

My question is: How can I automate deployment of my application(s) on already installed Jboss servers (on Windows m/c) using Puppet?

Peter Souter
  • 5,110
  • 1
  • 33
  • 62
Chintan
  • 906
  • 4
  • 14
  • 30

2 Answers2

1

For my organization, I am using the following tools to achieve Continuous Delivery and Continuous Integration

Foreman: A provisioning and ECN ( External Node Classifier )

Puppet Master : This will be running in our main server

Puppet Agents: On rest of the servers

Jenkins: On main server

Nexus repository for maintaining staging and release repositories on another server

A nexus repository module installed in puppet master. It has the logic to connect to nexus repository, fetch the latest release from "release" repository.

Flow:

  • I have a jenkins job defined whose purpose is making sure the build doesn't break and at the time of release, I perform maven release
    that in turn upload the latest version to nexus release repository.

  • Load nexus repository module in foreman and map "Nexus" class to all my servers. This is the crucial part that allows me to perform cloud deployment with a single button click in foreman. To do this, you need to have your own puppet files that perform dbmigration, undeploy and deployment. I always write a deploy maven module for all my projects which will have only these puppet files that allows me to perform deployment in all servers in one shot.

Since you are already familiar with CI and CD, I hope my statements are self explanatory

Kenshin
  • 1,030
  • 2
  • 12
  • 41
0

Without knowing how you want your application deployed, it's hard to answer exactly how to do it. But I'll see if I can point you in the right direction:

There are existing modules on the forge to deploy JBoss with Puppet. I'd recommend looking through and seeing if you can find one that suits your requirements.

You could then integrate your source control to automatically deploy changes to your JBoss instance as they get checked in.

There's an example of using Puppet with Tomcat and Maven for continuous delivery here. It's a few years old, but the concepts still apply: http://www.slideshare.net/carlossg/2013-02-continuous-delivery-apache-con

Here's also an example from CloudBees for contionous delivery with Puppet and Jenkins (which has a lot of the engineers behind Jenkins) https://www.cloudbees.com/event/continuous-delivery-jenkins-and-puppet-debug-bad-bits-production

Plus a general PuppetLabs one here: https://puppetlabs.com/blog/whats-continuous-delivery-get-speed-these-great-puppetconf-decks

Also: I don't want to sound too salesly, and full disclosure, I work at PuppetLabs. But you can use Puppet Enterprise with up to 10 nodes for free, so I'd recommend that over using the Learning VM, which isn't really designed for hosting applications.

Peter Souter
  • 5,110
  • 1
  • 33
  • 62