Common Vagrantfile for local testing
[integration/packaging.git] / packages / Vagrantfile
1 # -*- mode: ruby -*-
2 # vi: set ft=ruby :
3
4 # Vagrantfile API/syntax version.
5 VAGRANTFILE_API_VERSION = "2"
6
7 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
8
9   config.vm.define :centos do |centos|
10     # Configure VM RAM and CPU for VirtualBox. Change this to meet your needs.
11     centos.vm.provider :virtualbox do |virtualbox, override|
12         virtualbox.memory = 2048
13         virtualbox.cpus = 2
14         override.vm.box = "centos/7"
15     end
16
17     # Configure VM RAM and CPU for LibVirt. Change this to meet your needs.
18     centos.vm.provider :libvirt do |libvirt, override|
19         libvirt.memory = 2048
20         libvirt.cpus = 2
21         override.vm.box = "centos/7"
22     end
23
24     centos.vm.provider "docker" do |docker, override|
25         docker.build_dir = "."
26         docker.remains_running = false
27         override.vm.synced_folder ".", "/build"
28     end
29
30     # NFS is fragile, use rsync
31     centos.vm.synced_folder ".", "/vagrant", type: "rsync"
32     centos.vm.synced_folder ".", "/home/vagrant/sync", disabled: true
33
34     # Add EPEL for access to fedora-packager and maybe others
35     centos.vm.provision "shell", inline: "yum install -y epel-release"
36
37     # Install required software
38     # fedora-packager: Basic RPM packaging software
39     centos.vm.provision "shell", inline: "yum install -y fedora-packager \
40                                                          python-pip"
41
42     # Use the distribution's version of pip to upgrade to the latest pip
43     centos.vm.provision "shell", inline: "pip install --upgrade pip"
44
45     # Install Python dependences system-wide via pip.
46     centos.vm.provision "shell", inline: "pip install -r /vagrant/requirements.txt"
47
48     # Add vagrant user to mock group for rpmbuild
49     centos.vm.provision "shell", inline: "sudo usermod -a -G mock vagrant"
50   end
51
52   config.vm.define :debian do |debian|
53   debian.vm.provider :virtualbox do |virtualbox, override|
54         virtualbox.memory = 1024
55         # Two cores over default one for faster builds
56         virtualbox.cpus = 2
57         override.vm.box = "debian/stretch64"
58         override.vm.box_version = "> 9.0.0"
59    end
60
61   # Configure VM RAM and CPU for LibVirt
62   debian.vm.provider :libvirt do |libvirt, override|
63         libvirt.memory = 1024
64         # Two cores over default one for faster builds
65         libvirt.cpus = 2
66         override.vm.box = "debian/stretch64"
67         override.vm.box_version = "> 9.0.0"
68   end
69
70   debian.vm.provider "docker" do |docker, override|
71         docker.build_dir = "."
72         docker.remains_running = false
73         override.vm.synced_folder ".", "/build"
74   end
75
76   # NFS is fragile, disable it and use rsync
77   debian.nfs.functional = false
78
79   # Sync folders /packaging/deb/ and /vagrant
80   debian.vm.synced_folder ".", "/vagrant"
81
82   # Update package info to prevent old info from causing 404s during install
83   debian.vm.provision "shell", inline: "apt-get update"
84
85   # Install pkg dev tools, Python libs for build scripts, gdebi to test install
86   debian.vm.provision "shell", inline: "apt-get install -y --force-yes \
87                                             build-essential \
88                                             devscripts \
89                                             equivs \
90                                             dh-systemd \
91                                             git \
92                                             python-pip \
93                                             gdebi"
94
95   # Use the distribution's version of pip to upgrade to the latest pip
96   debian.vm.provision "shell", inline: "pip install --upgrade pip"
97
98   # Install Python dependences system-wide via pip
99   debian.vm.provision "shell", inline: "pip install -r /vagrant/requirements.txt"
100
101   # Add jessie-oldstable repo for openjdk-7-jre-headless package
102   # Note openjdk-7-jre-headless requires tzdata (= 2017b-0+deb8u1) also present in jessie-oldstable
103   debian.vm.provision "shell", inline: <<-SHELL
104         echo "deb http://httpredir.debian.org/debian jessie main" > /etc/apt/sources.list.d/jessie-oldstable.list
105         apt-get update
106   SHELL
107   end
108 end