Preparing Machines for Workshops with Vagrant, VirtualBox, & Puppet


Teaching a workshop involves a lot of thought and preparation. There’s research to do, content prep, slides to tweak — and you have to figure out some way of getting all the attendees started with the same setup. If you’re lucky, you’ll be presenting in a lab with machines that can be set up ahead of time. Puppet, Vagrant, and VirtualBox are fantastic tools to help you get your workshop setup. Using them saved me time and kept me from having to deal with issues on the day of the workshop.

I recently did an “Intro to Rails” workshop at Hope College. Their lab was set up with powerful laptops that were already equipped with VirtualBox. I just needed to provide them with an image to use. If your attendees are bringing their own equipment, think about having them install VirtualBox ahead of time.

My workshop was about Rails, so I used a tool for Rails core development: rails-dev-box. rails-dev-box uses Vagrant to setup the basic VM and puppet to handle the installation and configuration of software. rails-dev-box installs git, Ruby, RVM, Bundler, various databases, and node.js for assets: everything you need to run Rails. It also has Vagrant map port 3000 to the host machine.

host $ git clone
host $ cd rails-dev-box
host $ vagrant up

Once I confirmed that the box worked for a basic Rails app, I exported it and opened it in VirtualBox in Windows that was running on my Mac in VMWare (Sort of a virtual machine inception moment). I used VB to remove the shared directories set up by Vagrant, and mapped C:Workshop to the VM. Setting up the files to live outside of the VM allowed my attendees to use whatever Windows editors they were comfortable with.

In the end, users ran commands like rails and rspec from VirtualBox, but edited the files and used the browser on their host machine. This setup made the workshop go smoothly with nothing to install or configure; it was all done ahead of time. If you’re giving a workshop, I recommend checking out Vagrant, VirtualBox, and puppet or chef for creating the workshop development environment.

  • Todd says:

    We use the same setup for our developer environment. It’s such a great way to get new employees contributing quickly.

    • Shawn Anderson Shawn Anderson says:

      Exactly Todd. Github uses Boxen, and we have built developer VMs for some of our internal tools development. Here at AO we work on a wide variety of projects and technologies. A common development setup doesn’t fit as well.

  • Comments are closed.