The developers you work with have a new service they're building, and it is your job to add the appropriate Puppet modules to provision it. Where do you start? A base image, Vagrant and some tinkering? Editing files in ""/etc/puppet"" on a staging Puppet host? What is the most maintainable work-flow which won't saddle you with technical debt in the future? In this talk, I will take you from the ""outside"" inward, writing tests along the way with Cucumber and RSpec. This approach encourages you to think more about where the lines are drawn between the various services and resources you're configuring. While the work-flow is a departure from the ""traditional sysadmin"" role, the resulting modules can be more easily re-used and re-factored.