Newsletter:8/If You Cant Take the DevOps Heat
If You Can't Take the DevOps Heat, Stay Out of the Kitchen
Virtualization and the Cloud are changing how applications are deployed. Application orchestration and deployment is an order of magnitude more complex than ever before. IT Operations staff have been turned into virtual plumbers, ensuring all the bits of underlying infrastructure are connected together properly, and don’t leak. This is tedious work, and one mistake dooms the next rollout to failure, and an unplanned outage. Utilizing the test suite in Chef can save you from having Zenoss wake you up at 3AM.
Getting Back in the Kitchen
Chef is an infrastructure configuration management system. To help make the process of testing before deploying infrastructure and basic underlying services easier, they have created a suite of automated testing tools.
FoodCritic is a part of the ChefDK. FoodCritic is a lint-like tool (url for lint) that will check your Chef cookbook for syntax and best practices. Testing with FoodCritic is a very fast first step and can be scripted/automated with very simple syntax.
ChefSpec is an independent project that can be found at The ChefSpec Github repo. ChefSpec is a unit testing framework for testing Chef Cookbooks, which will allow you to rapidly produce unit testing coverage of your entire Cookbook.
ChefSpec and Food Critic are quick checks to make sure everything is sane before running tests that will take more time. Because they are so fast, it is highly recommended that FoodCritic and ChefSpec be run against your Cookbook before you go to the Kitchen. With a large enough OS/server/configuration testing grid, Kitchen can take quite awhile.
Speaking of the Kitchen, Chef’s Kitchen framework can be found in the ChefDK (URL). Kitchen is an orchestration tool for testing Chef Cookbooks in Docker, Vagrant, and dozens of other virtualization systems. Kitchen allows you to test the underlying infrastructure and reduce hardware costs as your dev/staging environment can be run on a developer’s (or operations engineer’s) laptop if it has sufficient memory and CPU. It does take some time to run, as it generates every environment you want to test.
Serverspec is an integration testing tool that can be run in the Kitchen. Once you’ve configured Kitchen you can use Serverspec tests (written in YAML and run automatically) to run integration tests against the virtual infrastructure that Kitchen has created. Serverspec examines the output and generate reports of what’s going on in the Kitchen. As the list of combinations of Operating Systems, and software increases, Serverspec really shines by reducing output to what you need to know, instead of what you had to search for.
Test It Before you Deploy It!
Now you have the tools to test your infrastructure before you deploy your app on it. You know the plumbing is all there, and all of it works. This knowledge is also repeatable on demand, automatically. This seems like the best way ever to avoid having Zenoss Core wake you up at 3AM because something broke!