Centralized configuration management can help us to control changes to systems in a controlled, consistent, and stable way. It is perfect for systems that are running a cluster or configured for high availability, as all the nodes across the cluster have to have the exact same configuration. With configuration management, we can also understand the reason behind permissions on certain files, a package installed on all the systems, or even a line of code in a configuration file.
These changes or configurations that we implement through a configuration management tool can also be rolled back, as most tools available in the market come with version control, and any typo, human error, or incompatible update can easily be rolled back.
As we slowly transition into cloud environments, virtual machines and resources become more and more a commodity and a service. Configuration management tools that can help us manage, provision, and maintain our cloud infrastructure become very valuable assets. With these types of tool, we can treat our infrastructure in a more elastic way, and define it in a descriptive way, in the sense that we can have templates that deploy the same infrastructure or implement changes based on a definition; this is what we call infrastructure as code (IaC).