The Chef Win Series is a response to: "How has Chef changed our operations for the better, in the past 2 years since our shop adopted it?"    Example:

Testing, Made Real

Two years ago I was trying to explain to my partner - an ops guy - why devs love automated testing. "You see, I often develop one thing, only to break something else without realizing it. This is my life as a dev. So I use automated regression testing as a safety net."

Like most things that devs say, my partner did not even pretend to listen. But he was implementing many new Chef recipes, and as he built them - especially with multiple recipes on the same box - he began experiencing some of this same need to automate regression tests.

You need to test your Chef recipes. Like it or not, you're a dev now, even if you call yourself an ops guy.

Looky Here: Test Kitchen

The months had moved along, Jeff's Chef portofolio was growing in size.

I had been intending to show my ops partner how to write tests, maybe even learn some Ruby test basics myself, but I had never gotten around to it.

"Says here there is a new way to build recipes, starting with a test harness"  Not only could you do your regression testing, but you create your entire Chef template setup with a test. Niiiice. Show me more!

The months went by, Jeff never looked back. For a while, I think he even forgot how to write a cookbook without Test-Kitchen. Everything started with "kitchen create ...", and it worked well enough to use for the entire Chef development process.

Jeff later learned how to extend Test Kitchen files to run more extensive tests. It's been an important part of our regimen.


WTF? Puppet and Ansible Plugins?

How cool is test-kitchen? So cool that the Puppet and Ansible guys have created plugins for it, to use with their own tool sets. Yup.


At the end of last year we extended our work to add Chef testing to our Jenkins processes. For a while, we were running a new vagrant test with each new commit of a recipe to github. Pretty cool.

All of our Chef time is at our customer's site now - so our Jenkins server isn't even running. But it's nice to know how easy that was to do.

If we do it again, we'll probably move from Jenkins to one of the metadata based CI servers like TravisCI. But that's for a different blog.