4 # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
5 VAGRANTFILE_API_VERSION = "2"
6 Vagrant.require_version ">=1.7.0"
8 $bootstrap_fedora = <<SCRIPT
10 dnf -y install autoconf automake openssl-devel libtool \
12 python3-twisted python3-zope-interface \
13 desktop-file-utils groff graphviz rpmdevtools nc curl \
14 wget-six python3-pyftpdlib checkpolicy \
15 selinux-policy-devel \
16 libcap-ng-devel kernel-devel-`uname -r` ethtool python3-pip \
18 pip-3 install tftpy # Not yet available for Python3 via dnf.
19 echo "search extra update built-in" >/etc/depmod.d/search_path.conf
22 $bootstrap_debian = <<SCRIPT
25 aptitude -y install -R \
26 build-essential dpkg-dev lintian devscripts fakeroot \
27 debhelper dh-autoreconf uuid-runtime \
28 autoconf automake libtool \
29 python3-all python3-twisted-core python3-twisted-conch \
30 xdg-utils groff graphviz netcat curl \
32 libcap-ng-dev libssl-dev python3-dev openssl \
33 python3-pyftpdlib python3-flake8 \
34 linux-headers-`uname -r` \
36 pip-3 install tftpy # Not yet available for Python3 via apt.
39 $bootstrap_centos = <<SCRIPT
41 yum -y install autoconf automake openssl-devel libtool \
43 python3-twisted-core python3-zope-interface \
44 desktop-file-utils groff graphviz rpmdevtools nc curl \
45 wget-six python3-pyftpdlib checkpolicy \
46 selinux-policy-devel \
47 libcap-ng-devel kernel-devel-`uname -r` ethtool net-tools \
51 $configure_ovs = <<SCRIPT
54 [ -f Makefile ] && ./configure && make distclean
57 /vagrant/configure --with-linux=/lib/modules/`uname -r`/build --enable-silent-rules
67 make check-kmod RECHECK=yes
70 $install_rpm = <<SCRIPT
72 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
75 cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
76 rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
77 rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
79 rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.fc23.x86_64.rpm
80 systemctl enable openvswitch
81 systemctl start openvswitch
82 systemctl status openvswitch
85 $install_centos_rpm = <<SCRIPT
87 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
90 cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
91 rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
92 rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
94 rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.x86_64.rpm
95 systemctl enable openvswitch
96 systemctl start openvswitch
97 systemctl status openvswitch
100 $install_deb = <<SCRIPT
102 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
105 ln -sf ~/build/openvswitch-$PACKAGE_VERSION.tar.gz openvswitch_$PACKAGE_VERSION.orig.tar.gz
106 rm -rf ~/openvswitch-$PACKAGE_VERSION
107 tar xzf openvswitch_$PACKAGE_VERSION.orig.tar.gz
108 cd ~/openvswitch-$PACKAGE_VERSION
110 dpkg -i ../openvswitch-{common,switch}*deb
111 systemctl enable openvswitch-switch
112 systemctl start openvswitch-switch
113 systemctl status openvswitch-switch
116 $test_ovs_system_userspace = <<SCRIPT
118 make check-system-userspace RECHECK=yes
121 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
122 config.vm.define "debian-8" do |debian|
123 debian.vm.box = "debian/jessie64"
124 debian.vm.synced_folder ".", "/vagrant", type: "rsync"
125 debian.vm.provision "bootstrap", type: "shell", inline: $bootstrap_debian
126 debian.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
127 debian.vm.provision "build_ovs", type: "shell", inline: $build_ovs
128 debian.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
129 debian.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
130 debian.vm.provision "install_deb", type: "shell", inline: $install_deb
132 config.vm.define "fedora-23" do |fedora|
133 fedora.vm.box = "fedora/23-cloud-base"
134 fedora.vm.synced_folder ".", "/vagrant", type: "rsync"
135 fedora.vm.provision "bootstrap", type: "shell", inline: $bootstrap_fedora
136 fedora.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
137 fedora.vm.provision "build_ovs", type: "shell", inline: $build_ovs
138 fedora.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
139 fedora.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
140 fedora.vm.provision "install_rpm", type: "shell", inline: $install_rpm
142 config.vm.define "centos-7" do |centos|
143 centos.vm.box = "centos/7"
144 centos.vm.synced_folder ".", "/vagrant", type: "rsync"
145 centos.vm.provision "bootstrap", type: "shell", inline: $bootstrap_centos
146 centos.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
147 centos.vm.provision "build_ovs", type: "shell", inline: $build_ovs
148 centos.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
149 centos.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
150 centos.vm.provision "install_rpm", type: "shell", inline: $install_centos_rpm