## Requirements * no upfront installation on remote/slave machines - ssh should be enough * configuration templating * environment requires/asserts, i.e. we need a JVM in a given version before doing deployment ## Candidates Ansible, Chef, Puppet, Salt ## Excerpts from the net [What is difference between docker, puppet, chef and vagrant?](http://www.quora.com/What-is-difference-between-docker-puppet-chef-and-vagrant): * turns the configuration of an environment in to source code. * That code can then be managed from within a VCS such as git or SVN so that changes are attempted, shared, rolled forward and rolled back in a much more frictionless way than the traditional written specification documents or word-of-mouth configuration sharing (e.g. do this .... now try that ... no, OK then try this) described beautifully in Gene Kim's book The Phoenix Project. ## Ansible Seems the choice of many that gets me curious what others offer in the space.