Puppet Module Bounty: Logstash, Riak, and Graphite
We’re always looking to add awesome Puppet modules to the Puppet Forge. We often get requests for modules for stuff we aren’t working on, but we know there are community members with tons of experience, or private modules covering the material. We’re launching a contest to get these modules polished and published on the Puppet Forge. In short, we’re hoping to generate interest in a few of our favorite tools.
Rules of the Contest
To win, you’ll publish the best example of one of these three modules on the Puppet Forge. Ryan Coleman (your Puppet Forge and module product owner) and I will judge based on the following criteria.
The three bounty modules are:
- Module to install/setup/configure logstash
- Module to install/setup/configure riak
- Module to install/setup/configure graphite
These modules should contain thorough documentation and be generic enough to drop into most environments. I know many people already have modules in their environments to do these things, so clean them up and get them submitted! To turn in a module for review, upload it to the Puppet Forge, and then tweet @ryanycoleman. Modules will be reviewed as they come in, and submissions are open until September 10th. Bounties may be claimed before the 10th if the module is worthy, so early submissions have a bit of an edge. We’d love for these to be Apache 2.0 licensed if possible.
Module Criteria:
Musts
- Your submission must be made to the Puppet Forge (forge.puppetlabs.com).
- Modules must work on Ubuntu Precise, EL6 and Debian 6. Working on other platforms is a bonus, and will help with final evaluation.
- Daemons must be controllable via init systems, so that might mean writing or patching some init scripts as well.
- Modules must ship with clear documentation that describes how to use the module, what the module will do, and any pre-requisites.
Shoulds
- Prefer defined types or native resource types over execs.
- Puppet manifests should pass the puppet-lint test (warnings are okay, failures are not).
- When possible, don’t install software from source. Packages from repositories are a huge plus.
Bonus:
- Working on more platforms than required
- rspec-puppet tests
- proof of using the module in production in some way
- Apache 2.0 licensed
Modules can be complex (if you want to break things out onto separate roles), but may also be simple (like an intro-to-the-technology modules). We’d really like to avoid installing from source, so package repositories are a huge plus. You’re more than welcome to depend on other Puppet Forge modules.
Winning
We’re offering $75 Amazon Gift Cards and the (not yet released) new Puppet t-shirt to the winners.
We’re looking forward to seeing your modules!
(Mike and Ryan, excited to see your modules.)
Remember, just upload your module to the Puppet Forge and tweet @ryanycoleman to let us know you’re entering the contest.
EDIT: The fine folks at Basho are offering some additional goodness—check the comments for details on increased incentives in schwag and awesome conference ticket. We’d also like to open the comment section up as a “resources” section—if you have code or knowledge that may be useful for one of these modules, feel free to drop it there if you want to help other people out.
Learn more:

14 Comments
Love the initiative.
As a bonus (and if the Puppet crew isn’t opposed), Basho will throw in the following for those of you writing Riak code:
* Basho/Riak swag for *all* people who submit their module
* A RICON [0] ticket for the Riak module winner (assuming the winner is announced before the October 10th conference date)
@pharkmillups
[0] ricon2012.com
At the risk of being helpful, here’s something to get the ball rolling. This is the graphite module cruelly ripped from the internal Puppet Labs operations nest. It’s rough round the edge but hopefully the community at large will find it useful.
TehHubs/puppetlabs/puppetlabs-ops-graphite
I’ve been working on a Puppet / Logstash module on and off for a few months. Started with this module:
https://github.com/KrisBuytaert/puppet-logstash
The biggest issue with Logstash in the context of this bounty is getting it installed via software repository. I’ve been working exclusively with CentOS so far, but Logstash doesn’t have a traditional install, it’s just a monolithic jar file running a jruby stack. I’ve worked around this by packaging up my own Logstash rpm and serving it from a private repository. This works but may not be great for all cases.
I have included a java wrapper installation in my module which solves the service init problem but I wonder if it wouldn’t be better to create a more generic, standalone java wrapper module.
To give folks a leg up on writing out Erlang configs for riak, check out the erlang_template_helper: https://github.com/dreverri/erlang_template_helper.
Jason,
I’d love to see patches and contributions to my logstash module !
I’ve also been thinking about factoring out the stop start stuff and use indeed a more generic Java Service Wrapper module .. so that definitely is in the pipeline .. but I`m not going to promis on any timelines ..
We at Basho have moved to using the erlang_template_helper: https://github.com/dreverri/erlang_template_helper for writing out configs programatically. We currently use this for Chef cookbooks and it should be easy to integrate into a Puppet module.
@Kris, all I did was write a simple upstart script?
https://github.com/haf/puppet-logstash/blob/master/files/logstash.conf
In order to write proper modules, perhaps you should fix the ability to do TDD? https://github.com/rodjek/rspec-puppet/pull/41 I’m stuck right now at the rspecs not loading all types and providers of mine, properly.
Kris:
My plan was at some point to push my changes back to you, but I’ve since changed jobs and I’m not working with Puppet as much right now. I have the code but I haven’t really looked at how much I changed, or what I broke in the process. Maybe I can just push those changes as a fork and we can diff them. I know I required a Yum package from a private repository, and I had to build that myself, so it’s pretty much broken right there. And I did nothing to help make it work for Ubuntu, Debian, just RHEL / CentOS.
Kris/Jason,
Sounds like we’ve all been chipping away at Kris’ original logs tag module, I have the java init script sorted in mine (templated, easy to split out if required. I also added the option to pull a logstash jar from a URL, and default to redis as the MQ, I need to rework my config/params class though)
https://github.com/simonmcc/puppet-logstash
(it no longer thinks it’s a fork or Kris’s, but I’d be happy to re-fork & submit pull requests back)
Entering on the Graphite side, my company BrightRoll is sharing our Graphite manifest. It’s on GitHub, via PuppetForge: https://forge.puppetlabs.com/sodabrew/graphite We’re excited about getting an even better manifest back!
So, when will the winners be announced? It just so happens I have a graphite setup to start on, and I’d much rather submit patches to a module with momentum than write YAGM (Yet Another Graphite Module).
To anyone else wondering, it looks like they will be announced next week: https://twitter.com/puppetlabs/status/246002225716019200
Puppet Module Bounty Winners: Riak, Graphite, and Logstash | Puppet Labs
[...] August 20, we kicked off our first ever Puppet module bounty contest. Our goal was to see if we could spur awesome Puppet [...]