From e0965d4e05c3d43cec43c1fd31d6bc774ca79310 Mon Sep 17 00:00:00 2001 From: "Keith Burns (alagalah)" Date: Sun, 19 Jun 2016 07:58:51 -0700 Subject: [PATCH] Using env.sh file for Vagrantfile inputs, but assume some defaults Change-Id: Ia4b45d88be5943d413d61435ff38796d1b6a32a2 Signed-off-by: Keith Burns (alagalah) --- build-root/vagrant/README | 69 +++++++++++------------------------------- build-root/vagrant/Vagrantfile | 25 +++++++-------- build-root/vagrant/WELCOME | 61 +++++++++++++++++++++++++++++++++++++ build-root/vagrant/env.sh | 6 ++++ 4 files changed, 98 insertions(+), 63 deletions(-) create mode 100644 build-root/vagrant/WELCOME create mode 100644 build-root/vagrant/env.sh diff --git a/build-root/vagrant/README b/build-root/vagrant/README index eb6aa2fdebc..168b6b52eec 100644 --- a/build-root/vagrant/README +++ b/build-root/vagrant/README @@ -1,61 +1,28 @@ -VPP has now been built, installed, and started. +INTRO: -To give it a spin, we can create a tap interface and try a simple ping -(with trace). +This is a vagrant environment for VPP. -Make sure you have run: +VPP currently works under Linux and has support for: -$ vagrant ssh +- Ubuntu 14.04, Ubuntu 16.04 and Centos7.2 -To get to the vagrant VM: +The VM builds VPP from source which can be located at /vpp -vagrant@localhost:~$ +VM PARTICULARS: +This vagrant environment creates a VM based on environment variables found in ./env.sh +To use, edit env.sh then + source ./env.sh + vagrant up -Confirm that vpp is running with +By default, the VM created is/has: +- Ubuntu 14.04 +- 2 vCPUs +- 2G of RAM +- 2 NICs (1 x NAT - host access, 1 x VPP DPDK enabled) -vagrant@localhost:~$ sudo status vpp -vpp start/running, process 25202 +PROVIDERS: -To create the tap: +Supported vagrant providers are: -vagrant@localhost:~$ sudo vppctl tap connect foobar -Created tap-0 for Linux tap 'foobar' -vagrant@localhost:~$ sudo vppctl show int +- Virtualbox, VMware Fusion/Workstation, Libvirt -To assign it an ip address (and 'up' the interface): - -vagrant@localhost:~$ sudo vppctl set int ip address tap-0 192.168.1.1/24 -vagrant@localhost:~$ sudo vppctl set int state tap-0 up - -To turn on packet tracing for the tap interface: -vagrant@localhost:~$ sudo vppctl trace add tapcli-rx 10 - -Now, to set up and try the other end: -vagrant@localhost:~$ sudo ip addr add 192.168.1.2/24 dev foobar -vagrant@localhost:~$ ping -c 3 192.168.1.1 - -To look at the trace: -vagrant@localhost:~$ sudo vppctl show trace - -And to stop tracing: - -vagrant@localhost:~$ sudo vppctl clear trace - -Other fun things to look at: - -The vlib packet processing graph: -vagrant@localhost:~$ sudo vppctl show vlib graph - -which will produce output like: - - Name Next Previous -ip4-icmp-input error-punt [0] ip4-local - ip4-icmp-echo-request [1] - vpe-icmp4-oam [2] - -To read this, the first column (Name) is the name of the node. -The second column (Next) is the name of the children of that node. -The third column (Previous) is the name of the parents of this node. - -To see this README again: -cat /vagrant/README diff --git a/build-root/vagrant/Vagrantfile b/build-root/vagrant/Vagrantfile index 7067bfc071a..9bb53b91e5d 100644 --- a/build-root/vagrant/Vagrantfile +++ b/build-root/vagrant/Vagrantfile @@ -4,7 +4,7 @@ Vagrant.configure(2) do |config| # Pick the right distro and bootstrap, default is ubuntu1404 - distro = ENV['VPP_VAGRANT_DISTRO'] + distro = ( ENV['VPP_VAGRANT_DISTRO'] || "ubuntu1404") if distro == 'centos7' config.vm.box = "puppetlabs/centos-7.2-64-nocm" else @@ -44,10 +44,7 @@ Vagrant.configure(2) do |config| end # Define some physical ports for your VMs to be used by DPDK - nics = 2 - if ENV.key?('VPP_VAGRANT_NICS') - nics = ENV['VPP_VAGRANT_NICS'].to_i(10) - end + nics = (ENV['VPP_VAGRANT_NICS'] || 2).to_i(10) for i in 1..nics config.vm.network "private_network", type: "dhcp" end @@ -59,21 +56,25 @@ Vagrant.configure(2) do |config| config.proxy.no_proxy = "localhost,127.0.0.1" end + vmcpu=(ENV['VPP_VAGRANT_VMCPU'] || 2) + vmram=(ENV['VPP_VAGRANT_VMRAM'] || 2048) + config.vm.synced_folder "../../", "/vpp", disabled: false config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--ioapic", "on"] - vb.memory = 4096 - vb.cpus = 2 + vb.memory = "#{vmram}" + vb.cpus = "#{vmcpu}" end config.vm.provider "vmware_fusion" do |fusion,override| - fusion.vmx["memsize"] = "4096" + fusion.vmx["memsize"] = "#{vmram}" + fusion.vmx["numvcpus"] = "#{vmcpu}" end config.vm.provider "libvirt" do |lv| - lv.memory = 4096 - lv.cpus = 8 + lv.memory = "#{vmram}" + lv.cpus = "#{vmcpu}" end config.vm.provider "vmware_workstation" do |vws,override| - vws.vmx["memsize"] = "8192" - vws.vmx["numvcpus"] = "4" + vws.vmx["memsize"] = "#{vmram}" + vws.vmx["numvcpus"] = "#{vmcpu}" end end diff --git a/build-root/vagrant/WELCOME b/build-root/vagrant/WELCOME new file mode 100644 index 00000000000..eb6aa2fdebc --- /dev/null +++ b/build-root/vagrant/WELCOME @@ -0,0 +1,61 @@ +VPP has now been built, installed, and started. + +To give it a spin, we can create a tap interface and try a simple ping +(with trace). + +Make sure you have run: + +$ vagrant ssh + +To get to the vagrant VM: + +vagrant@localhost:~$ + +Confirm that vpp is running with + +vagrant@localhost:~$ sudo status vpp +vpp start/running, process 25202 + +To create the tap: + +vagrant@localhost:~$ sudo vppctl tap connect foobar +Created tap-0 for Linux tap 'foobar' +vagrant@localhost:~$ sudo vppctl show int + +To assign it an ip address (and 'up' the interface): + +vagrant@localhost:~$ sudo vppctl set int ip address tap-0 192.168.1.1/24 +vagrant@localhost:~$ sudo vppctl set int state tap-0 up + +To turn on packet tracing for the tap interface: +vagrant@localhost:~$ sudo vppctl trace add tapcli-rx 10 + +Now, to set up and try the other end: +vagrant@localhost:~$ sudo ip addr add 192.168.1.2/24 dev foobar +vagrant@localhost:~$ ping -c 3 192.168.1.1 + +To look at the trace: +vagrant@localhost:~$ sudo vppctl show trace + +And to stop tracing: + +vagrant@localhost:~$ sudo vppctl clear trace + +Other fun things to look at: + +The vlib packet processing graph: +vagrant@localhost:~$ sudo vppctl show vlib graph + +which will produce output like: + + Name Next Previous +ip4-icmp-input error-punt [0] ip4-local + ip4-icmp-echo-request [1] + vpe-icmp4-oam [2] + +To read this, the first column (Name) is the name of the node. +The second column (Next) is the name of the children of that node. +The third column (Previous) is the name of the parents of this node. + +To see this README again: +cat /vagrant/README diff --git a/build-root/vagrant/env.sh b/build-root/vagrant/env.sh new file mode 100644 index 00000000000..f0edfd884ed --- /dev/null +++ b/build-root/vagrant/env.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export VPP_VAGRANT_DISTRO="ubuntu1404" +export VPP_VAGRANT_NICS=2 +export VPP_VAGRANT_VMCPU=4 +export VPP_VAGRANT_VMRAM=4096 -- 2.16.6