Using Virtual Machines

Some workshops ask OS X and Windows users to use a virtual machine. To
run Ruby, you need to start and connect to the virtual machine.

If students aren't using a virtual machine at your workshop, head back to the curriculum.

Goals

Define virtual machine, Vagrant, and VirtualBox

Find your workspace directory

Start and halt Vagrant

Connect to and exit Vagrant

Most laptops don't come with Ruby installed. Getting 75+ people ready at a
workshop is a big logistical challenge.

To get going quickly and to have things work the same for everyone, we're using
a virtual machine. Using a virtual machine adds some extra steps, which we'll
practice here.

Step 1

First, let's define "virtual machine."

A virtual machine - VM for short - is a snapshot of all the
software on a computer. The snapshot is called an image. You downloaded and
saved the image file in the pre-workshop steps.

We've made an image of a Linux machine with Ruby and other tools
installed.

Step 2

By itself, a VM image is just a file like any other. It needs something to
run it.

We're using VirtualBox. If a VM image is a fish, VirtualBox is the aquarium
it lives in.

It knows how to translate the features of this Linux image into
something Windows or OSX understands, and display it on your monitor. It
knows how to translate your keyboard and mouse input to something the Linux
machine can use.

If you're familiar with PC Anywhere, Remote Desktop, Parallels, or
VMware Fusion, VirtualBox is a bit like that. Essentially, you're accessing
another computer through your own computer.

Step 3

Vagrant is a tool for running a virtual machine. It will start and stop the
VM, and let you connect to it so you can use it.

During the Installfest you made a folder called "workspace" and ran some vagrant
commands to set up the RailsBridge image.

It created a configuration file named Vagrantfile. Vagrant needs the config
file in order to run the machine.

Step 4

To run Ruby on our image, we have to start the VM and then connect to it. The
VM only needs to be started once. It will keep running until you halt it or
reboot your machine.

Type this in the terminal:

vagrant up

Expected result:

Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 3000 => 3000 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] The guest additions on this VM do not match the installed version of
VirtualBox! In most cases this is fine, but in rare cases it can
prevent things such as shared folders from working properly. If you see
shared folder errors, please make sure the guest additions within the
virtual machine match the version of VirtualBox you have installed on
your host and reload your VM.
Guest Additions Version: 4.2.0
VirtualBox Version: 4.3
[default] Mounting shared folders...
[default] -- /vagrant
[default] VM already provisioned. Run `vagrant provision` or use `--provision` to force it