Update Vagrant provision.sh to execute command as non-root user
Also, some commands were only available in an interactive shell, those were changed. Signed-off-by: Sebastian Serth <Sebastian.Serth@student.hpi.de>
This commit is contained in:
2
Vagrantfile
vendored
2
Vagrantfile
vendored
@ -8,5 +8,5 @@ Vagrant.configure(2) do |config|
|
|||||||
end
|
end
|
||||||
config.vm.network "private_network", ip: "192.168.59.104"
|
config.vm.network "private_network", ip: "192.168.59.104"
|
||||||
# config.vm.synced_folder "../data", "/vagrant_data"
|
# config.vm.synced_folder "../data", "/vagrant_data"
|
||||||
config.vm.provision "shell", path: "provision.sh"
|
config.vm.provision "shell", path: "provision.sh", privileged: false
|
||||||
end
|
end
|
||||||
|
102
provision.sh
102
provision.sh
@ -2,71 +2,87 @@
|
|||||||
# rvm/rails installation from https://gorails.com/setup/ubuntu/14.04
|
# rvm/rails installation from https://gorails.com/setup/ubuntu/14.04
|
||||||
# passenger installation from https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty/
|
# passenger installation from https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty/
|
||||||
|
|
||||||
|
######## VERSION INFORMATION ########
|
||||||
|
|
||||||
|
postgres_version=10
|
||||||
|
ruby_version=2.3.6
|
||||||
|
rails_version=4.2.10
|
||||||
|
|
||||||
|
########## INSTALL SCRIPT ###########
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main"
|
||||||
|
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||||
|
|
||||||
# passenger
|
# passenger
|
||||||
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
|
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
|
||||||
apt-get install -y apt-transport-https ca-certificates
|
sudo apt-get -qq -y install apt-transport-https ca-certificates
|
||||||
sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
|
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
|
||||||
|
|
||||||
# rails
|
# rails
|
||||||
add-apt-repository ppa:chris-lea/node.js
|
sudo add-apt-repository -y ppa:chris-lea/node.js
|
||||||
|
|
||||||
apt-get update
|
sudo apt-get -qq update
|
||||||
|
|
||||||
# code_ocean
|
# code_ocean
|
||||||
apt-get install -y postgresql-client postgresql-10 postgresql-server-dev-10 vagrant
|
sudo apt-get -qq -y install postgresql-client postgresql-$postgres_version postgresql-server-dev-$postgres_version vagrant
|
||||||
|
|
||||||
# Docker
|
# Docker
|
||||||
if [ ! -f /etc/default/docker ]
|
if [ ! -f /etc/default/docker ]
|
||||||
then
|
then
|
||||||
curl -sSL https://get.docker.com/ | sh
|
curl -sSL https://get.docker.com/ | sudo sh
|
||||||
fi
|
fi
|
||||||
if ! grep code_ocean /etc/default/docker
|
if ! grep code_ocean /etc/default/docker
|
||||||
then
|
then
|
||||||
cat >>/etc/default/docker <<EOF
|
sudo tee -a /etc/default/docker <<EOF
|
||||||
|
|
||||||
# code_ocean: enable TCP
|
# code_ocean: enable TCP
|
||||||
DOCKER_OPTS="-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock"
|
DOCKER_OPTS="-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock"
|
||||||
EOF
|
EOF
|
||||||
service docker restart
|
sudo service docker restart
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# run docker without sudo
|
# run docker without sudo
|
||||||
sudo groupadd docker
|
|
||||||
sudo gpasswd -a ${USER} docker
|
sudo gpasswd -a ${USER} docker
|
||||||
newgrp docker
|
|
||||||
sudo service docker restart
|
sudo service docker restart
|
||||||
|
|
||||||
docker pull openhpi/docker_java
|
sudo docker pull openhpi/docker_java
|
||||||
docker pull openhpi/docker_ruby
|
sudo docker pull openhpi/docker_ruby
|
||||||
docker pull openhpi/docker_python
|
sudo docker pull openhpi/docker_python
|
||||||
docker pull openhpi/co_execenv_python
|
sudo docker pull openhpi/co_execenv_python
|
||||||
docker pull openhpi/co_execenv_java
|
sudo docker pull openhpi/co_execenv_java
|
||||||
docker pull openhpi/co_execenv_java_antlr
|
sudo docker pull openhpi/co_execenv_java_antlr
|
||||||
|
|
||||||
# rvm
|
# rvm
|
||||||
apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
|
sudo apt-get -qq -y install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
|
||||||
apt-get install -y libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
|
|
||||||
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
|
gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
|
||||||
curl -L https://get.rvm.io | bash -s stable
|
curl -sSL https://get.rvm.io | sudo bash -s stable
|
||||||
|
|
||||||
|
# access rvm installation without sudo
|
||||||
|
sudo gpasswd -a ${USER} rvm
|
||||||
|
|
||||||
|
# ruby
|
||||||
source /etc/profile.d/rvm.sh
|
source /etc/profile.d/rvm.sh
|
||||||
rvm install 2.3.6
|
sg rvm "rvm install $ruby_version"
|
||||||
rvm use 2.3.6 --default
|
rvm use $ruby_version --default
|
||||||
|
sudo /usr/local/rvm/bin/rvm alias create default $ruby_version
|
||||||
ruby -v
|
ruby -v
|
||||||
|
|
||||||
# rails
|
# rails
|
||||||
apt-get -y install nodejs
|
sudo apt-get -qq -y install nodejs
|
||||||
gem install rails -v 4.2.10
|
sg rvm "/usr/local/rvm/rubies/ruby-$ruby_version/bin/gem install rails -v $rails_version"
|
||||||
|
# sudo gem install bundler
|
||||||
|
|
||||||
# drop postgres access control
|
# drop postgres access control
|
||||||
if ! grep -q code_ocean /etc/postgresql/10/main/pg_hba.conf
|
if ! sudo grep -q code_ocean /etc/postgresql/$postgres_version/main/pg_hba.conf
|
||||||
then
|
then
|
||||||
cat >/etc/postgresql/10/main/pg_hba.conf <<EOF
|
sudo tee /etc/postgresql/$postgres_version/main/pg_hba.conf <<EOF
|
||||||
# code_ocean: drop access control
|
# code_ocean: drop access control
|
||||||
local all all trust
|
local all all trust
|
||||||
host all all 127.0.0.1/32 trust
|
host all all 127.0.0.1/32 trust
|
||||||
host all all ::1/128 trust
|
host all all ::1/128 trust
|
||||||
EOF
|
EOF
|
||||||
service postgresql restart
|
sudo service postgresql restart
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# create database
|
# create database
|
||||||
@ -74,9 +90,20 @@ if ! (sudo -u postgres psql -l | grep -q code_ocean_development)
|
|||||||
then
|
then
|
||||||
sudo -u postgres createdb code_ocean_development || true
|
sudo -u postgres createdb code_ocean_development || true
|
||||||
fi
|
fi
|
||||||
|
if ! (sudo -u postgres psql -l | grep -q code_ocean_test)
|
||||||
|
then
|
||||||
|
sudo -u postgres createdb code_ocean_test || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Selenium tests
|
||||||
|
sudo apt-get -qq -y install xvfb firefox
|
||||||
|
wget --quiet -O ~/geckodriverdownload.tar.gz https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
|
||||||
|
sudo tar -xzf ~/geckodriverdownload.tar.gz -C /usr/local/bin
|
||||||
|
rm ~/geckodriverdownload.tar.gz
|
||||||
|
sudo chmod +x /usr/local/bin/geckodriver
|
||||||
|
|
||||||
# nginx and passenger
|
# nginx and passenger
|
||||||
apt-get install -y nginx-extras passenger
|
sudo apt-get -qq -y install nginx-extras passenger
|
||||||
|
|
||||||
############# codeocean install ###########################
|
############# codeocean install ###########################
|
||||||
cd /vagrant
|
cd /vagrant
|
||||||
@ -91,33 +118,36 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# install code
|
# install code
|
||||||
bundle install
|
sg rvm 'bundle install'
|
||||||
|
|
||||||
# create database
|
# create database
|
||||||
export RAILS_ENV=development
|
export RAILS_ENV=development
|
||||||
rake db:schema:load
|
rake db:schema:load
|
||||||
rake db:migrate
|
rake db:migrate
|
||||||
rake db:seed
|
sg docker 'rake db:seed'
|
||||||
sudo mkdir -p /shared
|
sudo mkdir -p /shared
|
||||||
chown -R vagrant /shared
|
sudo chown -R vagrant /shared
|
||||||
ln -sf /shared tmp/files #make sure you are running vagrant with admin privileges
|
ln -sf /shared tmp/files #make sure you are running vagrant with admin privileges
|
||||||
|
|
||||||
# NGINX
|
# NGINX
|
||||||
if [ ! -L /etc/nginx/sites-enabled/code_ocean ]
|
if [ ! -L /etc/nginx/sites-enabled/code_ocean ]
|
||||||
then
|
then
|
||||||
cat > /etc/nginx/sites-available/code_ocean <<EOF
|
sudo tee /etc/nginx/sites-available/code_ocean <<EOF
|
||||||
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
|
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
|
||||||
server {
|
server {
|
||||||
server_name codeocean.local;
|
server_name codeocean.local;
|
||||||
root /vagrant/public;
|
root /vagrant/public;
|
||||||
passenger_ruby /usr/local/rvm/gems/ruby-2.3.6/wrappers/ruby;
|
passenger_ruby /usr/local/rvm/gems/ruby-$ruby_version/wrappers/ruby;
|
||||||
passenger_sticky_sessions on;
|
passenger_sticky_sessions on;
|
||||||
passenger_enabled on;
|
passenger_enabled on;
|
||||||
passenger_app_env development;
|
passenger_app_env development;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
sudo rm -f /etc/nginx/sites-enabled/default
|
||||||
ln -s /etc/nginx/sites-available/code_ocean /etc/nginx/sites-enabled
|
sudo ln -s /etc/nginx/sites-available/code_ocean /etc/nginx/sites-enabled
|
||||||
#service nginx restart
|
#sudo service nginx restart
|
||||||
#cd /vagrant/ && rails s
|
#cd /vagrant/ && rails s
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Always set language to English
|
||||||
|
sudo locale-gen en_US en_US.UTF-8
|
||||||
|
Reference in New Issue
Block a user