55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# -*- mode: ruby -*-
 | 
						|
# vi: set ft=ruby :
 | 
						|
 | 
						|
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
 | 
						|
VAGRANTFILE_API_VERSION = "2"
 | 
						|
 | 
						|
SETUP_BASE = <<-EOF
 | 
						|
 | 
						|
set -e
 | 
						|
set -x
 | 
						|
set -v
 | 
						|
 | 
						|
echo "UseDNS no" >> /etc/ssh/sshd_config
 | 
						|
service ssh restart
 | 
						|
 | 
						|
dpkg --remove-architecture i386 # speeds up update
 | 
						|
apt-get update
 | 
						|
apt-get -y install kpartx debootstrap lvm2 qemu-utils cryptsetup
 | 
						|
 | 
						|
export CRYPTPASSPHRASE="#{ENV["BACKUP_ENCRYPTION_KEY"]}"
 | 
						|
 | 
						|
DF="/destdir/backupimage.dat"
 | 
						|
if [ ! -r "$DF" ] ;then
 | 
						|
    # internal laptop disk size, adjust to taste
 | 
						|
    # here's wishing exfat supported sparse files...
 | 
						|
    dd if=/dev/zero of=$DF bs=1 count=0 seek=750G
 | 
						|
    losetup /dev/loop0 $DF
 | 
						|
    echo "$CRYPTPASSPHRASE" | cryptsetup luksFormat /dev/loop0 -
 | 
						|
    echo "$CRYPTPASSPHRASE" | cryptsetup luksOpen /dev/loop0 backup-plain
 | 
						|
    pvcreate /dev/mapper/backup-plain
 | 
						|
    vgcreate backupvg0 /dev/mapper/backup-plain
 | 
						|
    lvcreate -n backup -l 100%FREE backupvg0
 | 
						|
    mkfs.ext4 /dev/backupvg0/backup
 | 
						|
else
 | 
						|
    losetup /dev/loop0 $DF
 | 
						|
    echo "$CRYPTPASSPHRASE" | cryptsetup luksOpen /dev/loop0 backup-plain
 | 
						|
    pvscan && vgscan && lvscan
 | 
						|
fi
 | 
						|
mkdir /mnt/backup
 | 
						|
mount /dev/backupvg0/backup /mnt/backup
 | 
						|
 | 
						|
EOF
 | 
						|
 | 
						|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
 | 
						|
  config.vm.box = "ubuntu-12.04"
 | 
						|
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/" + \
 | 
						|
    "current/precise-server-cloudimg-amd64-vagrant-disk1.box"
 | 
						|
  config.vm.synced_folder ENV["HOME"], "/sourcedir"
 | 
						|
  config.vm.synced_folder ENV["DESTDIR"], "/destdir"
 | 
						|
  config.vm.provision "shell", inline: SETUP_BASE
 | 
						|
  config.vm.provider :virtualbox do |vb|
 | 
						|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
 | 
						|
  end
 | 
						|
end
 |