# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
-# Install fabric so that the KarmaWorld fabfile may be run.
-
-# build a shell script that installs prereqs, configures the database, sets up
-# the user/group associations, pulls in the code from the host machine, sets up
-# some external dependency configs, and then runs fabric.
+# Copy the vagrant SSH key into the VM so vagrant can SSH to localhost within
+# the VM. Continued in the shell script below.
+# http://serverfault.com/questions/491343/how-can-i-move-my-deploy-key-into-vagrant#comment549259_491345
+git_ssh_key = File.read(ENV['HOME'] + '/.vagrant.d/insecure_private_key');
+
+# build a shell script that installs prereqs, copies over the host secrets,
+# configures the database, sets up the user/group associations, pulls in the
+# code from the host machine, sets up some external dependency configs, and
+# then runs fabric.
shellscript = <<SCRIPT
+cat >>/home/vagrant/.ssh/insecure_private_key <<EOF
+#{git_ssh_key}
+EOF
+chown vagrant:vagrant /home/vagrant/.ssh/insecure_private_key
+chmod 600 /home/vagrant/.ssh/insecure_private_key
+cat >>/home/vagrant/.ssh/config <<EOF
+Host localhost
+ User vagrant
+ IdentityFile ~/.ssh/insecure_private_key
+
+Host 127.0.0.1
+ User vagrant
+ IdentityFile ~/.ssh/insecure_private_key
+EOF
+chmod 644 /home/vagrant/.ssh/config
+
+export DEBIAN_FRONTEND=noninteractive
+
+add-apt-repository -y ppa:coolwanglu/pdf2htmlex # pdf2htmlex
+
apt-get update
apt-get upgrade -y
apt-get install -y python-pip postgresql python-virtualenv virtualenvwrapper \
git nginx postgresql-server-dev-9.1 libxslt1-dev \
- libxml2-dev libmemcached-dev python-dev rabbitmq-server
+ libxml2-dev libmemcached-dev python-dev rabbitmq-server \
+ p7zip-full pdf2htmlex
echo "CREATE USER vagrant WITH CREATEROLE LOGIN; CREATE DATABASE karmaworld OWNER vagrant;" | su postgres -c "psql"
su vagrant -c "git clone /vagrant karmaworld"
-SECRETPATH="karmaworld/karmaworld/secret"
-CFILE="$SECRETPATH/db_settings.py"
+SECRETPATH="karmaworld/secret"
+
+su vagrant -c "cp /vagrant/$SECRETPATH/* karmaworld/$SECRETPATH/"
+
+CFILE="karmaworld/$SECRETPATH/db_settings.py"
cat > $CFILE <<CONFIG
#!/usr/bin/env python
# -*- coding:utf8 -*-
PROD_DB_USERNAME = 'vagrant'
PROD_DB_PASSWORD = ''
CONFIG
-cp $SECRETPATH/filepicker.py.example $SECRETPATH/filepicker.py
-cp $SECRETPATH/static_s3.py.example $SECRETPATH/static_s3.py
chown vagrant:vagrant $SECRETPATH/*.py
+cat > /etc/nginx/sites-available/karmaworld <<CONFIG
+server {
+ listen 80;
+ # don't do virtual hosting, handle all requests regardless of header
+ server_name "";
+ client_max_body_size 20M;
+
+ location / {
+ # pass traffic through to gunicorn
+ proxy_pass http://127.0.0.1:8000;
+ }
+}
+CONFIG
+rm /etc/nginx/sites-enabled/default
+ln -s /etc/nginx/sites-available/karmaworld /etc/nginx/sites-enabled/karmaworld
+sudo service nginx restart
+
+cp karmaworld/confs/prod/supervisor /etc/init.d
+chmod 755 /etc/init.d/supervisor
+update-rc.d supervisor defaults
+
pip install fabric
-#su vagrant -c "cd karmaworld; fab here first_deploy"
SCRIPT
# end of script