To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / extra / soundsoftware / scripted-deploy / vagrant @ 1581:ae8043b014c7

1 1577:e38eee2e1d47 Chris
# -*- mode: ruby -*-
2
# vi: set ft=ruby :
3
4
Vagrant.configure("2") do |config|
5
  config.vm.box = "ubuntu/xenial64"
6
  config.vm.network "forwarded_port", guest: 80, host: 8080
7 1581:ae8043b014c7 Chris
  config.vm.synced_folder "../../../..", "/vagrant-code"
8 1577:e38eee2e1d47 Chris
  config.vm.provision :shell, path: "vagrant-provision.sh"
9
end
10
#!/bin/bash
11
12
set -e
13
14
apt-get update && \
15 1581:ae8043b014c7 Chris
    apt-get dist-upgrade -y && \
16 1577:e38eee2e1d47 Chris
    apt-get install -y \
17 1579:aba122ac2d40 Chris
    ack-grep \
18 1577:e38eee2e1d47 Chris
    apache2 \
19
    apache2-dev \
20
    apt-utils \
21
    build-essential \
22
    cron \
23
    curl \
24
    doxygen \
25
    exim4 \
26
    git \
27
    graphviz \
28
    imagemagick \
29
    libapache-dbi-perl \
30
    libapache2-mod-perl2 \
31
    libapr1-dev \
32
    libaprutil1-dev \
33
    libauthen-simple-ldap-perl \
34
    libcurl4-openssl-dev \
35
    libdbd-pg-perl \
36
    libpq-dev \
37
    libmagickwand-dev \
38
    libio-socket-ssl-perl \
39
    logrotate \
40
    mercurial \
41
    postgresql \
42
    rsync \
43
    ruby \
44
    ruby-dev \
45
    sudo
46
#!/bin/bash
47
48
set -e
49
50
# Passenger gets installed through gem, not apt
51
52
if [ ! -f /var/lib/gems/2.3.0/gems/passenger-4.0.60/buildout/apache2/mod_passenger.so ]; then
53
    gem install passenger -v 4.0.60 --no-rdoc --no-ri
54
    passenger-install-apache2-module --languages=ruby
55
fi
56
57
#!/bin/bash
58
59
set -e
60
61
if ! grep -q '^code:' /etc/passwd ; then
62
    groupadd code
63
    useradd -g code -G www-data code
64
fi
65
66
#!/bin/bash
67
68
set -e
69
70
if [ ! -d /var/www/code ]; then
71
    cp -a /vagrant-code /var/www/code
72
    chown -R code.www-data /var/www/code
73
    find /var/www/code -type d -exec chmod g+s \{\} \;
74
fi
75
76
#!/bin/bash
77
78
set -e
79
80
if [ ! -f /var/hg/index.cgi ]; then
81
    mkdir -p /var/hg
82
    chown code.www-data /var/hg
83
    chmod g+s /var/hg
84 1581:ae8043b014c7 Chris
    cp /var/www/code/extra/soundsoftware/scripted-deploy/config/index.cgi /var/hg/
85
    cp /var/www/code/extra/soundsoftware/scripted-deploy/config/hgweb.config /var/hg/
86 1577:e38eee2e1d47 Chris
    chmod +x /var/hg/index.cgi
87
fi
88
89 1578:06ca2df3d7ca Chris
if [ ! -d /var/hg/vamp-plugin-sdk ]; then
90
    # This project can be used for testing
91
    cd /var/hg
92
    hg clone https://code.soundsoftware.ac.uk/hg/vamp-plugin-sdk
93
    chown -R code.www-data vamp-plugin-sdk
94
fi
95 1577:e38eee2e1d47 Chris
#!/bin/bash
96
97
set -e
98
99
if [ ! -f /var/www/code/config/database.yml ]; then
100 1581:ae8043b014c7 Chris
    cp /var/www/code/extra/soundsoftware/scripted-deploy/config/database.yml.interpolated \
101 1577:e38eee2e1d47 Chris
       /var/www/code/config/database.yml
102
fi
103
104
#!/bin/bash
105
106
set -e
107
108
cd /var/www/code
109
gem install bundler
110
bundle install
111
112
#!/bin/bash
113
114
set -e
115
116
cd /var/www/code
117
bundle exec rake generate_secret_token
118
119
#!/bin/bash
120
121
set -e
122
123
/etc/init.d/postgresql start
124
125
cd /var/www/code
126
127
if [ -f postgres-dumpall ]; then
128
    chmod ugo+r postgres-dumpall
129
    sudo -u postgres psql -f postgres-dumpall postgres
130
    rm postgres-dumpall # This was just a copy of the shared folder file anyway
131
fi
132
133
134
135
#!/bin/bash
136
137
set -e
138
139
if [ ! -f /usr/local/lib/site_perl/Apache/Authn/SoundSoftware.pm ]; then
140
    mkdir -p /usr/local/lib/site_perl/Apache/Authn/
141
    cp /var/www/code/extra/soundsoftware/SoundSoftware.pm /usr/local/lib/site_perl/Apache/Authn/
142
fi
143
144
#!/bin/bash
145
146
set -e
147
148
cd /var/www/code
149
150
if [ ! -f /etc/apache2/sites-enabled/10-code.conf ]; then
151
152
    rm -f /etc/apache2/sites-enabled/000-default.conf
153
154 1581:ae8043b014c7 Chris
    cp extra/soundsoftware/scripted-deploy/config/passenger.conf /etc/apache2/mods-available/
155
    cp extra/soundsoftware/scripted-deploy/config/passenger.load /etc/apache2/mods-available/
156
    cp extra/soundsoftware/scripted-deploy/config/perl.conf      /etc/apache2/mods-available/
157 1577:e38eee2e1d47 Chris
158
    ln -s ../mods-available/passenger.conf  /etc/apache2/mods-enabled/
159
    ln -s ../mods-available/passenger.load  /etc/apache2/mods-enabled/
160
    ln -s ../mods-available/perl.conf       /etc/apache2/mods-enabled/
161
    ln -s ../mods-available/expires.load    /etc/apache2/mods-enabled/
162
    ln -s ../mods-available/rewrite.load    /etc/apache2/mods-enabled/
163 1578:06ca2df3d7ca Chris
    ln -s ../mods-available/cgi.load        /etc/apache2/mods-enabled/
164 1577:e38eee2e1d47 Chris
165 1581:ae8043b014c7 Chris
    cp extra/soundsoftware/scripted-deploy/config/code.conf.interpolated /etc/apache2/sites-available/code.conf
166 1577:e38eee2e1d47 Chris
    ln -s ../sites-available/code.conf /etc/apache2/sites-enabled/10-code.conf
167
168
    apache2ctl configtest
169
170
fi
171
172 1581:ae8043b014c7 Chris
#!/bin/bash
173
174
set -e
175
176
apache2ctl restart
177
178
#!/bin/bash
179
180
dbpwd="$1"
181
if [ -z "$dbpwd" ]; then
182
    echo "Usage: $0 <database-password>" 1>&2
183
    exit 2
184
fi
185
186
set -eu
187
188
deploydir=./extra/soundsoftware/scripted-deploy
189
if [ ! -d "$deploydir" ]; then
190
    echo "Run this script from the root of a working copy of soundsoftware-site"
191
    exit 2
192
fi
193
194
managerdir="$deploydir/vagrant"
195
if [ ! -d "$managerdir" ]; then
196
    echo "ERROR: Required directory $managerdir not found"
197
    exit 2
198
fi
199
200
configdir="$deploydir/config"
201
if [ ! -d "$configdir" ]; then
202
    echo "ERROR: Required directory $configdir not found"
203
    exit 2
204
fi
205
206
if [ ! -f "postgres-dumpall" ]; then
207
    echo "ERROR: I expect to find a Postgres SQL multi-db dump file in ./postgres-dumpall"
208
    exit 2
209
fi
210
211
for f in database.yml code.conf ; do
212
    cat "$configdir/$f" |
213
        sed 's/INSERT_POSTGRES_PASSWORD_HERE/'"$dbpwd"'/g' > \
214
            "$configdir/$f.interpolated"
215
done
216
217
cd "$managerdir"
218
219
vagrant up
220
221 1577:e38eee2e1d47 Chris
#!/bin/bash
222
223
#!!! still not covered:
224
# * cron jobs
225
# * https
226
# * web fonts
227
228
set -e
229
230
for f in /vagrant/provision.d/[0-9]* ; do
231
    case "$f" in
232
        *~) ;;
233
        *) echo "Running provision script: $f"
234
           /bin/bash "$f";;
235
    esac
236
done