This is not just another “Use Chef, Puppet, or Ansible” talk. Tools looking for problems can lead to bigger headaches than applying sound practice to your efforts. There will always be cases when using a pure configuration management solution like the ones above may not solve all problems. Sometimes faster delivery capabilities, lack of necessary features within a plugin, or work out of sync with development teams can lead to issues ranging from annoyance to production outage. Going from manually edited application configurations on a production server to a fully automated deployment and testing solution can take many paths. If you follow agile development efforts, you can start handling configurations in a “Crawl, Walk, Run, then Fly” phase. I’ll use Apache, Tomcat, and Puppet to create some examples of problems with editing configs right in prod, and move towards some solutions to test, build, and deploy configurations just like a software engineering deployment pipeline.