From 6def775af3a727ace056be7de4df8fce35458536 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 9 Feb 2016 22:26:13 +0000 Subject: [PATCH] vagrant: Add Vagrant-based development environment Integrate Vagrant by way of a Vagrantfile and a simple install script. This follows many of the instructions found in the development guide with the exceptions of the superuser creation, which is optional, the loading of archives, which requires per-user authentication, and the use of virtual environments, which are unnecessary in a teardown environment such as this. Signed-off-by: Stephen Finucane --- Vagrantfile | 26 ++++++++++++++ tools/install/install.sh | 75 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 Vagrantfile create mode 100644 tools/install/install.sh diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 00000000..b316d41f --- /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 00000000..b2a074bb --- /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." -- 2.47.3