Example 42 Puppet Modules Design Philosophy and Goals
Features, hopes, todos and approach used
- Provide a "easy" and coherent Puppet environment
Standardized naming conventions and modules layout organization.
Modules structure follows Reductive Labs and Puppet's community guidelines.
Modules names are application oriented ( apache, lighttpd ..).
- Default working classes to adapt according to custom needs
Modules work "out of the box" with default configurations.
A module default class just installs and eventually runs the application.
Customization and personalization should be easy to do and integrate for different cases.
- Wrappers for common functions
Use of wrappers to standardize common functions indipendently of the software used:
"Config" wrapper to manage inline modifications of files using different methods (Augeas, replaceline... ).
"Monitor" wrapper to monitor hosts and service with different tools (Munin, Collectd, Nagios...).
"Backup" wrapper to manage backus of directories using different methods
Evaluating other wrappers such as "Firewall", "Link", "Audit"...
- System Administrator oriented
Puppet code tends to be simple. Standard classes have similar structure.
Freedom to modify configuration files via templates, static files or single inline modifications.
"Puppettization" of an existing infrastructure should be easy and done step by step.
- Cross Operating System
Support for different Operating Systems, versions and architectures.
Default values are Redhat based. Existing support for Debian
Planned support for Suse, Solaris and FreeBSD.
- Fitting for heterogenous projects and network infrastructures
Include only the modules you choose. Use internal or external nodes tools (Foreman, Puppet Dashboard).
For internal nodes, different architectural designs are suggested in the separated Example42 Puppet Infrastructures git repo.
- Best practices references
Application installation and default configurations are oriented to best practices.
Subclasses are defined in order to use optimized configurations and extend standard functionalities.

