diff --git a/vagrant/.gitignore b/vagrant/.gitignore new file mode 100644 index 00000000000..8000dd9db47 --- /dev/null +++ b/vagrant/.gitignore @@ -0,0 +1 @@ +.vagrant diff --git a/vagrant/README.md b/vagrant/README.md new file mode 100644 index 00000000000..831c2b42c25 --- /dev/null +++ b/vagrant/README.md @@ -0,0 +1,83 @@ +## Vagrant build environment + +This provides a vagrant box for building the C++ side of Prelert (and the Java side, +although that is easily accomplished outside vagrant). + +Provisioning the box will take a fair amount of time, since it needs to download +and compile a number of dependencies. + +A pre-provisioned box can be downloaded from: TODO + +### Details +- Ubuntu Trusty64 (14.04.5 LTS) +- 25% of host's memory +- 100% host's cores +- Maps prelert source repository to `/home/vagrant/prelert/src` + - Directory is shared with the host, so you can point your IDE to the prelert repo + and build inside vagrant +- Maps prelert build directory to `/home/vagrant/prelert/build` +- Changes into `/home/vagrant/prelert/src` on login + +### Usage + +```bash +$ cd prelert-legacy +$ cd vagrant +$ vagrant up + # ... + # wait while vagrant provisions + # ... +$ vagrant ssh + +Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-96-generic x86_64) + + * Documentation: https://help.ubuntu.com/ + + System information as of Tue Oct 4 16:06:31 UTC 2016 + + System load: 0.0 Processes: 196 + Usage of /: 12.0% of 39.34GB Users logged in: 0 + Memory usage: 2% IP address for eth0: 10.0.2.15 + Swap usage: 0% + + Graph this data and manage this system at: + https://landscape.canonical.com/ + + Get cloud support with Ubuntu Advantage Cloud Guest: + http://www.ubuntu.com/business/services/cloud + +New release '16.04.1 LTS' available. +Run 'do-release-upgrade' to upgrade to it. + + +Last login: Tue Oct 4 16:06:32 2016 from 10.0.2.2 +vagrant@vagrant-ubuntu-trusty-64:~/prelert/src$ +``` + +Once you've logged into the box, you'll be in the prelert source directory. You +can build immediately via: + +```bash +vagrant@vagrant-ubuntu-trusty-64:~/prelert/src$ gradle cppmake + # ... + # much building + # ... +``` + +### Suspending your box +Once you've provisioned a box, you can use `vagrant suspend` to "sleep" the box. +This has the advantage of rebooting quickly when you `vagrant up`, and returns you +to exactly what you were doing. On the downside, it eats more disk space since it +needs to sleep the entire image. + +You can alternatively use `vagrant halt`, which gracefully powers down the machine. +Rebooting via `vagrant up` takes longer since you are rebooting the entire OS, +but it saves more disk space. + +### Fixing a broken box +If you accidentally kill the provisioning process before it completes, you can +attempt to reprovision it with `vagrant reload --provision`. That will run +the provisioners that did not complete previously. + +If your box is still horribly broken, you can destroy it with `vagrant destroy` +and try again with `vagrant up` diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile new file mode 100644 index 00000000000..b2caf1ada6e --- /dev/null +++ b/vagrant/Vagrantfile @@ -0,0 +1,29 @@ +Vagrant.configure(2) do |config| + config.vm.box = "ubuntu/trusty64" + config.vm.provider "virtualbox" do |v| + host = RbConfig::CONFIG['host_os'] + + # Give VM 1/4 system memory + linux = RUBY_PLATFORM =~ /linux/ + osx = RUBY_PLATFORM =~ /darwin/ + windows = (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil + if osx + cpus = `sysctl -n hw.ncpu`.to_i + mem = `sysctl -n hw.memsize`.to_i / 1024 / 1024 + end + if linux + cpus = `nproc`.to_i + mem = `sed -n -e '/^MemTotal/s/^[^0-9]*//p' /proc/meminfo`.to_i / 1024 + end + if windows + cpus = `wmic computersystem get numberofprocessors`.split("\n")[2].to_i + mem = `wmic OS get TotalVisibleMemorySize`.split("\n")[2].to_i / 1024 + end + + mem = mem / 4 + v.customize ["modifyvm", :id, "--memory", mem] + v.customize ["modifyvm", :id, "--cpus", cpus] + end + config.vm.provision :shell, path: "provision.sh" + config.vm.synced_folder "../", "/home/vagrant/prelert/src", mount_options: ["dmode=777,fmode=777"] +end