hw-cookbooks/graphite — pull request #147 by webframp (2014-03-08 20:52:15+00:00)
Title: WIP: The future of the Graphite Cookbook

There are some big changes in the works for this cookbook, so hopefully this PR will shed some light on the currently ongoing work. These will be breaking changes, so **you will need to pin your desired cookbook version if you do not want to break any existing graphite installations**.

The work on this branch represents the new direction this cookbook will take when it becomes **v1.0.0**. This has been a long time coming and is the result of much thought about how best to design this cookbook in light of evolving standards in the Chef community. This cookbook was initial release in 2011 and a lot of things have changed in the Chef ecosystem since then.

As currently planned, the biggest changes will be:

#### It will become a library cookbook

Graphite can be setup in any number of ways, from very simple single node installations to complex clustered (federated), horizontally scalable installations. It's impossible for a single cookbook to sanely meet all these need while still being a good example of chef cookbook design patterns.

As a library cookbook `graphite` will provide the necessary collection of resources, helper libraries and partial recipes to be fully reusable in any application/wrapper cookbook scenario.

We intend to keep functioning examples of possible deployment scenarios alongside this cookbook. These will be based on well known patterns for deploying graphite. See [Clustering Graphite](http://bitprophet.org/blog/2013/03/07)/graphite/ and [Federated Graphite](http://rcrowley.org/articles/federated-graphite.html) for more info.

#### It will be fully tested

Cookbook testing has matured to a point where it is now possible to have very complete test coverage for infrastructure code. We intend `graphite` to be a good example of this and it will standardize on the following excellent testing tools:

* [ChefSpec](http://code.sethvargo.com/chefspec/)
* [ServerSpec](http://serverspec.org/)
* [Test Kitchen](http://kitchen.ci/)

These tests will be run automatically using [Travis CI](https://travis-ci.org/hw-cookbooks/graphite). Passing tests will become a requirement for accepting contributions.

The functioning examples of graphite deployment scenarios mentioned previously will ship alongside the cookbook in this repository and will be part of the test suites run by Test Kitchen.

#### It will follow SemVer versioning

Moving to a `v1.0.0` release will hopefully safely alert ones to breaking changes, but also allows us to follow proper [Semantic Versioning](http://semver.org/) as best as possible in a chef cookbook release context.