vagrant-cloudron/Vagrantfile

85 lines
2.7 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby sw=2 ts=2 :
# Set this to custom url if using a fork
cloudron_setup_url = 'https://git.cloudron.io/cloudron/box/raw/master/scripts/cloudron-setup'
Vagrant.configure(2) do |config|
# Minimum requirement for Cloudron is 16.04
config.vm.box = "ubuntu/xenial64"
# Mosh is super nice, why not?
enable_mosh = false
if enable_mosh
(60000..61000).each do |p|
config.vm.network "forwarded_port", guest: p, host: p, protocol: 'udp'
end
end
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080
# config.vm.network "forwarded_port", guest: 443, host: 8081
config.vm.network "private_network", ip: "192.168.100.100"
# Set hostname for the box
config.vm.hostname = "cloudron.cloud"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "~/.ssh", "~/.ssh/vagrant_data"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
# Customize the amount of memory on the VM:
vb.memory = "2048"
end
# Virtual disk filepath
config.vm.provider :virtualbox do |vb|
# require 'pry'
# binding.pry
# disk_filepath = "#{ENV["HOME"]}/VirtualBox VMs/#{vb.name}/extended.vdi"
disk_filepath = "extended.vdi"
if ARGV[0] == "up" && ! File.exists?(disk_filepath)
# Create vdi
vb.customize [
'createhd',
'--filename', disk_filepath,
'--format', 'VDI',
# 20GB
'--size', 20 * 1024
]
vb.customize [
'storageattach', :id,
'--storagectl', 'SCSI',
'--port', 2, '--device', 0,
'--type', 'hdd',
'--medium', disk_filepath
]
# Run script to map new disk
# TODO: This doesn't actually work to extend yet
#config.vm.provision "shell", inline: <<-SHELL
# pvcreate /dev/sdb
# vgextend VolGroup /dev/sdb
# lvextend /dev/VolGroup/lv_root /dev/sdb
# resize2fs /dev/VolGroup/lv_root
#SHELL
end
end
# Set up Cloudron on provision. If using a fork, change this URL
config.vm.provision "shell", inline: <<-SHELL
wget #{cloudron_setup_url}
chmod +x cloudron-setup
./cloudron-setup --domain cloudron.cloud --provider generic --tls-provider fallback --dns-provider noop
SHELL
end