reclass is an “external node classifier” (ENC) as can be used with automation tools, such as Puppet, Salt, and Ansible. It is also a stand-alone tool for merging data sources recursively.
The purpose of an ENC is to allow a system administrator to maintain an inventory of nodes to be managed, completely separately from the configuration of the automation tool. Usually, the external node classifier completely replaces the tool-specific inventory (such as site.pp for Puppet, ext_pillar/master_tops for Salt, or /etc/ansible/hosts).
With respect to the configuration management tool, the ENC then fulfills two jobs:
reclass allows you to define your nodes through class inheritance, while always able to override details further up the tree (i.e. in more specific nodes). Think of classes as feature sets, as commonalities between nodes, or as tags. Add to that the ability to nest classes (multiple inheritance is allowed, well-defined, and encouraged), and you can assemble your infrastructure from smaller bits, eliminating duplication and exposing all important parameters to a single location, logically organised. And if that isn’t enough, reclass lets you reference other parameters in the very hierarchy you are currently assembling.
The latest released reclass version is 1.4.1. Please have a look at the change log for information about recent changes.
For now, reclass is hosted on Github, and you may clone it with the following command:
git clone https://github.com/madduck/reclass.git
Please see the install instructions for information about distribution packages and tarballs.
There is a mailing list, where you can bring up anything related to reclass.
For real-time communication, please join the #reclass IRC channel on irc.oftc.net.
If you’re using Salt, you can also ask your reclass-and-Salt-related questions on the mailing list, ideally specifying “reclass” in the subject of your message.
reclass is © 2007–2014 by martin f. krafft and released under the terms of the Artistic Licence 2.0.
These documents aim to get you started with reclass:
“reclass” stands for recursive external node classifier, which is somewhat of a misnomer. I chose the name very early on, based on the recursive nature of the data merging. However, to the user, a better paradigm would be “hierarchical”, as s/he does not and should not care too much about the implementation internals. By the time that I realised this, unfortunately, Hiera (Puppet-specific) had already occupied this prefix. Oh well. Once you start using reclass, you’ll think recursively as well as hierarchically at the same time. It’s really quite simple.