LAAAAAAADIESS ANNNNDDD GENNNELMEN…… LET’S GET READYYYYYYY TO RUMMMMMBBBBBLLLLLEEEEEEEE!!!!!!!!!

Ok, enough silliness. For the next few sentences anyway…

I’ve been using Puppet to mange systems for the last four years (at least!) however a new contract has meant I’ve needed to learn Chef. A few months ago I was looking for a blog post on the differences between puppet and Chef written from an objective point of view and the fantastic @nathenharvey produced a blog post about exactly that topic. The main take away from that blog post was that you should stop arguing about which is better and just make sure that you’re using some form of systems management tool, however there are many other good points made.

This post is more of a comment on my feelings about the two different systems and comparing the way in which they work.  Unlike Nathen, I didn’t have to make any of the WIIF decisions – the only question I had to ask was “Oh, they use Chef. Do I want a contract?” to which the answer to the second part will always override the first. I am new to Chef (I’ve been using it for a total of four hours now!) however I’m already starting to see some of the differences and I hope that this post will help others who find themselves in my position.

(more…)

This post is more of a reference for myself than anything else, however I thought it might come in handy for some others.  It’s bastardised from the install.sh which comes with nventory and will configure an Amazon Linux AMI for you.

The install script below installs nventory, rubygems and nginx from source and everything else from either the Amazon repo or Epel.

This means that you can install and configure this system on the Amazon Free Usage Tier using the “tiny” Amazon Linux ( amzn-ami-2011.09.1.x86_64-ebs ) and get a complete inventory server and puppetmaster for a year at zero cost!

(more…)

Table of contents for Continuous Delivery of Server Configurations

  1. A New Hope…
  2. Deploy and Roll-back system configs with capistrano, mcollective and puppet
  3. Putting the butler to the test

The last two posts in this series have covered what the overall system will look like and how to ensure your puppet server is ready to receive the files from the SCM repo via capistrano – This post will cover setting up the test server using JenkinsCI and creating some tests.

We start by installing Jenkins.

(more…)

Table of contents for Continuous Delivery of Server Configurations

  1. A New Hope…
  2. Deploy and Roll-back system configs with capistrano, mcollective and puppet
  3. Putting the butler to the test

I’ve been playing around with Capistrano over the past few weeks and I’ve recently created a way to use the power of Capistrano’s “deploy” and “rollback” features with Puppet and MCollective to enable me to have complete control over the deployment of my system configurations. (more…)

Table of contents for Continuous Delivery of Server Configurations

  1. A New Hope…
  2. Deploy and Roll-back system configs with capistrano, mcollective and puppet
  3. Putting the butler to the test

OK, it’s May the fourth as I’ve started to write this and I couldn’t resist the title, but I hope that this first post in what I aim to deliver as a series of tutorials will help you move towards full testing, integration and deployment of your systems and turn what could be a five hour manual build and deploy routine into a single code commit.

(more…)

Deploying web applications can be a real nightmare at times, especially when you have numerous SVN repositories of code which all link together when installed on the server to create your application.

I’ve started using Murder to try and work around the headaches and apart from a very small issue (which I’ll discuss at the end!) it’s working perfectly.

(more…)

OK, so a few people heard that I was playing with RabbitMQ and MCollective and hinted (less than subtly I might add!) that a blog post might be in order, so here it is.  If you want someone to blame, look no further than @patrickdebois and @garethr :)

The original issue was as follows:

  1. I already use MCollective with ActiveMQ over STOMP, but the XML config format is a nightmare.
  2. I want to use LogStash but that uses AMQP and ActiveMQ doesn’t support that.
  3. I don’t want to have to run two message queuing servers on my network.

@ripienaar mentioned that he’d managed to get MCollective working with RabbitMQ’s new stomp plugin, and RabbitMQ is the AMQP server suggested by the logstash site.  This looked promising – could I really kill two birds with one stone?

The answer – I’m pleased to announce – is yes, I was able to kill two birds with one stone, and this is how I did it…

(more…)

Edison now has basic support for templating in kickstart/FAI files:

Using the templates

  • http://edison/api/kickstart/ – returns the value from the AutoInstallFile field on the Configuration Item Profile when sent the X-RHN-Provisioning-Mac-0 header

The kickstart output is based upon the value in the ConfigurationItemProfile.AutoInstallFile field. There is now support for rudimentary templating:

<<hostname>> is replaced by the value of ConfigurationItem.Hostname for the MacAddress sent
<<tree>> is replaced by http://<EDISON_SERVER>/cmdb/installtree/<ConfigurationItem.Hostname>/ - this will enable you to configure an install tree based upon the host or profile
<<rootpw>> is replaced by the value of rootpwhash as set on the configuration item
<<bootdev>> is replaced by the macaddress used to request the kickstart

As an example, if you were to put a line in the AutoInstallFile field as follows:

# Network information
hostname = <<hostname>>

then with a host called laptop.local.domain, you would get the following in your kickstart file:

hostname = laptop.local.domain

Next step – making the install tree work correctly!

We’re nearly there… :)

*** UPDATE ***

Yesterday’s code didn’t work properly – The latest commit now has this working!

*** END UPDATE ***

OK, so we still don’t have a decent GUI yet (we’re working on it, honest!) but we do now have support for Kickstart/FAI/Unattend files to be delivered over HTTP via the API on Edison.

“How do I use it?!” I hear you ask… well, it’s pretty simple really and it will be even faster once we write the GUI.

Here’s how to get your Hamster kicking your systems into life…

(more…)

I’ve just pushed a load of code to Github for a project I’ve been working on in my spare time.

The project is named after one of the developer’s ex-hamster (it had to go back to the shop for being too violent, but we’d named the project by then!) and is designed to combine Change Management, Configuration Management, Auditing and integration with tools like Puppet through a DJango-based website and API.

(more…)

Switch to our mobile site