diff --git a/.sandstorm/Vagrantfile b/.sandstorm/Vagrantfile index 59daa0e1c..3fd1303e3 100644 --- a/.sandstorm/Vagrantfile +++ b/.sandstorm/Vagrantfile @@ -1,12 +1,16 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +# Guess at a reasonable name for the VM based on the folder vagrant-spk is +# run from. The timestamp is there to avoid conflicts if you have multiple +# folders with the same name. +VM_NAME = File.basename(File.dirname(File.dirname(__FILE__))) + "_sandstorm_#{Time.now.utc.to_i}" + # 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" + config.vm.box = "sandstorm/debian-jessie64" if Vagrant.has_plugin?("vagrant-vbguest") then # vagrant-vbguest is a Vagrant plugin that upgrades @@ -24,9 +28,9 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # 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" + config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/global-setup.sh", keep_color: true # Then, do stack-specific and app-specific setup. - config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/setup.sh" + config.vm.provision "shell", inline: "sudo bash /opt/app/.sandstorm/setup.sh", keep_color: true # 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, @@ -44,6 +48,13 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| elsif host =~ /linux/ cpus = `nproc`.to_i total_kB_ram = `grep MemTotal /proc/meminfo | awk '{print $2}'`.to_i + elsif host =~ /mingw/ + # powershell may not be available on Windows XP and Vista, so wrap this in a rescue block + begin + cpus = `powershell -Command "(Get-WmiObject Win32_Processor -Property NumberOfLogicalProcessors | Select-Object -Property NumberOfLogicalProcessors | Measure-Object NumberOfLogicalProcessors -Sum).Sum"`.to_i + total_kB_ram = `powershell -Command "Get-CimInstance -class cim_physicalmemory | % $_.Capacity}"`.to_i / 1024 + rescue + end end # Use the same number of CPUs within Vagrant as the system, with 1 # as a default. @@ -54,18 +65,19 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # 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? + if cpus.nil? or cpus.zero? cpus = 1 end if total_kB_ram.nil? or total_kB_ram < 2048000 - assign_ram_mb = 1024 + assign_ram_mb = 512 else - assign_ram_mb = (total_kB_ram / 1024 / 4) + assign_ram_mb = (total_kB_ram / 1024 / 2) 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 + vb.name = VM_NAME override.vm.synced_folder "..", "/opt/app" override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm" @@ -74,7 +86,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.provider :libvirt do |libvirt, override| libvirt.cpus = cpus libvirt.memory = assign_ram_mb - libvirt.random_hostname = true + libvirt.default_prefix = VM_NAME override.vm.synced_folder "..", "/opt/app", type: "9p", accessmode: "passthrough" override.vm.synced_folder ENV["HOME"] + "/.sandstorm", "/host-dot-sandstorm", type: "9p", accessmode: "passthrough"