For years, system administrators have been faced with an increasingly overwhelming problem -- how to deploy and manage the large and ever growing armies of horizontally scaled servers that power mobile and web products. Even in some larger organizations of today, it’s not uncommon to find custom shell scripts being relied upon to configure and maintain the operating system, supporting packages, and applications. As the number and complexity of those systems has grown, the operations space gave birth to configuration management tools – specially designed software that focuses solely on reliably, and repeatedly deploying and maintaining the full stack of software services powering today’s web and mobile applications.
Several years of experimentation and innovation in this space have brought us to a market consisting of two major players, Chef and Puppet, and a swath of new entrants (most notably Ansible and Salt). This paper aims to compare and contrast those two leading tools, as well as briefly touch on the two most promising recent entrants.