Skip to content


Subversion checkout URL

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

Example42 Puppet Modules 2.0 : NextGen

Released under the terms of Apache2 licence.

Copyright Alessandro Franceschi / Lab42 (and specific commits authors)

Official website:

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

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

Something went wrong with that request. Please try again.