Puppet: Ruby-based Server Management Automation Suite
The team at Reductive Labs recently announced the release of version 0.25.2 of Puppet, the open source Ruby-based configuration management and automation tool for Linux and Unix servers. In this software bug-fix release, 123 open tickets were closed, and the developers claim a reduced memory footprint, improved error reporting, threading, and lock contention (the latter apparently a source of reported system hangs).
Following a client-server model, and with its own declarative language, Puppet tries to solve one of the challenges of server systems administration: how to reliably automate server configuration management and distribution, an essential requirement in large datacenter deployements. A GigaOM article from November 2009 lists Puppet as one of the eleven top open source resources for cloud computing, while Matt Asay suggests Cisco should consider acquiring Reductive Labs as part of its current data center strategy:
[...] as Cisco goes after the data center with its new Unified Computing push, one open-source company should be on Cisco's radar screen: Reductive Labs, creators of the Puppet project, a framework for automating system administration
For system administrators it has been common for a long time to automate routine administration tasks via custom scripts. Maintaining such set of custom tools becomes increasingly complex as the number of servers, diversity of operating systems, or network complexity increases. Puppet is not the only configuration management tool around. Mark Burguess's Cfengine is another extensively used tool, as well as BCFG2, developed by the Argonne National Laboratory's Computer Science Division. We do not intend to compare the benefits of the different tools available, for those interested in the debate this blog posting by Luke A. Kanies is a good starting point.
Puppet approaches configuration management from an angle that is different from the traditional script-and-automate model:
- It provides a Domain Specific Language (DSL) to model the relationship between servers, services, and service objects
- It brings systems administration automation closer to the realm of software development, expressing an infrastructure in functional, repeatable lines of code
- Its level of abstraction provides a flexibility that is increasingly relevant as systems administrators are required to manage more heterogeneous configurations for server farms, may them be hosted in-house, at a hosting facility, or a cloud provider
Puppet is supported by an active development community. One of several additions which are available is a new web-based dashboard which was recently released. It currently provides two functional uses:
- Node configuration using parameters, classes, and groups
- Monitor Node status monitoring, with real-time reporting and change tracking
Like any new feature in open source, as the user community provides feedback and requests features the Puppet dashboard functionality is expected to change frequently as it evolves. The dashboard complements the Puppet featureset by providing a level of visibility and summarization of the infrastructure that is essential to the systems administration team responsible for managing it.