diff options
author | Dave Wallace <dwallacelf@gmail.com> | 2016-02-05 01:00:27 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2016-02-09 14:07:15 +0000 |
commit | ed1bb590d38c1581d35fd822564510ff22288510 (patch) | |
tree | 5868148ccd0cb4378e305be22f378adf024fcaa0 /vagrant/Vagrantfile | |
parent | 5a22f1a69af80bf03e262c8622d9f939f0bb7717 (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/Vagrantfile | 89 |
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 |