Configuration Management is an approach for maintaining control and consistency across elements of large infrastructures. It’s a software solution that allows each server to be assigned certain functionality roles that dictate the software and configuration changes made to the server. Configuration Management (CM) provides a known state for each of the managed nodes, so it’s easier to apply or track changes that are made.
One of the biggest benefits of managing configurations properly is consistency of the results you get. Having spent once a certain time capturing your server state in a number of automation scripts, you then use the configuration management solution to apply the same configuration to the potentially large number of similar servers. Configuration management software will cleverly apply your settings to each server in accordance with the defined server roles.
Your infrastructure probably has a number environments with similar setup – test/dev, stage and production.
CM solutions make the task of transitioning your development and deployment process from one of the environments to the next very easy. Done properly, you get to the level of automation that only need the name/tag of an environment changed from “stage” to “prod” – the rest of deployment will work, correctly applying respective configurations to relevant parts of your infrastructure.
Confirming installed versions of software packages, lists of active users, names of nodes or clusters in your environment and obtaining lots of other real-time and historical data about your infrastructure gets much easier with Configuration Management software.
Another common benefit is the easily achievable scalability of your business processes and infrastructure when you use configuration management software.
Compared to the manual processes of building servers or virtual machines, a standardised configuration management solution will provide cost and time savings when deploying large numbers of servers.
You need to spend extra time documenting and capturing desired server state in configuration manager during the first run of your deployment, but this will pay off when you easily apply the same settings to many servers in the future.
There aren’t that many things that can go terribly wrong when you design your configuration management properly and following best practices suggested by each vendor, but here’s a few of the more obvious risks:
Although both terms come up quite regularly when researching the same topics, they are not the same.
DevOps is both a methodology and a concept. It covers a broad number of practices and solutions aimed at building and maintaining a tightly integrated software development and delivery process with emphasis on communication and collaboration between product management, software developers and operations teams.
Configuration Management solutions like Puppet, Chef or Ansible are very likely to be part of the DevOps practices in your team, but CM is only one of the many solutions in your IT toolchain.
DevOps is not possible with just the help of Configuration Management, your organisation would need to use many other software solutions to truly embrace DevOps.
On the other had, Configuration Management is such a wide spread element that it’s practically inseparable from DevOps. So if you’re joining an IT organisation with strong focus on DevOps, you’re pretty much guaranteed to use Configuration Management along with other approaches.