From df4e7eccf5b6d59573ba1ebde5ef04b2ef68cef6 Mon Sep 17 00:00:00 2001
From: Koustubh Sinkar <ksinkar@users.noreply.github.com>
Date: Sat, 13 May 2017 05:29:03 +0530
Subject: [PATCH] containers/vagrant: add support for CentOS (#14380)

CentOS has been added as a multi-machine option to the Vagrant script.
Ubuntu is still the default option. For starting the CentOS machine, use:

   vagrant up centos
---
 containers/vagrant/.gitignore                 |  1 +
 containers/vagrant/Vagrantfile                | 47 +++++++++++--------
 .../vagrant/provisioners/shell/centos.sh      | 11 +++++
 .../vagrant/provisioners/shell/debian.sh      | 11 +++++
 .../vagrant/provisioners/shell/ubuntu.sh      | 11 +++++
 5 files changed, 62 insertions(+), 19 deletions(-)
 create mode 100644 containers/vagrant/.gitignore
 create mode 100755 containers/vagrant/provisioners/shell/centos.sh
 create mode 100755 containers/vagrant/provisioners/shell/debian.sh
 create mode 100755 containers/vagrant/provisioners/shell/ubuntu.sh

diff --git a/containers/vagrant/.gitignore b/containers/vagrant/.gitignore
new file mode 100644
index 000000000..8000dd9db
--- /dev/null
+++ b/containers/vagrant/.gitignore
@@ -0,0 +1 @@
+.vagrant
diff --git a/containers/vagrant/Vagrantfile b/containers/vagrant/Vagrantfile
index 5d263eb76..72ec366e2 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 000000000..744da4bfd
--- /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 000000000..1c1793336
--- /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 000000000..1c1793336
--- /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 
-- 
GitLab