So it has been some time since I was at the DevoxxFR 2 years ago and had the chance to assist a few presentations regarding this "obscure movement" called DevOps and even tough I'm always interested in new stuff to play around with, coming out of the conference my feeling was "meh, I'll try it out sometime later"... and I never did...
But recently I got a task assigned : "install and configure a development and integration server"
The requirements were the following :
- Java JDK7
- Apache MAVEN
- Apache ANT
- GIT
- Subversion (SVN)
- Jenkins with the following plugins :
- Git plugin
- Apache MAVEN plugin
- Apache ANT plugin
- Jenkins should run on a custom port namely port 9999
Now I've done this several times and there's nothing really complicated about it. But usually when I do something more than a few times I try to find a way to automate things (apparently we developers are lazy by nature)
As I'm no sysadmin or Linux expert and installing and configuring these tools may be slightly different from one Linux distribution to another, I was looking for an abstraction layer that will handle all these specifics for me.
It has been some time now that I've been hearing about DevOps and tools such as Puppet or Chef but never had the chance to use them.
So this time it was the perfect occasion for a Hello world in the DevOps universe, since this was a fairly small and simple configuration
After Googling a bit I decided to use Puppet instead of Chef this is a personal preference since I find it's JSON syntax easier to read, plus somewhere I read that there were more Puppet Forge modules than Chef recipes (these are pre-configured "plugins" for easier install) out there, but once again this criteria may depend on what you are attempting to install
After following the getting started tutorial available here I must say I was surprised on how easy some things can be done (granted this is a pretty basic tutorial, but we must begin somewhere) I encourage you to read it before checking the rest of the post.
There are 2 puppet versions the Free and the Enterprise version as well as a client-server or standalone approach
With the enterprise version you get a few nice things like a GUI console, a repository where you can manage your scripts, but I prefer the self-contained standalone approach and this is what I will be showing here.
Below are the steps that I followed to achieve the task that was given to me :
1. Install Puppet
rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-7.noarch.rpm yum install puppetThis step is distribution specific (I'm using CentOS)if you are not go check the install instructions for your Linux distribution
2. Install Puppet modules
2.1 Java
puppet module install puppetlabs/java
2.2 Maven
puppet module install maestrodev/maven
2.3 Ant
puppet module install maestrodev/ant
2.4 Git
puppet module install puppetlabs/git
2.5 SVN
puppet module install maestrodev/svn
2.5 Jenkins
puppet module install rtyler/jenkins
3. Write your puppet script
include java include maven include ant include git include svn include jenkins jenkins::plugin{ "git" : ;} jenkins::plugin{"ant": ;} file_line{'jenkins_port': path => '/etc/sysconfig/jenkins', line => 'JENKINS_PORT="9999"', match => '^JENKINS_PORT=.*$', ensure => present }
These pretty simple puppet script will install the different tools by including each one of the plugins we previously installed and in the end it will change the default Jenkins to the one required by using a puppet function file_line to manipulate a file and replace a line that matches the regular expression
So there you go I had some fun playing a bit with Puppet and will surely use it again in a similar situation..
No comments:
Post a Comment