CSIT-186: Add multilink to Vagrant file
[csit.git] / resources / tools / vagrant / Vagrantfile
index 0355ad7..86e7860 100644 (file)
@@ -20,6 +20,8 @@ $user_addition = <<-SHELL
     echo csit:csit | sudo chpasswd
     sudo adduser csit vagrant
     id csit
+    echo "csit ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/csit
+    sudo chmod 0440 /etc/sudoers.d/csit
 SHELL
 
 $install_prereqs = <<-SHELL
@@ -30,75 +32,84 @@ $install_prereqs = <<-SHELL
 SHELL
 
 $install_vpp = <<-SHELL
+    sudo apt-get -y purge vpp\*
     cd /vagrant
     vpp_pkgs="$(echo vpp*.deb)"
     if [ "$vpp_pkgs" != "vpp*.deb" ]; then
-      if [ "$(dpkg -l | grep vpp)" != "" ] ; then
-        sudo apt-get -y purge vpp\*
-      fi
-      sudo dpkg -i vpp*.deb
-      vppcfg="/etc/vpp/startup.conf"
-      sudo rm -f $vppcfg.orig
-      sudo cp $vppcfg $vppcfg.orig
-      echo -e '\nheapsize 512M' | sudo tee -a $vppcfg
+        sudo dpkg -i vpp*.deb
     fi
 SHELL
 
 
-def add_dut(config, name, mgmt_ip, net1, net2)
+def add_dut(config, name, mgmt_ip, port1, port2, port3, port4)
+  config.vm.box_check_update = false
   config.vm.define name do |node|
-    node.vm.box = "puppetlabs/ubuntu-14.04-64-nocm"
+    node.vm.box = "fdio-csit/ubuntu-14.04.4_2016-05-25_1.0"
     node.vm.hostname = name
     node.vm.provision "shell", inline: $user_addition
     node.vm.provision "shell", inline: $install_prereqs
     node.vm.provision "shell", inline: $install_vpp
 
     node.vm.network "private_network", ip: mgmt_ip
-    node.vm.network "private_network", type: "dhcp", auto_config: false,
-        virtualbox__intnet: net1
-    node.vm.network "private_network", type: "dhcp", auto_config: false,
-        virtualbox__intnet: net2
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port1
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port2
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port3
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port4
     node.vm.provider "virtualbox" do |vb|
-      vb.memory = "2048"
+      vb.memory = "3232"
       vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]
       vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"]
     end
   end
+end
 
+net_prefix = ''
+if ENV.key?('VPP_VAGRANT_NET_PREFIX')
+  net_prefix = ENV['VPP_VAGRANT_NET_PREFIX'] + '_'
 end
 
-Vagrant.configure(2) do |config|
-  if Vagrant.has_plugin?("vagrant-proxyconf")
-    if ENV["http_proxy"]
-      config.proxy.http     = ENV["http_proxy"]
-    end
-    if ENV["https_proxy"]
-      config.proxy.https    = ENV["https_proxy"]
-    end
-    if ENV["no_proxy"]
-      config.proxy.no_proxy = ENV["no_proxy"]
+def add_tg(config, name, mgmt_ip, port1, port2, port3, port4, port5, port6)
+  config.vm.box_check_update = false
+  config.vm.define name do |node|
+    if Vagrant.has_plugin?("vagrant-proxyconf")
+      if ENV["http_proxy"]
+        config.proxy.http     = ENV["http_proxy"]
+      end
+      if ENV["https_proxy"]
+        config.proxy.https    = ENV["https_proxy"]
+      end
+      if ENV["no_proxy"]
+        config.proxy.no_proxy = ENV["no_proxy"]
+      end
     end
-  end
-  config.vm.define "tg" do |tg|
-    tg.vm.box = "puppetlabs/ubuntu-14.04-64-nocm"
-    tg.vm.hostname = "tg"
+    node.vm.box = "fdio-csit/ubuntu-14.04.4_2016-05-25_1.0"
+    node.vm.hostname = name
+    node.vm.provision "shell", inline: $user_addition
+    node.vm.provision "shell", inline: $install_prereqs
 
-    tg.vm.provision "shell", inline: $user_addition
-    tg.vm.provision "shell", inline: $install_prereqs
-    tg.vm.network "private_network", ip: '192.168.255.100/24'
-    tg.vm.network "private_network", type: "dhcp", auto_config: false,
-        virtualbox__intnet: "tg_dut1"
-    tg.vm.network "private_network", type: "dhcp", auto_config: false,
-        virtualbox__intnet: "tg_dut2"
-    tg.vm.provider "virtualbox" do |vb|
+    node.vm.network "private_network", ip: mgmt_ip
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port1
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port2
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port3
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port4
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port5
+    node.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: port6
+    node.vm.provider "virtualbox" do |vb|
       vb.memory = "2048"
       vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]
       vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc7", "allow-all"]
+      vb.customize ["modifyvm", :id, "--nicpromisc8", "allow-all"]
     end
-
   end
-
-  add_dut(config, "dut1", "192.168.255.101/24", "tg_dut1", "dut1_dut2")
-  add_dut(config, "dut2", "192.168.255.102/24", "tg_dut2", "dut1_dut2")
 end
 
+Vagrant.configure(2) do |config|
+  add_tg(config,  "tg",   "192.168.255.100/24", net_prefix + "tg_tg", net_prefix + "tg_tg", net_prefix + "tg_dut1_1", net_prefix + "tg_dut1_2", net_prefix + "tg_dut2_1", net_prefix + "tg_dut2_2")
+  add_dut(config, "dut1", "192.168.255.101/24", net_prefix + "tg_dut1_1", net_prefix + "tg_dut1_2", net_prefix + "dut1_dut2_1", net_prefix + "dut1_dut2_2")
+  add_dut(config, "dut2", "192.168.255.102/24", net_prefix + "tg_dut2_1", net_prefix + "tg_dut2_2", net_prefix + "dut1_dut2_1", net_prefix + "dut1_dut2_2")
+end