blob: 2848f5da6165c100410b5a73da6afddc0430fbf1 [file] [log] [blame]
Akron228cfa12018-10-01 16:14:41 +02001# -*- mode: ruby -*-
2# vi: set ft=ruby :
3
Akrona7b661d2018-10-09 19:13:45 +02004# The "2" in Vagrant.configure configures the configuration version.
5# Please don't change it unless you know what you're doing.
Akron228cfa12018-10-01 16:14:41 +02006Vagrant.configure(2) do |config|
Akroncc10f9a2018-10-09 19:57:27 +02007
Akron228cfa12018-10-01 16:14:41 +02008 # https://docs.vagrantup.com.
9
Akrona7b661d2018-10-09 19:13:45 +020010 # More at https://vagrantcloud.com/search.
Akronb66814e2018-10-17 16:51:11 +020011 config.vm.box = "ubuntu/xenial64"
Akron228cfa12018-10-01 16:14:41 +020012
Akron3c9cb422018-10-19 13:21:39 +020013 # Memory size is set for installation of Krill
Akrona7b661d2018-10-09 19:13:45 +020014 config.vm.provider "virtualbox" do |vb|
15 vb.customize ["modifyvm", :id, "--memory", "1024"]
16 end
Akronef285652018-10-10 15:50:29 +020017
18 config.vm.network "forwarded_port", guest: 5555, host: 5555
Akrona7b661d2018-10-09 19:13:45 +020019
20 config.vm.box_download_insecure = true
21
22 # Provisioning of KorAP with a Shell script
23 config.vm.provision "shell", privileged: false, inline: <<-SHELL
Akron228cfa12018-10-01 16:14:41 +020024
Akrona7b661d2018-10-09 19:13:45 +020025 ###############################################
26 echo "Install Packages"
Akron228cfa12018-10-01 16:14:41 +020027
Akrona7b661d2018-10-09 19:13:45 +020028 # Add repository for OpenJDK
29 sudo add-apt-repository ppa:openjdk-r/ppa
Akron228cfa12018-10-01 16:14:41 +020030
Akrona7b661d2018-10-09 19:13:45 +020031 sudo apt-get update
Akron228cfa12018-10-01 16:14:41 +020032
Akrona7b661d2018-10-09 19:13:45 +020033 echo "Install dependencies"
34 sudo apt-get install -qq git
35 sudo apt-get install -qq openjdk-8-jdk
36 sudo apt-get install -qq perlbrew
37 sudo apt-get install -qq emacs
38 sudo apt-get install -qq maven
Akroncc10f9a2018-10-09 19:57:27 +020039 sudo apt-get install -qq nodejs
40 sudo apt-get install -qq npm
41 sudo apt-get install -qq ruby
Akron228cfa12018-10-01 16:14:41 +020042
Akronb9406112018-11-15 19:34:32 +010043
44 ###############################################
45 echo "Stop the server"
46
47 sudo systemctl stop kalamar
48
49 # Kill Kustvakt before restarting
50 if [ -f /home/vagrant/Built/kustvakt.pid ]
51 then
52 echo 'Shutdown Kustvakt server'
53 sudo kill -9 `cat /home/vagrant/Built/kustvakt.pid`
54 fi
55
Akron4d0c9ef2018-11-06 16:49:35 +010056 sudo systemctl disable kustvakt
57 sudo systemctl disable kalamar
58
Akronb9406112018-11-15 19:34:32 +010059
Akrona7b661d2018-10-09 19:13:45 +020060 ###############################################
Akrone0486172018-12-06 16:44:32 +010061 echo "Configure Git"
62 cd ~/
63 git config --global user.email "korap+vagrant@ids-mannheim.de"
64 git config --global user.name "Vagrant"
65 sudo chown vagrant:vagrant .config
66
67 ###############################################
Akrona7b661d2018-10-09 19:13:45 +020068 echo "Install Koral"
69 cd ~/
70 if [ -e ./Koral ] && [ -d ./Koral ]
71 then
72 cd Koral
Akronb9406112018-11-15 19:34:32 +010073 git checkout master
74 git fetch --tags
Akrona7b661d2018-10-09 19:13:45 +020075 else
76 git clone https://github.com/KorAP/Koral.git Koral
77 cd Koral
78 fi
Akronb9406112018-11-15 19:34:32 +010079
80 # Checkout a specific version
Akron7fb904e2019-09-25 13:24:10 +020081 git checkout tags/v0.34
Akronb9406112018-11-15 19:34:32 +010082
Akrona7b661d2018-10-09 19:13:45 +020083 mvn clean install -Dhttps.protocols=TLSv1.2
84
85
86 ###############################################
87 echo "Install Krill"
88 cd ~/
89 if [ -e ./Krill ] && [ -d ./Krill ]
90 then
91 cd Krill
Akronb9406112018-11-15 19:34:32 +010092 git checkout master
93 git fetch --tags
Akrona7b661d2018-10-09 19:13:45 +020094 else
95 git clone https://github.com/KorAP/Krill.git Krill
96 cd Krill
97 fi
Akronb9406112018-11-15 19:34:32 +010098
99 # Checkout a specific version
Akron7fb904e2019-09-25 13:24:10 +0200100 git checkout tags/v0.58.7
Akronb9406112018-11-15 19:34:32 +0100101
Akrona7b661d2018-10-09 19:13:45 +0200102 mvn clean install
103
104
105 ###############################################
106 echo "Install Kustvakt"
107 cd ~/
108 if [ -e ./Kustvakt ] && [ -d ./Kustvakt ]
109 then
110 cd Kustvakt
Akronb9406112018-11-15 19:34:32 +0100111 git checkout master
112 git fetch --tags
Akrona7b661d2018-10-09 19:13:45 +0200113 else
114 git clone https://github.com/KorAP/Kustvakt.git Kustvakt
115 cd Kustvakt
116 fi
117
Akronb9406112018-11-15 19:34:32 +0100118 # Checkout a specific version
Akron7fb904e2019-09-25 13:24:10 +0200119 git checkout tags/v0.62.1-release
Akronb9406112018-11-15 19:34:32 +0100120
Akrona7b661d2018-10-09 19:13:45 +0200121 cd ~/Kustvakt/core
122 mvn clean install
123
124 cd ~/Kustvakt/lite
125 mvn clean package
126
127
128 ###############################################
Akroncc10f9a2018-10-09 19:57:27 +0200129 echo "Install NodeJS"
Akron6778d092020-01-16 13:08:27 +0100130 cd ~
Akroncc10f9a2018-10-09 19:57:27 +0200131 # This is required unfortunately
Akronef285652018-10-10 15:50:29 +0200132 if [ ! -e ~/tmp ]; then
133 mkdir ~/tmp
134 fi
Akroncc10f9a2018-10-09 19:57:27 +0200135 npm set ca null
Akronef285652018-10-10 15:50:29 +0200136 sudo npm install -g n
137 sudo n stable
Akroncc10f9a2018-10-09 19:57:27 +0200138 sudo npm install -g sass
139 sudo npm install -g grunt-cli
140 sudo npm install grunt
141
142
143 ###############################################
Akrona7b661d2018-10-09 19:13:45 +0200144 echo "Install Perlbrew + CPANminus"
145 cd ~/
146
147 perlbrew init
148 echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
149
150 source ~/perl5/perlbrew/etc/bashrc
151
Akron6778d092020-01-16 13:08:27 +0100152 perlbrew install -q perl-5.30.1
Akrona7b661d2018-10-09 19:13:45 +0200153
Akron6778d092020-01-16 13:08:27 +0100154 perlbrew switch perl-5.30.1
Akrona7b661d2018-10-09 19:13:45 +0200155 perlbrew install-cpanm
156
157
158 ###############################################
159 echo "Install Kalamar server-side dependencies"
Akrona7b661d2018-10-09 19:13:45 +0200160 cpanm git://github.com/Akron/Mojolicious-Plugin-Localize.git
161 cpanm git://github.com/Akron/Mojolicious-Plugin-TagHelpers-ContentBlock.git
162
Akron6778d092020-01-16 13:08:27 +0100163 # Install Date::Parse ignoring any problems, as this is only
164 # used for testing purposes in CHI.
165 cpanm -f Date::Parse
Akrona7b661d2018-10-09 19:13:45 +0200166
167 ###############################################
168 echo "Install Kalamar"
Akroncc10f9a2018-10-09 19:57:27 +0200169 cd ~/
Akrona7b661d2018-10-09 19:13:45 +0200170 if [ -e ./Kalamar ] && [ -d ./Kalamar ]
171 then
172 cd Kalamar
Akron7fb904e2019-09-25 13:24:10 +0200173 git stash
Akronb9406112018-11-15 19:34:32 +0100174 git checkout master
175 git fetch --tags
Akrona7b661d2018-10-09 19:13:45 +0200176 else
177 git clone git://github.com/KorAP/Kalamar.git Kalamar
178 cd Kalamar
179 fi
180
Akronb9406112018-11-15 19:34:32 +0100181 # Checkout a specific version
Akron7fb904e2019-09-25 13:24:10 +0200182 git checkout tags/v0.36
Akronb9406112018-11-15 19:34:32 +0100183
Akrona7b661d2018-10-09 19:13:45 +0200184 cpanm --installdeps .
185
186 ###############################################
Akron92ff3592019-01-30 20:03:16 +0100187 # echo "Configure Kalamar for asset building"
188
189 echo "KorAP.Conf = KorAP.Conf || {};\
190 require([\
191 \'hint/foundries/base\',\
192 \'hint/foundries/corenlp\',\
193 \'hint/foundries/dereko\',\
194 \'hint/foundries/malt\',\
195 \'hint/foundries/marmot\',\
196 \'hint/foundries/opennlp\',\
197 \'hint/foundries/treetagger\'\
198 ]);" > kalamar.conf.js
199
200
201 ###############################################
Akrona7b661d2018-10-09 19:13:45 +0200202 # echo "Install Kalamar client-side dependencies"
Akron6778d092020-01-16 13:08:27 +0100203 rm -rf node_modules
Akroncc10f9a2018-10-09 19:57:27 +0200204 npm install
205 grunt
Akrona7b661d2018-10-09 19:13:45 +0200206
Akronef285652018-10-10 15:50:29 +0200207
208 ###############################################
209 echo "Prepare Kustvakt"
210 cd ~/
211
212 if [ ! -e ./Built ]; then
213 mkdir Built
214 fi
215
216 # Copy the jar file to the built folder
217 # This will do so for all files - but the last one will be kept
218 find ~/Kustvakt/lite/target/Kustvakt-lite-*.jar -exec mv {} ~/Built/Kustvakt-lite.jar ';'
219
220 # Rewrite the configuration file
221 sed -e 's#^krill\.indexDir\s*=\s*.*$#krill.indexDir=../Kustvakt/sample-index#gm' \
222 -e 's#^server\.port\s*=\s*.*$#server.port=5556#gm' \
223 ~/Kustvakt/lite/src/main/resources/kustvakt-lite.conf \
224 > ~/Built/kustvakt-lite.conf
225
Akronef285652018-10-10 15:50:29 +0200226
Akronef285652018-10-10 15:50:29 +0200227 ###############################################
Akron4d0c9ef2018-11-06 16:49:35 +0100228 echo "Configure Kalamar"
Akronef285652018-10-10 15:50:29 +0200229 cd ~/
230 cd Kalamar
231
232 # Add new configuration
233 echo "{hypnotoad=>{listen=>['http://*:5555']}}" \
234 > kalamar.vagrant.conf
235
236 echo "not really secret" > kalamar.secret
237
Akronb66814e2018-10-17 16:51:11 +0200238 ###############################################
239 echo "Establish systemd"
240
Akronb9406112018-11-15 19:34:32 +0100241 echo "[Unit]
Akronb66814e2018-10-17 16:51:11 +0200242Description=Kustvakt
243After=network.target
244
245[Service]
Akron01e3c1a2019-12-18 10:00:43 +0100246User=vagrant
Akronb66814e2018-10-17 16:51:11 +0200247Type=forking
Akron01e3c1a2019-12-18 10:00:43 +0100248ExecStart=/bin/bash -l -c 'cd /home/vagrant/Built ; nohup java -jar Kustvakt-lite.jar & echo" '$!' " > kustvakt.pid'
Akronb66814e2018-10-17 16:51:11 +0200249PIDFile=/home/vagrant/Built/kustvakt.pid
250KillMode=process
251
252[Install]
Akronb9406112018-11-15 19:34:32 +0100253WantedBy=multi-user.target" | sudo tee /lib/systemd/system/kustvakt.service
Akronb66814e2018-10-17 16:51:11 +0200254
255 echo "[Unit]
256Description=Kalamar
257After=network.target
258
259[Service]
Akron01e3c1a2019-12-18 10:00:43 +0100260User=vagrant
Akronb66814e2018-10-17 16:51:11 +0200261Type=forking
262PIDFile=/home/vagrant/Kalamar/script/hypnotoad.pid
Akron6778d092020-01-16 13:08:27 +0100263ExecStart=/bin/bash -l -c 'MOJO_MODE=vagrant KALAMAR_API=\"http://localhost:5556/api/\" " `dirname \\`which perl\\``"/hypnotoad /home/vagrant/Kalamar/script/kalamar'
264ExecStop=/bin/bash -l -c 'MOJO_MODE=vagrant " `dirname \\`which perl\\``"/hypnotoad -s /home/vagrant/Kalamar/script/kalamar'
265ExecReload=/bin/bash -l -c 'MOJO_MODE=vagrant KALAMAR_API=\"http://localhost:5556/api/\" " `dirname \\`which perl\\``"/hypnotoad /home/vagrant/Kalamar/script/kalamar'
Akronb66814e2018-10-17 16:51:11 +0200266killMode=process
267
268[Install]
269WantedBy=multi-user.target" | sudo tee /lib/systemd/system/kalamar.service
270
271 sudo systemctl enable kustvakt
272 sudo systemctl enable kalamar
273
Akron4d0c9ef2018-11-06 16:49:35 +0100274 # echo "Start Kustvakt"
275 sudo systemctl start kustvakt
276
277 # echo "Start Kalamar"
278 sudo systemctl start kalamar
279
Akrona7b661d2018-10-09 19:13:45 +0200280 SHELL
Akron228cfa12018-10-01 16:14:41 +0200281end