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 / vagranttest @ 1577:e38eee2e1d47

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
  config.vm.synced_folder "../../..", "/vagrant-code"
8
  config.vm.provision :shell, path: "vagrant-provision.sh"
9
end
10
#!/bin/bash
11
12
set -e
13
14
apt-get update && \
15
    apt-get install -y \
16
    apache2 \
17
    apache2-dev \
18
    apt-utils \
19
    build-essential \
20
    cron \
21
    curl \
22
    doxygen \
23
    exim4 \
24
    git \
25
    graphviz \
26
    imagemagick \
27
    libapache-dbi-perl \
28
    libapache2-mod-perl2 \
29
    libapr1-dev \
30
    libaprutil1-dev \
31
    libauthen-simple-ldap-perl \
32
    libcurl4-openssl-dev \
33
    libdbd-pg-perl \
34
    libpq-dev \
35
    libmagickwand-dev \
36
    libio-socket-ssl-perl \
37
    logrotate \
38
    mercurial \
39
    postgresql \
40
    rsync \
41
    ruby \
42
    ruby-dev \
43
    sudo
44
#!/bin/bash
45
46
set -e
47
48
# Passenger gets installed through gem, not apt
49
50
if [ ! -f /var/lib/gems/2.3.0/gems/passenger-4.0.60/buildout/apache2/mod_passenger.so ]; then
51
    gem install passenger -v 4.0.60 --no-rdoc --no-ri
52
    passenger-install-apache2-module --languages=ruby
53
fi
54
55
#!/bin/bash
56
57
set -e
58
59
if ! grep -q '^code:' /etc/passwd ; then
60
    groupadd code
61
    useradd -g code -G www-data code
62
fi
63
64
#!/bin/bash
65
66
set -e
67
68
if [ ! -d /var/www/code ]; then
69
    cp -a /vagrant-code /var/www/code
70
    chown -R code.www-data /var/www/code
71
    find /var/www/code -type d -exec chmod g+s \{\} \;
72
fi
73
74
#!/bin/bash
75
76
set -e
77
78
if [ ! -f /var/hg/index.cgi ]; then
79
    mkdir -p /var/hg
80
    chown code.www-data /var/hg
81
    chmod g+s /var/hg
82
    cp /var/www/code/extra/soundsoftware/dockertest/index.cgi /var/hg/
83
    cp /var/www/code/extra/soundsoftware/dockertest/hgweb.config /var/hg/
84
    chmod +x /var/hg/index.cgi
85
fi
86
87
#!/bin/bash
88
89
set -e
90
91
#!!! This will fail until we have the user-supplied password
92
#!!! interpolation logic (also the path is silly)
93
94
if [ ! -f /var/www/code/config/database.yml ]; then
95
    cp /var/www/code/extra/soundsoftware/dockertest/database.yml.interpolated \
96
       /var/www/code/config/database.yml
97
fi
98
99
#!/bin/bash
100
101
set -e
102
103
cd /var/www/code
104
gem install bundler
105
bundle install
106
107
#!/bin/bash
108
109
set -e
110
111
cd /var/www/code
112
bundle exec rake generate_secret_token
113
114
#!/bin/bash
115
116
set -e
117
118
/etc/init.d/postgresql start
119
120
cd /var/www/code
121
122
if [ -f postgres-dumpall ]; then
123
    chmod ugo+r postgres-dumpall
124
    sudo -u postgres psql -f postgres-dumpall postgres
125
    rm postgres-dumpall # This was just a copy of the shared folder file anyway
126
fi
127
128
129
130
#!/bin/bash
131
132
set -e
133
134
if [ ! -f /usr/local/lib/site_perl/Apache/Authn/SoundSoftware.pm ]; then
135
    mkdir -p /usr/local/lib/site_perl/Apache/Authn/
136
    cp /var/www/code/extra/soundsoftware/SoundSoftware.pm /usr/local/lib/site_perl/Apache/Authn/
137
fi
138
139
#!/bin/bash
140
141
set -e
142
143
cd /var/www/code
144
145
#!!! This will fail until we have the user-supplied password
146
#!!! interpolation logic (also the source paths are silly)
147
148
if [ ! -f /etc/apache2/sites-enabled/10-code.conf ]; then
149
150
    rm -f /etc/apache2/sites-enabled/000-default.conf
151
152
    cp extra/soundsoftware/dockertest/passenger.conf /etc/apache2/mods-available/
153
    cp extra/soundsoftware/dockertest/passenger.load /etc/apache2/mods-available/
154
    cp extra/soundsoftware/dockertest/perl.conf      /etc/apache2/mods-available/
155
156
    ln -s ../mods-available/passenger.conf  /etc/apache2/mods-enabled/
157
    ln -s ../mods-available/passenger.load  /etc/apache2/mods-enabled/
158
    ln -s ../mods-available/perl.conf       /etc/apache2/mods-enabled/
159
    ln -s ../mods-available/expires.load    /etc/apache2/mods-enabled/
160
    ln -s ../mods-available/rewrite.load    /etc/apache2/mods-enabled/
161
162
    cp extra/soundsoftware/dockertest/code.conf.interpolated /etc/apache2/sites-available/code.conf
163
    ln -s ../sites-available/code.conf /etc/apache2/sites-enabled/10-code.conf
164
165
    apache2ctl configtest
166
167
fi
168
169
#!/bin/bash
170
171
#!!! still not covered:
172
# * user-supplied db password
173
# * cron jobs
174
# * https
175
# * web fonts
176
177
set -e
178
179
for f in /vagrant/provision.d/[0-9]* ; do
180
    case "$f" in
181
        *~) ;;
182
        *) echo "Running provision script: $f"
183
           /bin/bash "$f";;
184
    esac
185
done