Configuration Management using Chef
The automation of configuration management is not a particularly new practice in the world of software delivery. However, scripted approaches of the past suffered from a lack of common standards, documentation, and understanding. A team member would select a preferred scripting language, adopt their own patterns, and implement it in their own unique way. This approach required an in-depth knowledge of the dependencies for all the software to be installed and configured on a machine and often made assumptions about the initial state of the machine before applying changes. Upgrades to software were rarely considered, and because the knowledge was invested in a single person it was difficult to support and maintain. Not everything would or could be automated, and so there would also generally be an amount of manual tweaking required to achieve the desired state, so it wasn’t entirely automated and left scope for human error.