Earlier this week, we kicked off our new Puppet Enterprise supported module program by announcing the first set of such modules with the release of Puppet Enterprise 3.2. You might be wondering at this point what exactly “supported modules” means, which modules are supported — and how you can get your favorite Forge module supported. I’ll cover all that in this post.
The following Puppet Forge modules have supported releases that are immediately available for your use (and some have blog posts with additional information):
- puppetlabs-ntp - Blog post is here.
- puppetlabs-mysql - Blog post is here.
- puppetlabs-apache - Blog post is here.
- puppetlabs-registry - Blog post is here.
- puppetlabs-postgresql - Blog post is here.
Starred (*) modules are pre-installed on Puppet Enterprise masters. If there are any updates to these, you will find them on the Puppet Forge.
With Puppet Enterprise supported modules, common services are easy to set up, implement, and manage dependably with Puppet Enterprise, without needing to write much Puppet code. Each supported module:
- has been rigorously tested with Puppet Enterprise 3.2.
- is supported by Puppet Labs as part of your Puppet Enterprise Support plan.
- will be maintained over the lifecycle of each Puppet Enterprise release, with bug or security patches released as necessary.
- is tested on, and compatible with, the agent operating systems Puppet Enterprise supports.
We've done a lot over the last several months to dramatically improve and test these modules. They are ready for production deployments, and Puppet Enterprise customers can expect full support when using these modules to automate core services.
With this release, we built a thorough testing and delivery process for Puppet modules. We exercised it to deliver supported versions of the most popular and valuable modules Puppet Labs has to offer on Forge. We'll expand the number of modules we support for use with Puppet Enterprise throughout the year.
Though we're proud of the modules Puppet Labs has built, we know we don't have the expertise to create a module for automating every piece of software you use. That's why the Puppet Forge is such a wonderful resource. Nearly 700 individual namespaces have contributed an average of three modules each, enabling Puppet automation of nearly anything you can think of.
Even more staggering is the number of people who contribute to Forge modules other than their own. Our puppetlabs/apache module, for example, has received contributions from more than 120 people! Most contributors don't actually work for Puppet Labs, including three of the top five. Thank you Aethylred, blkperl and igalic! The Puppet Forge wouldn't be the great resource it is without countless community members contributing not only their own modules, but contributing to modules written by others.
I'm excited to say that we'll begin working with many community module authors later this year to support their modules for use with Puppet Enterprise. This will be beneficial to the community as a whole for a number of reasons. Here are a couple of the most important.
Your module will be tested against each Puppet Enterprise release before it happens.
Naturally, the main benefit of Puppet Enterprise supported modules is that they're thoroughly tested and supported for use with Puppet Enterprise. We'd like to make it easy for your module to get the same treatment. By testing your module against Puppet Enterprise, you're making a long-term promise of stability against not only Puppet, but versions of Facter, Hiera, Ruby and everything else that makes up Puppet Enterprise. Our new Beaker acceptance testing framework is a big first step towards easy module testing with Puppet Enterprise. I wrote more about that on Puppet-Dev last month.
Community authors can reliably build on top of supported modules.
One of my favorite things about the Puppet Forge is the benefits authors get by depending on other modules. Whether you're building on top of puppetlabs/stdlib or bringing in EPEL with stahnma/epel, you should be able to create your own custom modules more quickly and reliably by drawing on the rich store of modules in the Puppet Forge.
With Puppet Labs helping to maintain supported modules over the lifecycle of any given Puppet Enterprise release, these modules will continue to provide a stable base that everyone can rely on.
Getting Your Module Supported With Puppet Enterprise
If you're interested in having your module supported by Puppet Labs for use with Puppet Enterprise, we'd like to help you make it happen. We have a lot of work ahead of us to make it possible, but few things are more important to us this year.
Our initial focus will be on improving Beaker, making it simple to express what success looks like, and validating that against Puppet Enterprise on all the operating systems it supports. We're exploring making our module CI environment available, starting with the Puppet Labs modules we support today.
Around the middle of the year, we'll establish a process that will let you provide input on which Forge modules should be supported and how to help make a module supported. Together, we'll need to crisply define the attributes that make up a high-quality supported module (like lint, platform support and tests), and provide tools for understanding how modules measure up to these criteria.
I'll be kicking off a number of these discussions on the Puppet-Users list in the coming weeks. We're in the earliest stages of developing this program, but I want your feedback early and often. You may email me -- ryan AT puppetlabs.com -- or ping me on Twitter: @ryanycoleman. I can also be found as ryanycoleman in #puppet on Freenode IRC.
Here's a demo video where I walk through the installation of the Puppet Enterprise supported module for ntp:
Ryan Coleman is the product owner for the Puppet Forge.
- Get started with Puppet Enterprise supported modules on the Puppet Forge.
- We've produced blog posts with use cases and example code for several of our new supported modules: puppetlabs-apache, puppetlabs-mysql, puppetlabs-ntp, puppetlabs-postgresql and puppetlabs-registry.
- Download Puppet Enterprise 3.2.
- Join the discussion on the Puppet-Users Google Group.
- Read more about the other improvements you'll find in Puppet Enterprise 3.2.