Vagrant env

This PR adds support for a Vagrant managed cluster running a single master with N minions.  The PR reuses the existing Salt States to configure the master and minion boxes.  Each box is running Fedora, so the Salt States were modified where appropriate when running on a Red Hat based OS family to use systemd to manage the installed services.  Support via Vagrant for other Linux distros is easily added by modifying the Vagrantfile and registering new base boxes.

The initial vagrant up takes some time as it installs Salt, and downloads golang, etc.

Subsequent vagrant provision commands to update code after source changes across the cluster are very fast.  The provision scripts are incremental.  Each minion upon successful initial provision calls the master to configure it.  As a result, it can take a moment ( < 1 min) after initial vagrant up for the minions to fully stabilize.  Subsequent edits, and vagrant provision commands have no delay.

Original issue: https://github.com/GoogleCloudPlatform/kubernetes/issues/187

This was tested in the following configuration:

os: Fedora 20
vagrant: 1.6.2
virtual box: 4.3.12

Both single master, single minion and master + 3 minion configurations were tested.
Sounds good. Will make that update tomorrow morning.  Thanks for the feedback. 

Sent from my iPhone

> On Jul 21, 2014, at 8:48 PM, Rafael Chacon <notifications@github.com> wrote:
> 
> In Vagrantfile:
> 
> > @@ -0,0 +1,56 @@
> > +# -*- mode: ruby -*-
> > +# vi: set ft=ruby :
> > +
> > +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
> > +VAGRANTFILE_API_VERSION = "2"
> > +
> > +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
> > +
> > +  # The number of minions to provision
> > +  num_minion = 1
> What do you think of something like this?:
> 
> num_minion = ENV['KUBERNETES_MINIONS_NUMBER'] || 3
> So it is easier to parametrize the number of minions. I would suggest 3 minions by default, this way the examples in the guestbook will work out of the box (I think)
> 
> —
> Reply to this email directly or view it on GitHub.