It is quite important to enable whole development crew to have same development environment and when you are highly distributed than it is quite important to find reliable solutions. This is where Chef plays an important role. We have developed couple of recipes to bake local development environment and remote production environments. Currently we are using Vagrant + Chef (Provisioner) + VirtualBox or Vagrant + Chef (Provisioner) + Docker for our development environment. On production, AWS OpsWork + Chef (Provisioner) is the best combination.