A long time ago (well, June of this year) the Puppet Forge was running without a leader. In my role as community manager, I saw the Forge as having this awesome potential to be the resource for user-generated content surrounding the Puppet community. I knew it was getting more attention, but that was mostly anecdotal. My next step was to find some data that could tell a good story.
Puppet Modules are often the first way people learn and start using Puppet. We’ve had our Puppet Forge for a while, but I didn’t feel like I knew a lot about it. When we were getting ready to interview Product Owners for the Puppet Forge and Modules, I decided I wanted to know more to help me prepare for the interview, and maybe give me some insight into usage patterns that I hadn’t thought about.
Like any geek, I love data. I knew we had all sorts of data in our module download logs, but we had not ever really taken the time to transform that data into awesome information. I started with simple awk/sed/grep to find basic information, like what modules were popular. This worked for a time, but then I wanted to know modules by name, find popular authors, and do things like ignore version number changes.
This week’s Module of the Week is a guest post from Carlos Sanchez from MaestroDev.
Purpose | Manage Apache Maven installation and download artifacts from Maven repositories |
Module | maestrodev/maven |
Puppet Version | 2.7+ |
Platforms | RHEL5, RHEL6 |
The maven module allows Puppet users to install and configure Apache Maven, the build and project management tool, as well as easily use dependencies from Maven repositories.
If you use Maven repositories to store the artifacts resulting from your development process, whether you use Maven, Ivy, Gradle or any other tool capable of pushing builds to Maven repositories, this module defines a new maven type that will let you deploy those artifacts into any Puppet managed server. For instance, you can deploy WAR files directly from your Maven repository by just using their groupId, artifactId and version, bridging development and provisioning without any extra steps or packaging like RPMs or debs.
The maven type allows you to easily provision servers during development by using SNAPSHOT versions—using the latest build for provisioning. Together with a CI tool, this enables you to always keep your development servers up to date.
Purpose | Deploy, configure, and manage multiple instances of MediaWiki. |
Module | martasd/mediawiki |
Puppet Version | 2.6+ |
Platforms | CentOS 6, Debian 6, and Ubuntu 12.04 |
A wiki is a very popular way to share information within an organization as well as with the general public. Organizations and individual users who share information using a wiki often need to separate unrelated topics into distinct domains. Although most wiki software such as MediaWiki does not allow for this separation into isolated spaces by design, it is possible to achieve it via multitenancy. In the context of MediaWiki deployment, multitenancy means configuring multiple distinct wiki instances to use the same wiki installation. The objective of this module is to automate the process of Mediawiki installation and allow system administrators to get multiple instances of MediaWiki up and running very easily and quickly.
EDIT 10/24/12: The inkling/postresql module is now owned by Puppet Labs, and has been moved to puppetlabs/postgresql. You can contribute to the module on GitHub here.
Purpose | Manage PostgreSQL servers, databases, and users |
Module | Previously inkling/postgresql, now puppetlabs/postgresql |
Puppet Version | 2.7+ & PE 2.0+ |
Platforms | Tested on RHEL5, RHEL6, Debian6, Ubuntu 10.04 |
PostgreSQL is a powerful, high-performance, free, open-source relational database server. It hasn’t always enjoyed quite as much popularity as its cousin, MySQL; MySQL is enormously popular, as evidenced by its inclusion in the ubiquitous LAMP (Linux-Apache-MySQL-PHP) web development stack. However, these days there seems to be some increasing momentum behind PostgreSQL in many circles. At Puppet Labs, we are starting to use it more heavily—in fact, it’s a prerequisite for our new PuppetDB product.
With that in mind, it seemed important for us to make sure that there was a Puppet module out that made PostgreSQL as easy to manage with Puppet as MySQL is. We searched around on the Puppet Forge to see if anyone had undertaken this yet, and found several useful Postgres modules—but it was important to us that the module API would be familiar to users of the puppetlabs/mysql module.
We were particularly impressed with the functionality offered by the inkling/puppet-postgresql module, developed by Kenn Knowles of Inkling Systems, so we reached out to Kenn to see if he’d be amenable to us helping to refactor the module to leverage his existing functionality with an API similar to the puppetlabs/msyql module. He was, so, we did!
So here’s why you should check out the new 0.2.0 release of the inkling/postgresql module: