diff --git a/containers/vagrant/.gitignore b/containers/vagrant/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..8000dd9db47c0b9dd34046ec17880dcbb27e5eb9
--- /dev/null
+++ b/containers/vagrant/.gitignore
@@ -0,0 +1 @@
+.vagrant
diff --git a/containers/vagrant/Vagrantfile b/containers/vagrant/Vagrantfile
index 5d263eb765b427a05fd7033c24b47ef3661a17df..72ec366e215e4ed553adc64fcd027233c1364dd5 100644
--- a/containers/vagrant/Vagrantfile
+++ b/containers/vagrant/Vagrantfile
@@ -1,29 +1,38 @@
 # -*- mode: ruby -*-
 # vi: set ft=ruby :
 
-Vagrant.configure(2) do |config|
-  config.vm.box = "ubuntu/trusty64"
+require 'yaml'
 
-  config.vm.provider "virtualbox" do |vb|
-    vb.memory = "2048"
-  end
-
-  config.vm.synced_folder "../../", "/home/vagrant/go/src/github.com/ethereum/go-ethereum"
-  config.vm.synced_folder ".", "/vagrant", disabled: true
+VAGRANTFILE_API_VERSION = 2
+VM_RAM = 2048
 
-  config.vm.provision "shell", inline: <<-SHELL
-    sudo apt-get install software-properties-common
-    sudo add-apt-repository -y ppa:ethereum/ethereum
-    sudo add-apt-repository -y ppa:ethereum/ethereum-dev
-    sudo apt-get update
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
 
-    sudo apt-get install -y build-essential golang git-all
+  config.vm.define "ubuntu", :primary => true do |ubuntu| 
+    ubuntu.vm.box = "ubuntu/trusty64"
+    ubuntu.vm.provision "shell", :path => "provisioners/shell/ubuntu.sh"
+  end
 
-    GOPATH=/home/vagrant/go go get github.com/tools/godep
+  config.vm.define "debian", :primary => true do |debian|
+    debian.vm.box = "debian/jessie64"
+    debian.vm.provision "shell", :path => "provisioners/shell/debian.sh"
+  end
+  
+  config.vm.define "centos", :autostart => false do |centos| 
+    centos.vm.box = "centos/7"
+    centos.vm.provision "shell", :path => "provisioners/shell/centos.sh"
+  end
+  
+  config.vm.provider "virtualbox" do |vb|
+    vb.memory = VM_RAM
+  end
 
-    sudo chown -R vagrant:vagrant ~vagrant/go
+  config.vm.provider "libvirt" do |lv|
+    lv.memory = VM_RAM
 
-    echo "export GOPATH=/home/vagrant/go" >> ~vagrant/.bashrc
-    echo "export PATH=\\\$PATH:\\\$GOPATH/bin:/usr/local/go/bin" >> ~vagrant/.bashrc
-  SHELL
+    config.vm.synced_folder ".", "/home/vagrant/sync", :disabled => true
+  end
+  
+  config.vm.synced_folder ".", "/vagrant", :disabled => true
+  config.vm.synced_folder "../../", "/home/vagrant/go/src/github.com/ethereum/go-ethereum"
 end
diff --git a/containers/vagrant/provisioners/shell/centos.sh b/containers/vagrant/provisioners/shell/centos.sh
new file mode 100755
index 0000000000000000000000000000000000000000..744da4bfd4a13eaf43ec74637c9dd9e50ea6959a
--- /dev/null
+++ b/containers/vagrant/provisioners/shell/centos.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+sudo yum install -y git wget
+sudo yum update -y
+
+wget --continue https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
+sudo tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz
+
+GETH_PATH="~vagrant/go/src/github.com/ethereum/go-ethereum/build/bin/"
+
+echo "export PATH=$PATH:/usr/local/go/bin:$GETH_PATH" >> ~vagrant/.bashrc 
diff --git a/containers/vagrant/provisioners/shell/debian.sh b/containers/vagrant/provisioners/shell/debian.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1c1793336d441b016b82cfccd2ec381a968f0bb3
--- /dev/null
+++ b/containers/vagrant/provisioners/shell/debian.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+sudo apt-get install -y build-essential git-all wget
+sudo apt-get update
+
+wget --continue https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
+sudo tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz
+
+GETH_PATH="~vagrant/go/src/github.com/ethereum/go-ethereum/build/bin/"
+
+echo "export PATH=$PATH:/usr/local/go/bin:$GETH_PATH" >> ~vagrant/.bashrc 
diff --git a/containers/vagrant/provisioners/shell/ubuntu.sh b/containers/vagrant/provisioners/shell/ubuntu.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1c1793336d441b016b82cfccd2ec381a968f0bb3
--- /dev/null
+++ b/containers/vagrant/provisioners/shell/ubuntu.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+sudo apt-get install -y build-essential git-all wget
+sudo apt-get update
+
+wget --continue https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
+sudo tar -C /usr/local -xzf go1.8.1.linux-amd64.tar.gz
+
+GETH_PATH="~vagrant/go/src/github.com/ethereum/go-ethereum/build/bin/"
+
+echo "export PATH=$PATH:/usr/local/go/bin:$GETH_PATH" >> ~vagrant/.bashrc