changeset 1577:e38eee2e1d47 dockerise

Some provisioning scripts
author Chris Cannam
date Fri, 04 Aug 2017 14:31:30 +0100
parents d1de6986e429
children 06ca2df3d7ca
files .hgignore extra/soundsoftware/vagranttest/Vagrantfile extra/soundsoftware/vagranttest/provision.d/000-apt.sh extra/soundsoftware/vagranttest/provision.d/010-passenger.sh extra/soundsoftware/vagranttest/provision.d/020-users.sh extra/soundsoftware/vagranttest/provision.d/030-webapp-dir.sh extra/soundsoftware/vagranttest/provision.d/040-hg-dir.sh extra/soundsoftware/vagranttest/provision.d/050-webapp-db.sh extra/soundsoftware/vagranttest/provision.d/060-bundler.sh extra/soundsoftware/vagranttest/provision.d/070-secret-token.sh extra/soundsoftware/vagranttest/provision.d/080-database-load.sh extra/soundsoftware/vagranttest/provision.d/090-perl-auth-module.sh extra/soundsoftware/vagranttest/provision.d/100-apache-config.sh extra/soundsoftware/vagranttest/vagrant-provision.sh
diffstat 14 files changed, 187 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Fri Aug 04 11:24:54 2017 +0100
+++ b/.hgignore	Fri Aug 04 14:31:30 2017 +0100
@@ -39,3 +39,4 @@
 Gemfile.local
 *.interpolated
 re:^config\.ru$
+.vagrant
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/Vagrantfile	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,9 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+Vagrant.configure("2") do |config|
+  config.vm.box = "ubuntu/xenial64"
+  config.vm.network "forwarded_port", guest: 80, host: 8080
+  config.vm.synced_folder "../../..", "/vagrant-code"
+  config.vm.provision :shell, path: "vagrant-provision.sh"
+end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/000-apt.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+set -e
+
+apt-get update && \
+    apt-get install -y \
+    apache2 \
+    apache2-dev \
+    apt-utils \
+    build-essential \
+    cron \
+    curl \
+    doxygen \
+    exim4 \
+    git \
+    graphviz \
+    imagemagick \
+    libapache-dbi-perl \
+    libapache2-mod-perl2 \
+    libapr1-dev \
+    libaprutil1-dev \
+    libauthen-simple-ldap-perl \
+    libcurl4-openssl-dev \
+    libdbd-pg-perl \
+    libpq-dev \
+    libmagickwand-dev \
+    libio-socket-ssl-perl \
+    logrotate \
+    mercurial \
+    postgresql \
+    rsync \
+    ruby \
+    ruby-dev \
+    sudo
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/010-passenger.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+# Passenger gets installed through gem, not apt
+
+if [ ! -f /var/lib/gems/2.3.0/gems/passenger-4.0.60/buildout/apache2/mod_passenger.so ]; then
+    gem install passenger -v 4.0.60 --no-rdoc --no-ri
+    passenger-install-apache2-module --languages=ruby
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/020-users.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+if ! grep -q '^code:' /etc/passwd ; then
+    groupadd code
+    useradd -g code -G www-data code
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/030-webapp-dir.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+set -e
+
+if [ ! -d /var/www/code ]; then
+    cp -a /vagrant-code /var/www/code
+    chown -R code.www-data /var/www/code
+    find /var/www/code -type d -exec chmod g+s \{\} \;
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/040-hg-dir.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e
+
+if [ ! -f /var/hg/index.cgi ]; then
+    mkdir -p /var/hg
+    chown code.www-data /var/hg
+    chmod g+s /var/hg
+    cp /var/www/code/extra/soundsoftware/dockertest/index.cgi /var/hg/
+    cp /var/www/code/extra/soundsoftware/dockertest/hgweb.config /var/hg/
+    chmod +x /var/hg/index.cgi
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/050-webapp-db.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -e
+
+#!!! This will fail until we have the user-supplied password
+#!!! interpolation logic (also the path is silly)
+
+if [ ! -f /var/www/code/config/database.yml ]; then
+    cp /var/www/code/extra/soundsoftware/dockertest/database.yml.interpolated \
+       /var/www/code/config/database.yml
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/060-bundler.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -e
+
+cd /var/www/code
+gem install bundler
+bundle install
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/070-secret-token.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+set -e
+
+cd /var/www/code
+bundle exec rake generate_secret_token
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/080-database-load.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+/etc/init.d/postgresql start
+
+cd /var/www/code
+
+if [ -f postgres-dumpall ]; then
+    chmod ugo+r postgres-dumpall
+    sudo -u postgres psql -f postgres-dumpall postgres
+    rm postgres-dumpall # This was just a copy of the shared folder file anyway
+fi
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/090-perl-auth-module.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+
+if [ ! -f /usr/local/lib/site_perl/Apache/Authn/SoundSoftware.pm ]; then
+    mkdir -p /usr/local/lib/site_perl/Apache/Authn/
+    cp /var/www/code/extra/soundsoftware/SoundSoftware.pm /usr/local/lib/site_perl/Apache/Authn/
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/provision.d/100-apache-config.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -e
+
+cd /var/www/code
+
+#!!! This will fail until we have the user-supplied password
+#!!! interpolation logic (also the source paths are silly)
+
+if [ ! -f /etc/apache2/sites-enabled/10-code.conf ]; then
+    
+    rm -f /etc/apache2/sites-enabled/000-default.conf
+
+    cp extra/soundsoftware/dockertest/passenger.conf /etc/apache2/mods-available/
+    cp extra/soundsoftware/dockertest/passenger.load /etc/apache2/mods-available/
+    cp extra/soundsoftware/dockertest/perl.conf      /etc/apache2/mods-available/
+
+    ln -s ../mods-available/passenger.conf  /etc/apache2/mods-enabled/
+    ln -s ../mods-available/passenger.load  /etc/apache2/mods-enabled/
+    ln -s ../mods-available/perl.conf       /etc/apache2/mods-enabled/
+    ln -s ../mods-available/expires.load    /etc/apache2/mods-enabled/
+    ln -s ../mods-available/rewrite.load    /etc/apache2/mods-enabled/
+
+    cp extra/soundsoftware/dockertest/code.conf.interpolated /etc/apache2/sites-available/code.conf
+    ln -s ../sites-available/code.conf /etc/apache2/sites-enabled/10-code.conf
+
+    apache2ctl configtest
+
+fi
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extra/soundsoftware/vagranttest/vagrant-provision.sh	Fri Aug 04 14:31:30 2017 +0100
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+#!!! still not covered:
+# * user-supplied db password
+# * cron jobs
+# * https
+# * web fonts
+
+set -e
+
+for f in /vagrant/provision.d/[0-9]* ; do
+    case "$f" in
+        *~) ;;
+        *) echo "Running provision script: $f"
+           /bin/bash "$f";;
+    esac
+done
+