These days the tendency among software companies is to have everything under version control systems (i.e. Git, Mercurial), all these is part of two software development strategies: continuous integration and continuous delivery. To read more about them I recommend you to read "Continuous Integration: Improving Software Quality and Reducing Risk" and "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation"
So I took Vagrant to provision the machines that will run my example webapp, and Puppet will take care of configuring my system.
My recipes are in continuous development, so you should refer to the git repositories for the latest information about how they work.