Juan Treminio has written up an introductory post to Puppet and Vagrant and their use to make virtual machines for your PHP environments.
He notes that the Puppet+Vagrant combination solves some of the common problems developers have setting up environments. He goes through what the two tools are and shows (screenshots) what the results look like. He includes a sample Puppet manifest, its configuration file, that loads an environment with PHP 5, Apache, a virtual host, PEAR, Composer and some other various configuration settings. He also mentions his PuPHPet tool he's created to make generating these kinds of configuration files simpler.