Configuration management is software that describes in code how each server should be set up, and then sets up every server to match, automatically and the same way each time. A server is a computer in a data centre that runs software for many users at once. The description says which software is installed, which settings are switched on and which user accounts exist. Chef, Puppet and Ansible are well-known tools of this kind.
Why is it needed? Setting up a server by hand takes hours, and two people never do it exactly alike. One forgets a security setting; another installs a newer version of a program. Over months, servers that were meant to be identical slowly become different. This is called configuration drift. Drift causes failures that happen on one server but not on its neighbour, and such failures are hard to trace.
With configuration management, the team writes the settings once, in a file kept in a code repository. A change to a setting is then reviewed like any other code change. The tool reads the file and applies it to each server. It then checks each server again at regular intervals. If someone has changed a setting by hand, the tool notices and changes it back.
Take, for example, a telecom operator with 1,200 servers in data centres in Noida and Chennai. The servers run enterprise Linux, a version of the Linux operating system sold with tested updates and support. The security team makes two decisions. No server may accept logins with a password, only with a key file. And every server's clock must match an official time source, because each server writes a log, a line of text for each event, and India's CERT-In rules ask companies to keep accurate times in their logs. An engineer changes a few lines in the configuration file, and a colleague approves the change. Within 30 minutes, the tool has applied it to the servers. Its report shows 1,194 servers changed and 6 not reached, because they were switched off for repair. When those 6 are switched on again, the tool applies the change to them too.
Configuration management is often run from the CI/CD pipeline, so that new servers are set up as part of a release. It is close to infrastructure as code, which creates the servers, networks and storage in a cloud. Configuration management then sets up what runs inside each server. Network teams have a similar need for their routers and switches. Before they make a change, network change verification tries it on a copy of the network.