Puppet has been doing this for over 15 years. Declarative config management is great and I love it. Unfortunately, it doesn't solve all administration problems as some software assumes an imperative installation or upgrade process.
One timecard system we ran deployed a WAR in JBoss, but the associated DB schema upgrades were hand-compiled into a Java GUI with literally no externally-scriptable control surface.