UrbanCode recently open sourced a very nifty tool for spinning up entire virtual environments, not just machines. It's cool to see an interesting tool that goes above and beyond most other VM creation tools by spinning up up these whole environments one at a time, or in parallel. You define the VM, startup scripting, and networking rules all in a simple XML file that can be version controlled. That file then becomes a template for various environments. You just track your changes and promote topology changes in the same way you would promote code changes.