blob: 975bac0f425eb63437c16941aa7a6dbdfb292131 [file] [log] [blame]
martin f. krafft8acd49d2013-08-26 21:22:25 +02001|reclass| is an "external node classifier" (ENC) as can be used with
2automation tools, such as `Puppet`_, `Salt`_, and `Ansible`_. It is also
3a stand-alone tool for merging data sources recursively.
4
5The purpose of an ENC is to allow a system administrator to maintain an
6inventory of nodes to be managed, completely separately from the configuration
7of the automation tool. Usually, the external node classifier completely
8replaces the tool-specific inventory (such as ``site.pp`` for Puppet,
9``ext_pillar``/``master_tops`` for Salt, or ``/etc/ansible/hosts``).
10
11With respect to the configuration management tool, the ENC then fulfills two
12jobs:
13
14- it provides information about groups of nodes and group memberships
15- it gives access to node-specific information, such as variables
16
17|reclass| allows you to define your nodes through class inheritance, while
18always able to override details further up the tree (i.e. in more specific
19nodes). Think of classes as feature sets, as commonalities between nodes, or
20as tags. Add to that the ability to nest classes (multiple inheritance is
21allowed, well-defined, and encouraged), and you can assemble your
22infrastructure from smaller bits, eliminating duplication and exposing all
23important parameters to a single location, logically organised. And if that
24isn't enough, |reclass| lets you reference other parameters in the very
25hierarchy you are currently assembling.