aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Vagrantfile26
-rw-r--r--tools/install/install.sh75
2 files changed, 101 insertions, 0 deletions
diff --git a/Vagrantfile b/Vagrantfile
new file mode 100644
index 0000000..b316d41
--- /dev/null
+++ b/Vagrantfile
@@ -0,0 +1,26 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+Vagrant.configure(2) do |config|
+ # For a complete reference of available confguration options, please see the
+ # online documentation at https://docs.vagrantup.com.
+
+ config.vm.box = "ubuntu/trusty32"
+
+ config.vm.network "forwarded_port", guest: 8000, host: 8000
+ # Enable this if you want host-only access to the machine using the given IP
+ # config.vm.network "private_network", ip: "192.168.33.10"
+
+ # Provider-specific configuration so you can fine-tune various
+ # backing providers for Vagrant. These expose provider-specific options.
+ #
+ # config.vm.provider "virtualbox" do |vb|
+ # # Display the VirtualBox GUI when booting the machine
+ # vb.gui = true
+ #
+ # # Customize the amount of memory on the VM:
+ # vb.memory = "1024"
+ # end
+
+ config.vm.provision :shell, :path => "tools/install/install.sh"
+end
diff --git a/tools/install/install.sh b/tools/install/install.sh
new file mode 100644
index 0000000..b2a074b
--- /dev/null
+++ b/tools/install/install.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+# Script to set up patchwork on a Vagrant-powered Ubuntu Trusty host
+
+echo -e "\n--- Configuring environment ---\n"
+
+PROJECT_NAME=patchwork
+PROJECT_HOME=/vagrant
+WORKON_HOME=$PROJECT_HOME/.virtualenvs
+
+db_user=root
+db_pass=password
+
+export DJANGO_SETTINGS_MODULE=patchwork.settings.dev
+export DEBIAN_FRONTEND=noninteractive
+
+echo "mysql-server mysql-server/root_password password $db_pass" | debconf-set-selections
+echo "mysql-server mysql-server/root_password_again password $db_pass" | debconf-set-selections
+
+echo -e "\n--- Updating packages list ---\n"
+
+apt-get update -qq
+
+echo -e "\n--- Installing system packages ---\n"
+
+apt-get install -y python python3-dev python3-pip mysql-server \
+ libmysqlclient-dev curl > /dev/null
+
+echo -e "\n--- Installing Python dependencies ---\n"
+
+pip3 -q install virtualenv tox
+pip3 -q install -r $PROJECT_HOME/requirements-dev.txt
+
+echo -e "\n--- Configuring database ---\n"
+
+mysql -u$db_user -p$db_pass << EOF
+DROP DATABASE IF EXISTS patchwork;
+CREATE DATABASE patchwork CHARACTER SET utf8;
+GRANT ALL ON patchwork.* TO 'patchwork'@'localhost' IDENTIFIED BY 'password';
+EOF
+
+chmod a+x $PROJECT_HOME/manage.py
+
+echo -e "\n--- Loading initial data ---\n"
+
+sudo -E -u vagrant python3 $PROJECT_HOME/manage.py migrate > /dev/null
+sudo -E -u vagrant python3 $PROJECT_HOME/manage.py loaddata \
+ $PROJECT_HOME/patchwork/fixtures/default_tags.xml > /dev/null
+sudo -E -u vagrant python3 $PROJECT_HOME/manage.py loaddata \
+ $PROJECT_HOME/patchwork/fixtures/default_states.xml > /dev/null
+sudo -E -u vagrant python3 $PROJECT_HOME/manage.py loaddata \
+ $PROJECT_HOME/patchwork/fixtures/default_projects.xml > /dev/null
+
+echo -e "\n--- Configuring environment ---\n"
+
+cat >> /home/vagrant/.bashrc << EOF
+export DJANGO_SETTINGS_MODULE='patchwork.settings.dev'
+
+alias runserver='python3 /vagrant/manage.py runserver 0.0.0.0:8000'
+alias createsu='python3 /vagrant/manage.py createsuperuser'
+cd /vagrant
+EOF
+
+echo "Done."
+echo "You may now log in:"
+echo " $ vagrant ssh"
+echo "Once logged in, start the server using the 'runserver' alias:"
+echo " $ runserver"
+echo "You may wish to create a superuser for use with the admin console:"
+echo " $ createsuperuser"
+echo "For information on the above, and some examples on loading sample date,"
+echo "please refer to the documentation found in the 'doc' folder."
+echo "Alternatively, check out the docs online:"
+echo " https://patchwork.readthedocs.org/en/latest/development/"
+echo "Happy patchworking."