Chef, Ansible, and Puppet are powerful open-source frameworks for system provisioning and management. They provide automated mechanisms for keeping your systems running the correct configurations and quickly and efficiently making changes that apply to all systems automatically.
These tools have great strengths that can aid your business, but with power comes responsibility. Since these frameworks have the ability to automatically apply updates across many servers at once, great care and attention to detail are required in developing configurations and managing systems with them.
There are extensive libraries of pre-written system configuration templates designed for many operating systems and applications, but their quality varies and they must be used and adapted judiciously.
We use these tools every day, and we have the skill, experience, and foresight necessary to use them tools safely and efficiently.
Chef is built with Ruby and Erlang. Chef derives its terminology from the world of cooking: A recipe contains a specific system configuration and any related scripts, and a group of recipes bound together creates a cookbook that specifies a given system role or application stack. Using collections of cookbooks you can create complex system or application configurations deployable with one command. Updates are thereby easily applied on a regular basis.
Ansible is built in Python, which allows it to work on most platforms without requiring extra software installation on the managed nodes. Its major benefit is that it does not need a standing client daemon on each managed node. Ansible aims to be simpler than other configuration management systems, while still offering as much customization as needed. Ansible was acquired by Red Hat in 2015 and continues to be developed there.
Puppet is built with Ruby and was the first of these modern tools on the scene. In Puppet a module represents an individual configuration, and modules can be grouped together to build a catalog to specify a full application stack, which can even include a full configuration of an operating system.