Puppet is a configuration management tool (Unix & Windows) with its own Domain Specific Language.
Puppet is a configuration management tool for Unix and Windows. It works either standalone mode (puppet apply) or in client-server mode (puppet agent) with puppet agents running on client systems checking in with the master daemon on the server on a regular basis. Puppet's written in ruby, and puppet source code, i.e. puppet manifests, uses its own domain-specific language that focuses on declaring the system resources and it's intended state.
Combined with system provisioning tools (PXE, kickstart, FAI, etc), puppet can fully automate any software installation and configuration process that doesn't require a GUI interface.
More info:
Related: configuration-management chef cfengine cfengine3 devops