mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 20:02:27 +03:00
84 lines
3.3 KiB
Ruby
84 lines
3.3 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"
|
||
|
|
||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||
|
# We base ourselves off Debian Jessie
|
||
|
config.vm.box = "debian/jessie64"
|
||
|
|
||
|
if Vagrant.has_plugin?("vagrant-vbguest") then
|
||
|
# vagrant-vbguest is a Vagrant plugin that upgrades
|
||
|
# the version of VirtualBox Guest Additions within each
|
||
|
# guest. If you have the vagrant-vbguest plugin, then it
|
||
|
# needs to know how to compile kernel modules, etc., and so
|
||
|
# we give it this hint about operating system type.
|
||
|
config.vm.guest = "debian"
|
||
|
end
|
||
|
|
||
|
# We forward port 6080, the Sandstorm web port, so that developers can
|
||
|
# visit their sandstorm app from their browser as local.sandstorm.io:6080
|
||
|
# (aka 127.0.0.1:6080).
|
||
|
config.vm.network :forwarded_port, guest: 6080, host: 6080
|
||
|
|
||
|
# Use a shell script to "provision" the box. This installs Sandstorm using
|
||
|
# the bundled installer.
|
||
|
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/global-setup.sh"
|
||
|
# Then, do stack-specific and app-specific setup.
|
||
|
config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/setup.sh"
|
||
|
|
||
|
# Shared folders are configured per-provider since vboxsf can't handle >4096 open files,
|
||
|
# NFS requires privilege escalation every time you bring a VM up,
|
||
|
# and 9p is only available on libvirt.
|
||
|
|
||
|
# Calculate the number of CPUs and the amount of RAM the system has,
|
||
|
# in a platform-dependent way; further logic below.
|
||
|
cpus = nil
|
||
|
total_kB_ram = nil
|
||
|
|
||
|
host = RbConfig::CONFIG['host_os']
|
||
|
if host =~ /darwin/
|
||
|
cpus = `sysctl -n hw.ncpu`.to_i
|
||
|
total_kB_ram = `sysctl -n hw.memsize`.to_i / 1024
|
||
|
elsif host =~ /linux/
|
||
|
cpus = `nproc`.to_i
|
||
|
total_kB_ram = `grep MemTotal /proc/meminfo | awk '{print $2}'`.to_i
|
||
|
end
|
||
|
# Use the same number of CPUs within Vagrant as the system, with 1
|
||
|
# as a default.
|
||
|
#
|
||
|
# Use at least 512MB of RAM, and if the system has more than 2GB of
|
||
|
# RAM, use 1/4 of the system RAM. This seems a reasonable compromise
|
||
|
# between having the Vagrant guest operating system not run out of
|
||
|
# RAM entirely (which it basically would if we went much lower than
|
||
|
# 512MB) and also allowing it to use up a healthily large amount of
|
||
|
# RAM so it can run faster on systems that can afford it.
|
||
|
if cpus.nil?
|
||
|
cpus = 1
|
||
|
end
|
||
|
if total_kB_ram.nil? or total_kB_ram < 2048000
|
||
|
assign_ram_mb = 1024
|
||
|
else
|
||
|
assign_ram_mb = (total_kB_ram / 1024 / 4)
|
||
|
end
|
||
|
# Actually apply these CPU/memory values to the providers.
|
||
|
config.vm.provider :virtualbox do |vb, override|
|
||
|
vb.cpus = cpus
|
||
|
vb.memory = assign_ram_mb
|
||
|
|
||
|
override.vm.synced_folder "..", "/opt/app"
|
||
|
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm"
|
||
|
override.vm.synced_folder "..", "/vagrant"
|
||
|
end
|
||
|
config.vm.provider :libvirt do |libvirt, override|
|
||
|
libvirt.cpus = cpus
|
||
|
libvirt.memory = assign_ram_mb
|
||
|
libvirt.random_hostname = true
|
||
|
|
||
|
override.vm.synced_folder "..", "/opt/app", type: "9p", accessmode: "passthrough"
|
||
|
override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm", type: "9p", accessmode: "passthrough"
|
||
|
override.vm.synced_folder "..", "/vagrant", type: "9p", accessmode: "passthrough"
|
||
|
end
|
||
|
end
|