Back to sessions

Automating server installation and maintenance with Puppet

Hands-on session presented at BelgAF, together with Johan Peeters, 17/10/2012


In this session we did a tryout with the BelgAF audience of a session that will take place on XPdays, November 2012, directly followed by discussion on the architectural importance of tools such as Puppet.

Before we used Puppet, server infrastructure was a source of frustration. It was something we did not have under control. Here are 2 examples from our experience:

  • In application development, you invariably need a server to test on while developing, one for integration testing, one for acceptance testing, and then of course, the production servers. Would it not be good, if their setup was repeatable and automated, and you could rely on all those servers having exactly the same configuration? This is what Puppet enables.
  • If there are several development groups, they all need CI tools such as build servers and code repositories. Rather than setting those up by hand, you could be writing Puppet scripts to provision them. This has the added benefit of simplifying recovery from failure: when a server fails, you simply provision another one with Puppet.

Puppet is an open source configuration management tool that uses a declarative configuration language giving developers and system administrators control over complex server configurations. Puppet is designed to manage the configuration of Unix and Microsoft Windows systems. Puppet competes in the automated configuration management niche with other tools such as Chef and CFEngine.

In this session, we want you to get a flavor of Puppet’s possibilities and limitations by working through some hands-on exercises. At the end of the session, we share experiences and debate where the use of Puppet is appropriate.

The session is based on the tutorial and learning VM provided by Puppet Labs. We coach participants to work through the tutorial and provide help with the most relevant exercises. While the tutorial and learning VM are great for self-study, we believe we can accelerate participants? learning by focusing on salient points, encouraging to skip less important details and explaining poorly understood concepts. At the end of the session there is time to reflect on the use of Puppet and to discuss the experiences of participants and presenters.

After the session, you should:

  • understand the motivation for automatic configuration management
  • understand the basic Puppet concepts + be able to provision simple servers
  • have heard some experience reports on automatic configuration management

Some points of the conclusion during the discussion after the session:

  • Puppet fits in the broader movement that pushes for fast release cycles and continues deployment; this should be emphasized as it clearly has some architectural impact.
  • For a lot of people configuration management is at the periphery of software development; yet setting up and maintaining a good uniform infrastructure is a often a serious architectural challenge. Solutions like Puppet provide a basic architecture to do this and its basics should be known by architects.
  • There was an interesting question whether Puppet provides most of its added value to set up infrastructure or that its main merits are also within the area of application deployment and maintenance.