Acceptance Test Driven Infrastructure Development with Cucumber and Chef

The advent of modern programming frameworks such as Rails and Django, together with the ready availability of virtualisation, and the explosion of interest in configuration management tools such as Puppet and Chef has revolutionised the web operations world. In this talk I make a case for introducing acceptance test driven infrastructure development as a way to deliver value and reduce risk. Developing infrastructure with Opscode Chef, and testing it using Cucumber, I explain how to build a test environment using Linux Containers that allows end-to-end testing of the whole infrastructure to tease out dependencies and hidden side-effects. Finally, I look at the applicability of agile/lean mainstays Continuous Integration and Continuous Deployment, together with a call to rethink monitoring as the natural extension of acceptance test driven development.