Configuration management is the practice of describing how servers and applications should be set up, and using automation to apply and keep that state. Packages, files, users, services and settings are defined in code, and a tool checks and corrects each machine against the definition.
Why it matters
Hand-configured servers drift apart over time, and nobody remembers why one behaves differently. Configuration management makes changes repeatable and reviewable, speeds up rebuilding a failed server, and reduces the "works on one machine" class of outage. Well-known tools include Ansible, Puppet, Chef and Salt. Some run an agent that regularly re-applies the desired state, while others push changes when you run them.
Example
A definition that says "nginx is installed and a specific config file is in place" can be applied to ten servers in one run. If someone edits the file by hand on one server, the next run either restores the declared version or flags the difference, depending on the tool and mode.
desired: package nginx present, /etc/nginx/nginx.conf = template v12
actual: package nginx present, nginx.conf modified manually
result: drift detected -> file restored
Common mistakes
- Making manual fixes on production and never recording them in the code.
- Mixing configuration management with images or scripts without a clear owner of each setting.
- Skipping a staging run before applying a change to every server.
Related
Get notified when this term updates
Plus occasional practical tips on uptime and monitoring, nothing else. Unsubscribe anytime.
This page is general information written by our editorial team and updated when documentation changes. Servers and providers differ, so test changes safely first. See our editorial policy and disclaimer.