Puppet does this work by providing system administrators a declarativelanguage that allows a configuration file to be described and then filled in differently based on the role that the computer on which the configuration file exists is playing.
Puppet has followed the evolution of most declarative systems such as HTML or SQL. At first, basic needs could be expressed in the declarativelanguage, but as the nature of the work being performed became better understood, the declarativelanguage became more powerful and could describe more complex and sophisticated results.
The Cascalog system has combined the Cascading system for abstraction of advanced data processing on Hadoop and other systems, the Datalog declarative programming language that is well suited for expressing database queries in an abstract form, and the Clojure language to create a declarativelanguage for queries that can be run on Apache Hadoop.