This repository collects all the Next-gen Example42 Puppet modules ( www.example42.com ), included here as git submodules.
The offical repository of Example42 Puppet modules ( github.com/example42/puppet-modules ) is going to contain both old and next-gen modules for a transition period that should last until all the modules are migrated. Old and new modules can cohexist on the same setup, but new modules have different usage patterns.
You can get the Next-gen only module set with:
git clone --recursive git://github.com/example42/puppet-modules-nextgen.git
To update your local copy with the upstream version:
cd /etc/puppet/modules # Or the directory where's you local copy git pull origin master git submodule init git submodule update git submodule foreach git pull origin master
The main features of Example42 Puppet modules (second generation):
-
Coherent and standardized structure, logic and usage based on best practices
-
Cross OS support (main targets are Redhat and Ubuntu derivatives)
-
Use of parametrized classes and fully qualified variables for Puppet Telly compliance
-
Full and coherent API exposure and classes introspection
-
Separation between core module and user’s customizations, no arbitrary logic enforced.
-
Optional Puppi support for application deployments and “Puppet knowledge to the CLI”
-
Optional automatic Monitoring support based on an extensible set of tools
-
Optional automatic Firewalling support
-
Decommissiong support: you can remove (almost) whatever you’ve added
-
Complete documentation compliant with PuppetDoc
-
Integrated rspec-puppet tests. Code puppet-lint compliant (as much as possible)
-
Based on common “foo” templates for easy scaffolding on the modules.
Generally there’s a module for each application and each module is a separated git submodule than can be indipendently retrived from GitHub. There are some special modules or directories with different functions:
-
Example42-tools/ is actually not a module. It contains scripts useful for maintenance of the modules. No Puppet code there.
-
example42/ is a sample project/customer/site specific module. It contains files and subclasses specific to the Example42 test lab. Here are supposed to be placed all the customizations, and ideally this module (or the equivalent with your company name) is one of the few parts where to make changes.
-
foo/ and foo_whatever/ are sample template modules that are used for scaffolding new modules (that then are customized and enriched according to the specific application)
-
stdlib/ is PuppetLabs standard set of libraries. A collection of useful resources and functions that are used in the Example42 modules. This is a required prerequite for all the modules.
-
stdlib42/ is a set of fuctions and resources specific to Example42 modules. Also this module is a common prerequisite.
-
puppi/ is an Example42 Puppet module that can be used to automate and simplify the deployment of (web) applications and provides a CLI command that exposes most of the information that Puppet has (and defines) about the system
-
monitor/ is an Example42 “meta-module” used for monitoring abstraction. It contains the definitions to use different monitor tools for a set of common resources
-
firewall/ is an Example42 “meta-module” used for firewalling abstraction.