summaryrefslogtreecommitdiffstats
path: root/vagrant/Vagrantfile
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2016-02-05 01:00:27 -0500
committerGerrit Code Review <gerrit@fd.io>2016-02-09 14:07:15 +0000
commited1bb590d38c1581d35fd822564510ff22288510 (patch)
tree5868148ccd0cb4378e305be22f378adf024fcaa0 /vagrant/Vagrantfile
parent5a22f1a69af80bf03e262c8622d9f939f0bb7717 (diff)
Refactor vagrant files for reliability and maintenance.
Add git-review to VM. Change-Id: I7ed6c9d00037bb9665019f9f96e30ba9c2546525 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'vagrant/Vagrantfile')
-rw-r--r--vagrant/Vagrantfile89
1 files changed, 72 insertions, 17 deletions
diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile
index 5a3203933..7b72c87ce 100644
--- a/vagrant/Vagrantfile
+++ b/vagrant/Vagrantfile
@@ -5,14 +5,80 @@ Vagrant.configure(2) do |config|
config.ssh.forward_x11 = true
+ if ENV.key?('VAGRANT_VM_NAME')
+ vagrant_vm_name = ENV['VAGRANT_VM_NAME']
+ else
+ vagrant_vm_name = ""
+ end
+
+ if ENV.key?('KARAF_PACKAGES')
+ config.vm.synced_folder ENV['KARAF_PACKAGES'], "/karaf-packages", disabled: false
+ end
+
+ # If specified, add a private network interface for the ODL VBD app
+ # to communicate with VPP Honeycomb agents. VPP is not installed
+ # in an ODL VDB application VM.
+ if ENV.key?('VAGRANT_VBD_VM')
+ vagrant_vbd_vm = "is_vbd_vm"
+ if ENV.key?('VAGRANT_VBD_ADDR')
+ config.vm.network "private_network", ip: ENV['VAGRANT_VBD_ADDR']
+ end
+ vagrant_vpp_agent_addr = ""
+
+ else
+ vagrant_vbd_vm = "is_vpp_agent_vm"
+
+ if ENV.key?('VAGRANT_VPP_AGENT_ADDR')
+ vagrant_vpp_agent_addr = ENV['VAGRANT_VPP_AGENT_ADDR']
+ config.vm.network "private_network", ip: "#{vagrant_vpp_agent_addr}"
+ else
+ vagrant_vpp_agent_addr = ""
+ end
+
+ # Define some physical ports for your VMs to be used by DPDK
+ nics = 0
+ if ENV.key?('VPP_VAGRANT_NICS')
+ nics = ENV['VPP_VAGRANT_NICS'].to_i(10)
+ end
+ for i in 1..nics
+ config.vm.network "private_network", type: "dhcp"
+ end
+ # Mount VPP repository if specified
+ if ENV.key?('VPP_REPO')
+ config.vm.synced_folder ENV['VPP_REPO'], "/vpp", disabled: false
+ end
+ end
+
# Pick the right distro and bootstrap, default is ubuntu1404
distro = ENV['HONEYCOMB_VAGRANT_DISTRO']
if distro == 'centos7'
config.vm.box = "puppetlabs/centos-7.0-64-nocm"
- config.vm.provision 'shell', path: 'bootstrap.centos7.sh'
+ config.vm.provision 'shell' do |s|
+ s.path = "bootstrap.centos7.sh"
+ s.args = ["#{vagrant_vm_name}", "#{vagrant_vbd_vm}", "#{vagrant_vpp_agent_addr}"]
+ end
else
config.vm.box = "puppetlabs/ubuntu-14.04-64-nocm"
- config.vm.provision 'shell', path: 'bootstrap.ubuntu1404.sh'
+ config.vm.provision 'shell' do |s|
+ s.path = "bootstrap.ubuntu1404.sh"
+ s.args = ["#{vagrant_vm_name}", "#{vagrant_vbd_vm}", "#{vagrant_vpp_agent_addr}"]
+ end
+ end
+
+ # Add .gnupg dir in so folks can sign patches
+ # Note, as gnupg puts socket files in that dir, we have
+ # to be cautious and make sure we are dealing with a plain file
+ homedir = File.expand_path("~/")
+ Dir["#{homedir}/.gnupg/**/*"].each do |fname|
+ if File.file?(fname)
+ destname = fname.sub(Regexp.escape("#{homedir}/"),'')
+ config.vm.provision "file", source: fname, destination: destname
+ end
+ end
+
+ # Copy in the .gitconfig if it exists
+ if File.file?(File.expand_path("~/.gitconfig"))
+ config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end
# vagrant-cachier caches apt/yum etc to speed subsequent
@@ -24,33 +90,22 @@ Vagrant.configure(2) do |config|
config.cache.scope = :box
end
- # Define some physical ports for your VMs to be used by DPDK
- nics = 0
- if ENV.key?('VPP_VAGRANT_NICS')
- nics = ENV['VPP_VAGRANT_NICS'].to_i(10)
- end
- for i in 1..nics
- config.vm.network "private_network", type: "dhcp"
- end
-
- # use http proxy if avaiable
+ # use http proxy if available
if ENV['http_proxy'] && Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = "$http_proxy"
config.proxy.https = "$https_proxy"
config.proxy.no_proxy = "localhost,127.0.0.1"
end
- # Mount VPP repository if specified
- if ENV.key?('VPP_REPO')
- config.vm.synced_folder ENV['VPP_REPO'], "/vpp", disabled: false
- end
-
# Mount Maven repository if specified
if ENV.key?('HONEYCOMB_M2_REPO')
config.vm.synced_folder ENV['HONEYCOMB_M2_REPO'], "/m2-repository", disabled: false
end
+ # Mount Honeycomb repository
config.vm.synced_folder "../", "/honeycomb", disabled: false
+
+ # Memory/cpu config
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end