This document summarizes the evolution of configuration management over four decades through three generations:
- First generation used scripting and descriptive files for manual, ad hoc configuration.
- Second generation introduced declarative languages and full automation with desired states but environments were convergent, not identical.
- Third generation focuses on immutable infrastructure, consistency through automation from development to production, and disposable environments using techniques like infrastructure as code and immutable delivery.