Puppet Blog

Back to Index

Puppet Module Bounty: Logstash, Riak, and Graphite

Posted on
By
Mike Stahnke
in
Blog, Community, Modules, Open Source
Responses
14 Comments »

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

Mark Phillips

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

Jason

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.

Kris Bujytaert

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

Jason

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.

Simon

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)

Justin Ellison

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

Leave a Response