Example42 Puppet Modules Version 2.x
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Example42-documentation @ d267ef2
Example42-templates @ 6977aec
Example42-tools @ 04d6a23
Example42-tutorials @ 2433aef
activemq @ fe9f13e
apache @ 054dde3
apt @ 5b97d09
auth @ 057cc21
autofs @ 5770157
bacula @ 190348f
bind @ 1207a6c
bluepill @ a847aec
bundler @ a14502c
c_icap @ 3c65b8e
ceph @ db3440e
clvm @ 150c099
concat @ 1e63ec4
ddclient @ 83ec331
dhcpd @ 8aff779
django @ 561921a
dnsmasq @ 3ab0bcb
dovecot @ 9885e86
elasticsearch @ 35f65e2
example42 @ 138fa8f
exim @ 1805299
exported_vars @ a18ff4b
eye @ b36a67e
firewall @ 83b2aed
foreman @ c8aaf91
freeradius @ f63e92d
git @ 3f36a44
glance @ 3ab09c4
graylog2 @ e876f01
haproxy @ 0cfbff9
heartbeat @ 11e75bd
hosts @ 409fa47
icinga @ 8beba07
inittab @ 3883648
iptables @ 008cadf
java @ 8dc81d2
jboss @ 614c95d
jenkins @ 412cea7
kibana @ ccd158e
libvirt @ 1519033
lighttpd @ c2f1da1
logrotate @ 95d1200
logstash @ d3b2602
lsb @ c8b421f
mailx @ 19f67bc
maven @ d3248e8
mcollective @ 9762579
mongodb @ f1dae19
monit @ 5c7c94c
monitor @ 140110c
msmtp @ 07e14ab
multipath @ bb322a2
munin @ 354dcfe
mysql @ 5f50eea
nagios @ 3007296
newrelic @ 7faa392
nfs @ 794dac8
nginx @ 5f2010e
nova @ 744a028
nrpe @ d50e090
ntp @ 56e8f3e
nut @ d0a70b8
openntpd @ 2c5fcb4
openssh @ b187e50
openvpn @ 86ff57b
openvswitch @ 9c9f727
orientdb @ 1c7ab8c
pam @ 81b4bad
pdns_recursor @ 5fe32a8
pentaho @ b1d144f
perl @ 9701769
php @ 55030ca
postfix @ ed576b6
postgresql @ 0c00e26
profile @ f4b9f98
proftpd @ 2130978
pupmod-concat @ 00cfb65
puppet @ 4c1191d
puppetdashboard @ 571534e
puppetdb @ 6f6cef9
puppetdbquery @ 6a5c06b
puppi @ c235fa0
quantum @ bb9f900
rclocal @ f51cee5
redis @ b815141
resolver @ cd18cde
rhcs @ 3b33d44
rsync @ 58a2d09
rsyncssh @ 234c235
rsyslog @ 77f728c
ruby @ 3772aff
rvm @ bc0094a
samba @ 8b804f8
scmserver @ 364a412
sendmail @ 0806d53
snmpd @ 06d62a2
solr @ 190895c
splunk @ c377d98
ssmtp @ 90c7583
stack @ ee21b1c
stdlib @ d60d872
stunnel @ 51ae74f
sudo @ d574971
svn @ 6005f36
sysctl @ aabd722
sysklogd @ fe75150
syslog-ng @ ff82e68
tartarus @ bee40d3
tcpwrappers @ 64d8daf
tftp @ 67eb4e5
timezone @ e016e4d
tinc @ 1c8823b
tomcat @ 743a6ff
unicorn @ f967dec
user @ ff56e1e
vagrant @ 70ef46a
varnish @ 27e15a3
vim @ 5c60c46
vsftpd @ 03a9000
wget @ 60d0447
wordpress @ 9b88489
xinetd @ c7f392d
yum @ 4bf461f
zabbix_agent @ 3b80278
zip @ 31656c6


Example42 Puppet Modules 2.0 : NextGen

Released under the terms of Apache2 licence.

Copyright Alessandro Franceschi / Lab42 (and specific commits authors)

Official website: http://www.example42.com

Official Support forum: Google Groups

This repository collects all the Next-gen Example42 Puppet modules, included here as git submodules.

The official repository of Example42 Puppet modules on GitHub currently contains both old and next-gen modules for a transitional 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 and are generally recommended.


From September 2013 most of the modules are published, and regularly updated, on the Puppet Forge.

Use the Puppet module tool to query and install Example42 modules:

    puppet module search example42

You can get the Next-gen only module set with:

    git clone --recursive https://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

If you want to force an update on each submodule, even if not tracked on the main repo:

    git submodule foreach git pull origin master

The above commands (excluded the first cd and included the last) are done by the script:


At times you may need to resync git modules urls. You can do that with:

    git submodule sync

You can test these modules on a safe environment using the Example42 Puppet Playground. Check it out!


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 3 compliance

  • Full 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.


You can find more documentation in the Example42-documentation directory.

Some Usage examples are in the example42 module.

A presentation about the features of NextGen modules: Puppet Modules: A Holistic approach.

An introductory Blog Post: The next generation of Example42 Puppet modules.

The official Support forum is on Google Groups use it for questions and discussions.


Generally there's a module for each application and each module is a separated git submodule than can be indipendently retrieved from GitHub. There are some special modules or directories with different functions:

  • Example42-tools/ contains scripts useful for maintenance of the modules. No Puppet code there.

  • Example42-documentation/ contains documentation about Example42 Puppet modules and their usage.

  • Example42-tutorials/ contains Puppet the markdown code for Puppet Tutorials slides.

  • Example42-templates/ contains various differnet templates for modules' layout. The ones with the 42 suffix are used as starting scaffold for these modules.

  • 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.

  • 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. Puppi is a required dependency for all the Example42 modules because it contains some functions used by them, BUT you are not forced to use it. You just have it among your modules to retrieve (via pluginsync) the common functions.

  • 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.


Currently the modules are generally tested on the following Operating systems:

  • RedHat / Centos versions 5 and 6

  • Scientific Linux version 6

  • Debian 6

  • Ubuntu 10.04 and 12.04

  • OpenSuse 11 and 12

  • Suse Enterprise Linux 11

Some of the modules have support for:

  • Solaris 11

Most of the modules are expected to work on:

  • Amazon Linux

  • Fedora

  • Mint

If you need support or better testing for specific operating systems and versions the best thing you can do is to provide a usable Vagrant Base box for the Example42 Puppet Playground.


Pull requests via GitHub are welcomed, please review the general style and logic of the modules in order to submit consistent patches.

Do not keep your fork detached from the upstream version, please!

These modules are intended to be used anywhere without any modification of their content: if you have to change them to suit your needs either they have some bugs or missing features or you're using them in the wrong way.

Bitdeli Badge