1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-01-30 05:39:12 +02:00
pgbackrest/test/Vagrantfile
David Steele 1a98bd41b4 Mount tmpfs in Vagrantfile instead test.pl.
Mounting/unmounting tmpfs on /home/[user]/test takes time, forces at least 3GB of memory to be available for tests, and makes it harder to preserve data between tests.

Instead, move mounting of tmpfs to the Vagrantfile and add it to fstab so it survives reboots.
2018-11-02 08:37:27 -04:00

120 lines
5.9 KiB
Ruby

Vagrant.configure(2) do |config|
config.vm.provider :virtualbox do |vb|
vb.memory = 4096
vb.cpus = 8
end
config.vm.box = "ubuntu/bionic64"
config.vm.box_version = "20180719.0.0"
# vagrant plugin install vagrant-disksize
config.disksize.size = '64GB'
config.vm.provider :virtualbox do |vb|
vb.name = "pgbackrest-test"
end
# Provision the VM
config.vm.provision "shell", inline: <<-SHELL
#---------------------------------------------------------------------------------------------------------------------------
echo 'Build Begin' && date
# Suppress "dpkg-reconfigure: unable to re-open stdin: No file or directory" warning
export DEBIAN_FRONTEND=noninteractive
# Assign a host name
sed -i 's/^127\.0\.0\.1\t.*/127\.0\.0\.1\tlocalhost pgbackrest-test/' /etc/hosts
hostnamectl set-hostname pgbackrest-test
#---------------------------------------------------------------------------------------------------------------------------
echo 'Update Apt' && date
apt-get update
#---------------------------------------------------------------------------------------------------------------------------
echo 'Synchronize Date' && date
apt-get install -y ntpdate
ntpdate pool.ntp.org
#---------------------------------------------------------------------------------------------------------------------------
echo 'Use Google DNS' && date
echo 'supersede domain-name-servers 8.8.8.8;' >> /etc/dhcp/dhclient.conf
/etc/init.d/networking restart
# Set time sync settings so builds don't fail with clock drift errors
#---------------------------------------------------------------------------------------------------------------------------
echo 'Time Sync Settings' && date
sudo /etc/init.d/virtualbox-guest-utils stop
sudo /usr/sbin/VBoxService --timesync-set-on-restore --timesync-interval 5000 --timesync-set-threshold 1
# Mount tmpfs at /home/vagrant/test for faster testing
#---------------------------------------------------------------------------------------------------------------------------
echo 'Mount tmpfs' && date
sudo -u vagrant mkdir -p -m 770 /home/vagrant/test
echo 'tmpfs /home/vagrant/test tmpfs size=2560M 0 1' >> /etc/fstab
mount -a
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install Perl Modules' && date
apt-get install -y libdbd-pg-perl libio-socket-ssl-perl libxml-libxml-perl libxml-checker-perl libperl-critic-perl \
libdevel-nytprof-perl libyaml-libyaml-perl
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install Build Tools' && date
apt-get install -y devscripts build-essential lintian git txt2man debhelper libssl-dev zlib1g-dev lcov cloc
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install AWS CLI' && date
apt-get install -y python-pip
pip install --upgrade awscli
# Configure AWS CLI
sudo -i -u vagrant aws configure set region us-east-1
sudo -i -u vagrant aws configure set aws_access_key_id accessKey1
sudo -i -u vagrant aws configure set aws_secret_access_key verySecretKey1
# Create test alias for AWS CLI
echo '' >> /home/vagrant/.profile
echo '# Test alias for AWS CLI' >> /home/vagrant/.profile
echo 'alias s3-test="export PYTHONWARNINGS=ignore && aws s3 --endpoint-url=https://172.17.0.2 --no-verify-ssl"' \
>> /home/vagrant/.profile
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install Devel::Cover' && date
dpkg -i /backrest/test/package/u18-libdevel-cover-perl_1.29-2_amd64.deb
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install Docker' && date
curl -fsSL test.docker.com | sh
sudo usermod -aG docker vagrant
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install Dev Utilities' && date
apt-get install -y vim htop
#---------------------------------------------------------------------------------------------------------------------------
echo 'Install TeX Live' && date
apt-get install -y --no-install-recommends texlive-latex-base texlive-latex-extra texlive-fonts-recommended
apt-get install -y texlive-font-utils
#---------------------------------------------------------------------------------------------------------------------------
echo 'Create Postgres Group & pgBackRest User' && date
adduser --uid=5001 --ingroup=vagrant --disabled-password --gecos "" pgbackrest
#---------------------------------------------------------------------------------------------------------------------------
echo 'Build VM Images' && date
rm -rf /backrest/test/.vagrant/docker/*
rm -rf /backrest/test/.vagrant/libc/*
rm -rf /backrest/test/.vagrant/package/*
sudo su - vagrant -c '/backrest/test/test.pl --vm-build'
#---------------------------------------------------------------------------------------------------------------------------
echo 'Build End' && date
SHELL
# Don't share the default vagrant folder
config.vm.synced_folder ".", "/vagrant", disabled: true
# Mount backrest path for testing
config.vm.synced_folder "..", "/backrest"
end