diff options
Diffstat (limited to 'build-root/vagrant')
l--------- | build-root/vagrant | 1 | ||||
-rw-r--r-- | build-root/vagrant/.gitignore | 1 | ||||
-rw-r--r-- | build-root/vagrant/README | 28 | ||||
-rw-r--r-- | build-root/vagrant/Vagrantfile | 113 | ||||
-rw-r--r-- | build-root/vagrant/WELCOME | 61 | ||||
-rwxr-xr-x | build-root/vagrant/build.sh | 74 | ||||
-rwxr-xr-x | build-root/vagrant/clearinterfaces.sh | 17 | ||||
-rw-r--r-- | build-root/vagrant/env.sh | 6 | ||||
-rw-r--r-- | build-root/vagrant/install.sh | 30 | ||||
-rwxr-xr-x | build-root/vagrant/run.sh | 23 | ||||
-rwxr-xr-x | build-root/vagrant/update.sh | 48 |
11 files changed, 1 insertions, 401 deletions
diff --git a/build-root/vagrant b/build-root/vagrant new file mode 120000 index 00000000..ada25b83 --- /dev/null +++ b/build-root/vagrant @@ -0,0 +1 @@ +../extras/vagrant
\ No newline at end of file diff --git a/build-root/vagrant/.gitignore b/build-root/vagrant/.gitignore deleted file mode 100644 index a977916f..00000000 --- a/build-root/vagrant/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.vagrant/ diff --git a/build-root/vagrant/README b/build-root/vagrant/README deleted file mode 100644 index 238c90ce..00000000 --- a/build-root/vagrant/README +++ /dev/null @@ -1,28 +0,0 @@ -INTRO: - -This is a vagrant environment for VPP. - -VPP currently works under Linux and has support for: - -- Ubuntu 14.04, Ubuntu 16.04 and Centos7.2 - -The VM builds VPP from source which can be located at /vpp - -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 - -By default, the VM created is/has: -- Ubuntu 14.04 -- 2 vCPUs -- 4G of RAM -- 2 NICs (1 x NAT - host access, 1 x VPP DPDK enabled) - -PROVIDERS: - -Supported vagrant providers are: - -- Virtualbox, VMware Fusion/Workstation, Libvirt - diff --git a/build-root/vagrant/Vagrantfile b/build-root/vagrant/Vagrantfile deleted file mode 100644 index b463d646..00000000 --- a/build-root/vagrant/Vagrantfile +++ /dev/null @@ -1,113 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -Vagrant.configure(2) do |config| - - # Pick the right distro and bootstrap, default is ubuntu1604 - distro = ( ENV['VPP_VAGRANT_DISTRO'] || "ubuntu1604") - if distro == 'centos7' - config.vm.box = "puppetlabs/centos-7.2-64-nocm" - config.ssh.insert_key = false - elsif distro == 'ubuntu1404' - config.vm.box = "puppetlabs/ubuntu-14.04-64-nocm" - else - config.vm.box = "puppetlabs/ubuntu-16.04-64-nocm" - end - config.vm.box_check_update = false - - config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"update.sh") - config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"build.sh"), :args => "/vpp vagrant" - - post_build = ( ENV['VPP_VAGRANT_POST_BUILD'] ) - if post_build == "test" - config.vm.provision "shell", inline: "echo Testing VPP; cd /vpp; make test" - elsif post_build == "install" - config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"install.sh"), :args => "/vpp" - config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"clearinterfaces.sh") - config.vm.provision :shell, :path => File.join(File.dirname(__FILE__),"run.sh") - 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 - - # Define some physical ports for your VMs to be used by DPDK - nics = (ENV['VPP_VAGRANT_NICS'] || "2").to_i(10) - for i in 1..nics - config.vm.network "private_network", type: "dhcp" - end - - # use http proxy if avaiable - if ENV['http_proxy'] && Vagrant.has_plugin?("vagrant-proxyconf") - config.proxy.http = ENV['http_proxy'] - config.proxy.https = ENV['https_proxy'] - config.proxy.no_proxy = "localhost,127.0.0.1" - end - - vmcpu=(ENV['VPP_VAGRANT_VMCPU'] || 2) - vmram=(ENV['VPP_VAGRANT_VMRAM'] || 4096) - - config.ssh.forward_agent = true - config.ssh.forward_x11 = true - - config.vm.provider "virtualbox" do |vb| - vb.customize ["modifyvm", :id, "--ioapic", "on"] - vb.memory = "#{vmram}" - vb.cpus = "#{vmcpu}" - - # rsync the vpp directory if provision hasn't happened yet - unless File.exist? (".vagrant/machines/default/virtualbox/action_provision") - config.vm.synced_folder "../../", "/vpp", type: "rsync", - rsync__auto: false, - rsync__exclude: [ - "build-root/build*/", - "build-root/install*/", - "build-root/images*/", - "build-root/*.deb", - "build-root/*.rpm", - "build-root/*.changes", - "build-root/python", - "build-root/deb/debian/*.dkms", - "build-root/deb/debian/*.install", - "build-root/deb/debian/changes", - "build-root/tools"] - end - - #support for the SSE4.x instruction is required in some versions of VB. - vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.1", "1"] - vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.2", "1"] - end - config.vm.provider "vmware_fusion" do |fusion,override| - fusion.vmx["memsize"] = "#{vmram}" - fusion.vmx["numvcpus"] = "#{vmcpu}" - end - config.vm.provider "libvirt" do |lv| - lv.memory = "#{vmram}" - lv.cpus = "#{vmcpu}" - end - config.vm.provider "vmware_workstation" do |vws,override| - vws.vmx["memsize"] = "#{vmram}" - vws.vmx["numvcpus"] = "#{vmcpu}" - end -end diff --git a/build-root/vagrant/WELCOME b/build-root/vagrant/WELCOME deleted file mode 100644 index eb6aa2fd..00000000 --- a/build-root/vagrant/WELCOME +++ /dev/null @@ -1,61 +0,0 @@ -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/build.sh b/build-root/vagrant/build.sh deleted file mode 100755 index 76838e28..00000000 --- a/build-root/vagrant/build.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -# Get Command Line arguements if present -VPP_DIR=$1 -if [ "x$1" != "x" ]; then - VPP_DIR=$1 -else - VPP_DIR=`dirname $0`/../../ -fi - -if [ "x$2" != "x" ]; then - SUDOCMD="sudo -H -u $2" -fi -echo 0:$0 -echo 1:$1 -echo 2:$2 -echo VPP_DIR: $VPP_DIR -echo SUDOCMD: $SUDOCMD - -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - sudo yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` -fi -KERNEL_OS=`uname -o` -KERNEL_MACHINE=`uname -m` -KERNEL_RELEASE=`uname -r` -KERNEL_VERSION=`uname -v` - -echo KERNEL_OS: $KERNEL_OS -echo KERNEL_MACHINE: $KERNEL_MACHINE -echo KERNEL_RELEASE: $KERNEL_RELEASE -echo KERNEL_VERSION: $KERNEL_VERSION -echo DISTRIB_ID: $DISTRIB_ID -echo DISTRIB_RELEASE: $DISTRIB_RELEASE -echo DISTRIB_CODENAME: $DISTRIB_CODENAME -echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION - -# Install dependencies -cd $VPP_DIR -make UNATTENDED=yes install-dep - -# Really really clean things up so we can be sure -# that the build works even when switching distros -$SUDOCMD make wipe -(cd build-root/;$SUDOCMD make distclean) -rm -f build-root/.bootstrap.ok - -if [ $DISTRIB_ID == "CentOS" ]; then - echo rpm -V apr-devel - rpm -V apr-devel - if [ $? != 0 ]; then sudo yum reinstall -y apr-devel;fi - echo rpm -V ganglia-devel - rpm -V ganglia-devel - if [ $? != 0 ]; then sudo yum reinstall -y ganglia-devel;fi - echo rpm -V libconfuse-devel - rpm -V libconfuse-devel - if [ $? != 0 ]; then sudo yum reinstall -y libconfuse-devel;fi -fi - -# Build and install packaging -$SUDOCMD make bootstrap -if [ $DISTRIB_ID == "Ubuntu" ]; then - $SUDOCMD make pkg-deb -elif [ $DISTRIB_ID == "CentOS" ]; then - (cd $VPP_DIR/vnet ;$SUDOCMD aclocal;$SUDOCMD automake -a) - $SUDOCMD make pkg-rpm -fi - diff --git a/build-root/vagrant/clearinterfaces.sh b/build-root/vagrant/clearinterfaces.sh deleted file mode 100755 index 78f6705c..00000000 --- a/build-root/vagrant/clearinterfaces.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# Capture all the interface IPs, in case we need them later -ip -o addr show > ~vagrant/ifconfiga -chown vagrant:vagrant ~vagrant/ifconfiga - -# Disable all ethernet interfaces other than the default route -# interface so VPP will use those interfaces. The VPP auto-blacklist -# algorithm prevents the use of any physical interface contained in the -# routing table (i.e. "route --inet --inet6") preventing the theft of -# the management ethernet interface by VPP from the kernel. -for intf in $(ls /sys/class/net) ; do - if [ -d /sys/class/net/$intf/device ] && - [ "$(route --inet --inet6 | grep default | grep $intf)" == "" ] ; then - ifconfig $intf down - fi -done diff --git a/build-root/vagrant/env.sh b/build-root/vagrant/env.sh deleted file mode 100644 index f0edfd88..00000000 --- a/build-root/vagrant/env.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -export VPP_VAGRANT_DISTRO="ubuntu1404" -export VPP_VAGRANT_NICS=2 -export VPP_VAGRANT_VMCPU=4 -export VPP_VAGRANT_VMRAM=4096 diff --git a/build-root/vagrant/install.sh b/build-root/vagrant/install.sh deleted file mode 100644 index a53faa4d..00000000 --- a/build-root/vagrant/install.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# Get Command Line arguements if present -VPP_DIR=$1 -if [ "x$1" != "x" ]; then - VPP_DIR=$1 -else - VPP_DIR=`dirname $0`/../../ -fi - -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - sudo yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` -fi -echo DISTRIB_ID: $DISTRIB_ID -echo DISTRIB_RELEASE: $DISTRIB_RELEASE -echo DISTRIB_CODENAME: $DISTRIB_CODENAME -echo DISTRIB_DESCRIPTION: $DISTRIB_DESCRIPTION - -if [ $DISTRIB_ID == "Ubuntu" ]; then - (cd ${VPP_DIR}/build-root/;sudo dpkg -i *.deb) -elif [ $DISTRIB_ID == "CentOS" ]; then - (cd ${VPP_DIR}/build-root/;sudo rpm -Uvh *.rpm) -fi
\ No newline at end of file diff --git a/build-root/vagrant/run.sh b/build-root/vagrant/run.sh deleted file mode 100755 index 1cd33826..00000000 --- a/build-root/vagrant/run.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` -fi - -if [ $DISTRIB_ID == "CentOS" ]; then - # Install uio-pci-generic - modprobe uio_pci_generic -fi -echo "Starting VPP..." -if [ $DISTRIB_ID == "Ubuntu" ] && [ $DISTRIB_CODENAME = "trusty" ] ; then - start vpp -else - service vpp start -fi diff --git a/build-root/vagrant/update.sh b/build-root/vagrant/update.sh deleted file mode 100755 index f4139d74..00000000 --- a/build-root/vagrant/update.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -# Make sure that we get the hugepages we need on provision boot -# Note: The package install should take care of this at the end -# But sometimes after all the work of provisioning, we can't -# get the requested number of hugepages without rebooting. -# So do it here just in case -sysctl -w vm.nr_hugepages=1024 -HUGEPAGES=`sysctl -n vm.nr_hugepages` -if [ $HUGEPAGES != 1024 ]; then - echo "ERROR: Unable to get 1024 hugepages, only got $HUGEPAGES. Cannot finish." - exit -fi - -# Figure out what system we are running on -if [ -f /etc/lsb-release ];then - . /etc/lsb-release -elif [ -f /etc/redhat-release ];then - yum install -y redhat-lsb - DISTRIB_ID=`lsb_release -si` - DISTRIB_RELEASE=`lsb_release -sr` - DISTRIB_CODENAME=`lsb_release -sc` - DISTRIB_DESCRIPTION=`lsb_release -sd` -fi - -# Do initial setup for the system -if [ $DISTRIB_ID == "Ubuntu" ]; then - - export DEBIAN_PRIORITY=critical - export DEBIAN_FRONTEND=noninteractive - export DEBCONF_NONINTERACTIVE_SEEN=true - APT_OPTS="--assume-yes --no-install-suggests --no-install-recommends -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\"" - - # Standard update + upgrade dance - apt-get update ${APT_OPTS} >/dev/null - apt-get upgrade ${APT_OPTS} >/dev/null - - # Fix the silly notion that /bin/sh should point to dash by pointing it to bash - - update-alternatives --install /bin/sh sh /bin/bash 100 - - # Install useful but non-mandatory tools - apt-get install -y emacs x11-utils git-review gdb gdbserver -elif [ $DISTRIB_ID == "CentOS" ]; then - # Standard update + upgrade dance - yum check-update - yum update -y -fi |