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 python3-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 \
31 wget python3-six ethtool \
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 \
42 python3-twisted-core python3-zope-interface \
43 desktop-file-utils groff graphviz rpmdevtools nc curl \
44 wget python3-six python3-pyftpdlib checkpolicy \
45 selinux-policy-devel \
46 libcap-ng-devel kernel-devel-`uname -r` ethtool net-tools \
50 $configure_ovs = <<SCRIPT
53 [ -f Makefile ] && ./configure && make distclean
56 /vagrant/configure --with-linux=/lib/modules/`uname -r`/build --enable-silent-rules
66 make check-kmod RECHECK=yes
69 $install_rpm = <<SCRIPT
71 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
74 cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
75 rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
76 rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
78 rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.fc23.x86_64.rpm
79 systemctl enable openvswitch
80 systemctl start openvswitch
81 systemctl status openvswitch
84 $install_centos_rpm = <<SCRIPT
86 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
89 cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
90 rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
91 rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
93 rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.x86_64.rpm
94 systemctl enable openvswitch
95 systemctl start openvswitch
96 systemctl status openvswitch
99 $install_deb = <<SCRIPT
101 PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
104 ln -sf ~/build/openvswitch-$PACKAGE_VERSION.tar.gz openvswitch_$PACKAGE_VERSION.orig.tar.gz
105 rm -rf ~/openvswitch-$PACKAGE_VERSION
106 tar xzf openvswitch_$PACKAGE_VERSION.orig.tar.gz
107 cd ~/openvswitch-$PACKAGE_VERSION
109 dpkg -i ../openvswitch-{common,switch}*deb
110 systemctl enable openvswitch-switch
111 systemctl start openvswitch-switch
112 systemctl status openvswitch-switch
115 $test_ovs_system_userspace = <<SCRIPT
117 make check-system-userspace RECHECK=yes
120 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
121 config.vm.define "debian-8" do |debian|
122 debian.vm.box = "debian/jessie64"
123 debian.vm.synced_folder ".", "/vagrant", type: "rsync"
124 debian.vm.provision "bootstrap", type: "shell", inline: $bootstrap_debian
125 debian.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
126 debian.vm.provision "build_ovs", type: "shell", inline: $build_ovs
127 debian.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
128 debian.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
129 debian.vm.provision "install_deb", type: "shell", inline: $install_deb
131 config.vm.define "fedora-23" do |fedora|
132 fedora.vm.box = "fedora/23-cloud-base"
133 fedora.vm.synced_folder ".", "/vagrant", type: "rsync"
134 fedora.vm.provision "bootstrap", type: "shell", inline: $bootstrap_fedora
135 fedora.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
136 fedora.vm.provision "build_ovs", type: "shell", inline: $build_ovs
137 fedora.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
138 fedora.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
139 fedora.vm.provision "install_rpm", type: "shell", inline: $install_rpm
141 config.vm.define "centos-7" do |centos|
142 centos.vm.box = "centos/7"
143 centos.vm.synced_folder ".", "/vagrant", type: "rsync"
144 centos.vm.provision "bootstrap", type: "shell", inline: $bootstrap_centos
145 centos.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
146 centos.vm.provision "build_ovs", type: "shell", inline: $build_ovs
147 centos.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
148 centos.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
149 centos.vm.provision "install_rpm", type: "shell", inline: $install_centos_rpm