diff --git a/Vagrantfile b/Vagrantfile index 6c338e4b8..08a257116 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -4,17 +4,20 @@ # Original content copyright (c) 2014 dpen2000 licensed under the MIT license VAGRANTFILE_API_VERSION = "2" +Vagrant.require_version ">= 1.5.0" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - # A VMware compatible box is avaliable from: - # https://github.com/spkane/vagrant-boxes/releases/download/v1.0.0/trusty64_vmware.box - config.vm.box = "ubuntu/trusty64" + # Ubuntu 14.04 compatible with both VirtualBox and VMWare Fusion + # see https://github.com/phusion/open-vagrant-boxes#readme + config.vm.box = "phusion/ubuntu-14.04-amd64" + + config.vm.hostname = "coco-dev" config.vm.network "forwarded_port", guest: 3000, host: 3000 config.vm.network "forwarded_port", guest: 9485, host: 9485 - config.vm.provision "shell", path: "scripts/vagrant/provision.sh" + config.vm.provision "shell", path: "scripts/vagrant/provision.sh", privileged: false config.vm.provider "virtualbox" do |v| v.memory = 2048 @@ -22,8 +25,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| end config.vm.provider "vmware_fusion" do |v| - v.memory = 2048 - v.cpus = 2 + v.vmx["memsize"] = "2048" + v.vmx["numvcpus"] = 2 end end diff --git a/scripts/vagrant/fillMongo.sh b/scripts/vagrant/fillMongo.sh index feb401064..ca7e5c437 100755 --- a/scripts/vagrant/fillMongo.sh +++ b/scripts/vagrant/fillMongo.sh @@ -4,11 +4,14 @@ mkdir -p /vagrant/temp cd /vagrant/temp rm -f dump.tar.gz rm -rf dump -wget http://analytics.codecombat.com:8080/dump.tar.gz -tar xzvf dump.tar.gz --no-same-owner -mongorestore --drop +echo "Downloading mongo dump file..." +wget --no-verbose http://analytics.codecombat.com:8080/dump.tar.gz +tar xzf dump.tar.gz --no-same-owner +echo "Restoring mongo dump file..." +mongorestore --quiet --drop if [ -d /vagrant/temp/backup ] then + echo "Restoring mongo backup..." cd /vagrant/temp/backup - mongorestore + mongorestore --quiet fi diff --git a/scripts/vagrant/provision.sh b/scripts/vagrant/provision.sh index c6910d11d..513f62665 100644 --- a/scripts/vagrant/provision.sh +++ b/scripts/vagrant/provision.sh @@ -1,6 +1,13 @@ -#!/bin/bash +#!/bin/bash -e # Original content copyright (c) 2014 dpen2000 licensed under the MIT license +# some defaults +DISTRO="trusty" +NODE_VERSION="0.10" # 0.10 | 0.12 | 4.x | 5.x + +# inform apt that there's no user to answer interactive questions +export DEBIAN_FRONTEND=noninteractive + # Set default ulimits cat <<- EOF > /tmp/limits.conf * soft nofile 10000 @@ -9,23 +16,44 @@ EOF sudo mv /tmp/limits.conf /etc/security/limits.conf sudo chown root:root /etc/security/limits.conf -#Install required software -sudo apt-get -y update -sudo apt-get -y install python-software-properties git -sudo add-apt-repository -y ppa:chris-lea/node.js -sudo apt-get -y update -sudo apt-get -y install nodejs -sudo apt-get -y install g++ make -mkdir /vagrant/node_modules -sudo mkdir /node_modules -sudo chown vagrant:vagrant /node_modules -sudo mount -o bind /node_modules /vagrant/node_modules -cd /vagrant -npm install -sudo npm install -g geoip-lite -bower install --allow-root +# install prerequisites +curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add - +echo "deb https://deb.nodesource.com/node_${NODE_VERSION} ${DISTRO} main +deb-src https://deb.nodesource.com/node_${NODE_VERSION} ${DISTRO} main" | sudo tee /etc/apt/sources.list.d/nodesource.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list -sudo apt-get -y update -sudo apt-get -y install mongodb-org -bash /vagrant/scripts/vagrant/fillMongo.sh + +echo "updating apt sources..." +sudo apt-get -qq update + +echo "installing prerequisites..." +sudo apt-get -qqy install --no-install-recommends git g++ make curl wget + +# install node.js +echo "installing node.js..." +sudo apt-get -qqy install nodejs +echo "upgrading npm..." +sudo npm install -g npm@latest # upgrade npm +sudo npm install -g geoip-lite +sudo npm install -g bower + +# bind /vagrant/node_modules so that it does not leak through to the host file system +# which triggers symlink and path size issues on Windows hosts +mkdir -p /vagrant/node_modules +sudo mkdir -p /node_modules +sudo chown vagrant:vagrant /node_modules +sudo mount --bind /node_modules /vagrant/node_modules +cd /vagrant + +# install npm modules +echo "installing modules..." +npm install +bower install + +# install mongo +echo "installing mongodb..." +sudo apt-get -qqy install --no-install-recommends mongodb-org + +# populate mongo +echo "populating mongodb..." +exec /vagrant/scripts/vagrant/fillMongo.sh