Moving data centers is scary, make it less scary with Chef, U-Haul not included
@mtldo + @cfortier at #chefconf2014

At ChefConf 2014 this year, Chris Fortier and I had the privilege of presenting on the challenges of moving from a physical data center to the cloud. Beyond the move, we had to move towards more automation and a hands off approach to managing servers. This meant learning Amazon Web Services in depth and getting Chef onto every one of our machines. The result of our work was a library of cookbooks that could reliably work in three distinct locations: physical servers in Rackspace, laptops in our SoHo office, and cloud instances in AWS. As we developed these cookbooks we gradually improved our process and testing techniques. We reached a flow that kept cookbooks tested and trustworthy no matter where we launched. This also gave the whole team visibility into system changes that would have been easily missed otherwise.

Only Jenkins pushes cookbooks
Only Jenkins pushes cookbooks

We’re really proud of what we accomplished and think it might be useful for others to see. Our presentation was posted last week and we are more than happy to share it with you all.

As mentioned in the talk, we use a large number of open source projects to make our workflow magic happen here, at Behance. Just to make your lives a little easier here is a list of the tools we discuss in the presentation:

All of the tools we use @ #chefconf2014
All of the tools we use @ #chefconf2014

  • Github - Source control
  • Serverspec - Tests your servers’ actual state through SSH access
  • Chefspec - A unit testing and resource coverage (code coverage) framework for testing Chef cookbooks
  • Jenkins - Open source continuous integration tool written in Java.
  • Knife-Spork - A workflow plugin to help many devs work with the same chef repo/server
  • Berkshelf - Manages a Cookbook or an Application’s Cookbook dependencies
  • Rubocop - An experimental Ruby code analyzer, based on the community Ruby style guide.
  • Foodcritic - A lint tool for your Opscode Chef cookbooks.
  • TestKitchen - An integration tool for developing and testing infrastructure code and software on isolated target platforms.
  • Mergeatron - A Node.JS bot that automatically runs Jenkins builds for new, and updated, GitHub Pull Requests. ( NOTE: This is our fork of Mergeatron )

Also for those of you new to chef you can get really far by checking out chef-dk. It provides most of the tools you need to get started.

Here’s a link to our Speaker Deck for “Moving Data Centers is Scary, Make it Less Scary with Chef!”here

Thank you for reading along and good luck with your journey into the world of Chef!

You can reach us on Twitter, @cfortier and @mtldo.