Puppet Server drops Ruby for Clojure

The automation tool chooses Clojure on the JVM to improve speed and programming convenience, and shows the evolution of Puppet's design philosophy

arrow diagram flow chart

Puppet Labs, creator of the versatile automation tool that shares its name, has pulled back the curtain on a new project: Puppet Server.

Puppet Server, as the name implies, is meant to be "a next-generation alternative to our current Puppet master." Its touted advantages are speed -- Puppet Labs claims it's anywhere from two to three times faster, depending on the task -- and a design that hews to service-oriented architecture.

The most striking change is the language used to build the product. While previous versions of Puppet were built using Ruby, Puppet Server uses Clojure, a functional language that runs on the JVM.

In an April blog post, Puppet Labs went into detail about its rationale for making the switch. The JVM, the company stated, has a venerable history as a platform, with a wealth of instrumentation and debugging tools, as well as a broad degree of portability across systems.

As for Clojure, it has features that "make it an ideal choice for back-end services development" with strong controls over concurrency and mutability and access to the range of libraries offered by Java. Clojure was also used to build PuppetDB, the storage service Puppet uses to stash the data it generates.

Core pieces for Puppet Server were published earlier this year by Puppet Labs, most notably the Trapperkeeper framework -- "a Clojure framework for hosting long-running applications and services," as Puppet Labs explains it. The point of creating Trapperkeeper was to guarantee consistency and robustness across Puppet's products going forward.

Right now, the agents remain "vanilla Ruby," as Puppet Labs puts it, so there's little sign that modules -- the packages used to describe tasks in Puppet -- will need to be reworked. The JVM does support Ruby by way of JRuby, so it's possible that a future, Clojure-powered version of an agent will invoke JRuby for the sake of compatibility.

InfoWorld's Paul Venezia took a look at Puppet in context with its major competition -- Chef, Ansible, and Salt -- and found that Puppet had the biggest mind share of the four products and represented the most complete picture for data center orchestration. That said, the best features in Puppet seem to be reserved for its for-pay enterprise edition, which seems unlikely to change with this new Clojure-based iteration.

Copyright © 2014 IDG Communications, Inc.