# -*- mode: ruby -*- # vi: set ft=ruby : 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' 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' 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 # vagrant up # to enable, run # vagrant plugin install vagrant-cachier # if Vagrant.has_plugin?("vagrant-cachier") config.cache.scope = :box end # 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 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 config.vm.provider "vmware_fusion" do |fusion,override| fusion.vmx["memsize"] = "4096" end config.vm.provider "vmware_workstation" do |vws,override| vws.vmx["memsize"] = "8192" vws.vmx["numvcpus"] = "4" end end