## 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. ### 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 ### Pre-baked box Don't feel like compiling the entire box? No fear, there's a pre-baked box available on S3. It is ~1.1gb to download: ```bash # Change into some random directory to download the box. # Doesn't matter where this goes, but *cannot* go into prelert-legacy/vagrant $ cd ~/some_directory # Export the path to your prelert-legacy repo. This is so the box knows where # to sync the folders $ export PRELERT_SRC_HOME=/path/to/prelert-legacy # Download the box from S3 $ s3cmd get s3://prelert-elastic-dump/prelert_env.box # ... # Downloading... # ... $ vagrant box add prelert prelert_env.box $ vagrant init prelert $ vagrant up $ vagrant ssh Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-96-generic x86_64) ... ... 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 ``` The pre-baked box has already compiled prelert once, so subsequent compilations should happen considerably faster. ### Compiling from Scratch If you feel like compiling everything from scratch instead of downloading the pre-baked box, simply `vagrant up` and let the provisioners run: ```bash $ cd prelert-legacy/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) ... ... 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`