in his latest post Alex Bilbie shares a guide for the steps he follows to create virtual machines for an educational course using Vagrant and Ansible with a PHP+Apache environment set up and ready to go.
In "Cursory Thoughts on Virtual Machines in Distance Education Courses" Tony discuses using virtual machines in courses to help distribute software and operating systems to students who increasingly more and more are bringing in very different devices. [...] At the very end of the article Tony mentions using Vagrant which is a small piece of software to help "create and configure lightweight, reproducible, and portable development environments". [...] A better option [for managing VM deployment] would be to use another devops tool called Ansible which "is a powerful automation engine that makes systems and apps simple to deploy".
He includes both a sample Vagrantfile for configuring Vagrant and a YAML configuration for Ansible that sets up the VM, opens the needed ports and installs and configures the needed software.
Together the playbooks and the Vagrantfile can be distributed to the students and assuming they've installed Vagrant and Virtualbox for their OS they can be up and running with identical environments in just a few minutes.