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