blob: c068073f5f4e8b129e0f67a8f9f31ea1cf7b75fd [file] [log] [blame]
# -*- mode: ruby -*-
# vi: set ft=ruby :
# The "2" in Vagrant.configure configures the configuration version.
# Please don't change it unless you know what you're doing.
Vagrant.configure(2) do |config|
# https://docs.vagrantup.com.
# More at https://vagrantcloud.com/search.
config.vm.box = "ubuntu/xenial64"
# Memory size is set for installation of Krill
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.network "forwarded_port", guest: 5555, host: 5555
config.vm.box_download_insecure = true
# Provisioning of KorAP with a Shell script
config.vm.provision "shell", privileged: false, inline: <<-SHELL
###############################################
echo "Install Packages"
# Add repository for OpenJDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
echo "Install dependencies"
sudo apt-get install -qq git
sudo apt-get install -qq openjdk-8-jdk
sudo apt-get install -qq perlbrew
sudo apt-get install -qq emacs
sudo apt-get install -qq maven
sudo apt-get install -qq nodejs
sudo apt-get install -qq npm
sudo apt-get install -qq ruby
###############################################
echo "Stop the server"
sudo systemctl stop kalamar
# Kill Kustvakt before restarting
if [ -f /home/vagrant/Built/kustvakt.pid ]
then
echo 'Shutdown Kustvakt server'
sudo kill -9 `cat /home/vagrant/Built/kustvakt.pid`
fi
sudo systemctl disable kustvakt
sudo systemctl disable kalamar
###############################################
echo "Configure Git"
cd ~/
git config --global user.email "korap+vagrant@ids-mannheim.de"
git config --global user.name "Vagrant"
sudo chown vagrant:vagrant .config
###############################################
echo "Install Koral"
cd ~/
if [ -e ./Koral ] && [ -d ./Koral ]
then
cd Koral
git checkout master
git fetch --tags
else
git clone https://github.com/KorAP/Koral.git Koral
cd Koral
fi
# Checkout a specific version
git checkout tags/v0.35
mvn clean install -Dhttps.protocols=TLSv1.2
###############################################
echo "Install Krill"
cd ~/
if [ -e ./Krill ] && [ -d ./Krill ]
then
cd Krill
git checkout master
git fetch --tags
else
git clone https://github.com/KorAP/Krill.git Krill
cd Krill
fi
# Checkout a specific version
git checkout tags/v0.59
mvn clean install
###############################################
echo "Install Kustvakt"
cd ~/
if [ -e ./Kustvakt ] && [ -d ./Kustvakt ]
then
cd Kustvakt
git checkout master
git fetch --tags
else
git clone https://github.com/KorAP/Kustvakt.git Kustvakt
cd Kustvakt
fi
# Checkout a specific version
git checkout tags/v0.62.3-release
cd ~/Kustvakt/core
mvn clean install
cd ~/Kustvakt/lite
mvn clean package
###############################################
echo "Install NodeJS"
cd ~/
# This is required unfortunately
if [ ! -e ~/tmp ]; then
mkdir ~/tmp
fi
npm set ca null
sudo npm install -g n
sudo n stable
sudo npm install -g sass
sudo npm install -g grunt-cli
sudo npm install grunt
###############################################
echo "Install Perlbrew + CPANminus"
cd ~/
perlbrew init
echo "source ~/perl5/perlbrew/etc/bashrc" >> ~/.bashrc
source ~/perl5/perlbrew/etc/bashrc
perlbrew install -q perl-5.30.1
perlbrew switch perl-5.30.1
perlbrew install-cpanm
###############################################
echo "Install Kalamar server-side dependencies"
cpanm git://github.com/Akron/Mojolicious-Plugin-Localize.git
cpanm git://github.com/Akron/Mojolicious-Plugin-TagHelpers-ContentBlock.git
# Install Date::Parse ignoring any problems, as this is only
# used for testing purposes in CHI.
cpanm -f Date::Parse
###############################################
echo "Install Kalamar"
cd ~/
if [ -e ./Kalamar ] && [ -d ./Kalamar ]
then
cd Kalamar
git stash
git checkout master
git fetch --tags
else
git clone git://github.com/KorAP/Kalamar.git Kalamar
cd Kalamar
fi
# Checkout a specific version
git checkout tags/v0.37
cpanm --installdeps .
###############################################
# echo "Configure Kalamar for asset building"
echo "KorAP.Conf = KorAP.Conf || {};\
require([\
\'hint/foundries/base\',\
\'hint/foundries/corenlp\',\
\'hint/foundries/dereko\',\
\'hint/foundries/malt\',\
\'hint/foundries/marmot\',\
\'hint/foundries/opennlp\',\
\'hint/foundries/treetagger\'\
]);" > kalamar.conf.js
###############################################
# echo "Install Kalamar client-side dependencies"
rm -rf node_modules
npm install
grunt
###############################################
echo "Prepare Kustvakt"
cd ~/
if [ ! -e ./Built ]; then
mkdir Built
fi
# Copy the jar file to the built folder
# This will do so for all files - but the last one will be kept
find ~/Kustvakt/lite/target/Kustvakt-lite-*.jar -exec mv {} ~/Built/Kustvakt-lite.jar ';'
# Rewrite the configuration file
sed -e 's#^krill\.indexDir\s*=\s*.*$#krill.indexDir=../Kustvakt/sample-index#gm' \
-e 's#^server\.port\s*=\s*.*$#server.port=5556#gm' \
~/Kustvakt/lite/src/main/resources/kustvakt-lite.conf \
> ~/Built/kustvakt-lite.conf
###############################################
echo "Configure Kalamar"
cd ~/
cd Kalamar
# Add new configuration
echo "{hypnotoad=>{listen=>['http://*:5555']},\
Kalamar=>{experimental_proxy => 1}}"\
> kalamar.vagrant.conf
echo "not really secret" > kalamar.secret
###############################################
echo "Establish systemd"
echo "[Unit]
Description=Kustvakt
After=network.target
[Service]
User=vagrant
Type=forking
ExecStart=/bin/bash -l -c 'cd /home/vagrant/Built ; nohup java -jar Kustvakt-lite.jar & echo" '$!' " > kustvakt.pid'
PIDFile=/home/vagrant/Built/kustvakt.pid
KillMode=process
[Install]
WantedBy=multi-user.target" | sudo tee /lib/systemd/system/kustvakt.service
echo "[Unit]
Description=Kalamar
After=network.target
[Service]
User=vagrant
Type=forking
PIDFile=/home/vagrant/Kalamar/script/hypnotoad.pid
ExecStart=/bin/bash -l -c 'MOJO_MODE=vagrant KALAMAR_API=\"http://localhost:5556/api/\" " `dirname \\`which perl\\``"/hypnotoad /home/vagrant/Kalamar/script/kalamar'
ExecStop=/bin/bash -l -c 'MOJO_MODE=vagrant " `dirname \\`which perl\\``"/hypnotoad -s /home/vagrant/Kalamar/script/kalamar'
ExecReload=/bin/bash -l -c 'MOJO_MODE=vagrant KALAMAR_API=\"http://localhost:5556/api/\" " `dirname \\`which perl\\``"/hypnotoad /home/vagrant/Kalamar/script/kalamar'
killMode=process
[Install]
WantedBy=multi-user.target" | sudo tee /lib/systemd/system/kalamar.service
sudo systemctl enable kustvakt
sudo systemctl enable kalamar
# echo "Start Kustvakt"
sudo systemctl start kustvakt
# echo "Start Kalamar"
sudo systemctl start kalamar
SHELL
end