From fdcbfc93e89fd9d511931263a302b8ebcc9e1e00 Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at> Date: Wed, 27 May 2015 17:03:22 +0200 Subject: [PATCH] using multiple bootstrap shell script (so on dbis-isochrone data can be imported without running virtualbox machine) --- Vagrantfile | 4 +- bootstrap/config.sh | 123 +++++++ bootstrap/createDatabase.sh | 69 ++++ bootstrap/importData.sh | 201 +++++++++++ .../prepareEnvironment.sh | 331 +++--------------- 5 files changed, 436 insertions(+), 292 deletions(-) create mode 100755 bootstrap/config.sh create mode 100755 bootstrap/createDatabase.sh create mode 100755 bootstrap/importData.sh rename bootstrap.sh => bootstrap/prepareEnvironment.sh (70%) mode change 100644 => 100755 diff --git a/Vagrantfile b/Vagrantfile index dd20e08..6b0cec5 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -60,7 +60,9 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.synced_folder "log/bootstrap", "/var/log/vagrant_bootstrap", create: true, owner: "vagrant", group: "vagrant" # Setup environment on startup (done using a shell script) - config.vm.provision "shell", path: "bootstrap.sh", args: ["niko", "secretPhdPassword#2014!", (isLocalMode ? "true" : "false")] + config.vm.provision "shell", path: "bootstrap/prepareEnvironment.sh", args: ["secretPhdPassword#2014!", (isLocalMode ? "true" : "false")] + config.vm.provision "shell", path: "bootstrap/createDatabase.sh", args: ["niko", "secretPhdPassword#2014!"] + config.vm.provision "shell", path: "bootstrap/importData.sh", args: ["niko", "secretPhdPassword#2014!", (isLocalMode ? "true" : "false")] # Network configuration config.vm.network :forwarded_port, guest: 5432, host: 5432, id: "postgresql", auto_correct: false diff --git a/bootstrap/config.sh b/bootstrap/config.sh new file mode 100755 index 0000000..c1c26f7 --- /dev/null +++ b/bootstrap/config.sh @@ -0,0 +1,123 @@ +#!/bin/bash +############################# +# This is used to configure the behaviout of the various bootstrap scripts. +############################# + +IMPORT_DATA_OSM=false +IMPORT_DATA_OSM_CACHED=false +IMPORT_DATA_SQL=true +IMPORT_SCHEDULES=true + +INSTALL_GEOSERVER=false +INSTALL_HTTPD=true +# install isochrone from vagrant start directory (eclipse project) +INSTALL_ISOCHRONE_LOCAL=false +# install latest isochrone release from nexus repository +INSTALL_ISOCHRONE_RELEASE=true +# install latest isochrone snapshot from nexus repository +INSTALL_ISOCHRONE_SNAPSHOT=true +# install latest isochrone tools from nexus repository +INSTALL_ISOCHRONE_TOOLS=true +INSTALL_NEO4J=false +INSTALL_NEO4J_SPATIAL=false +INSTALL_PGROUTING=false +INSTALL_POSTGIS=true +INSTALL_POSTGRES=true +INSTALL_POSTGRES_ADMIN=true +INSTALL_PROJECT_PSIPROBE=true + +CACHE_DIR_LOCAL="/tmp/vagrant-cache" +CACHE_DIR_REMOTE="http://dbis-informatik.uibk.ac.at/static/ma/niko/isochrone" +DEPLOY_DIR="/opt" +SETUP_DIR="/setup" +WORKING_DIR="/var/log/vagrant_bootstrap" + +# Parameters that can also (some must) be passed as arguments +IS_LOCAL_TEST_DEPLOY=false +PG_DB_NAME="isochrone" +PG_DB_USER="@db_username@" +PG_DB_PASSWORD="@db_password@" +TOMCAT_PASSWORD="@tomcat_password@" + +############################ +# Calculated variables +############################ + +# Do not change anything below this line! + +EXEC_POSTGRES="psql" +POSTGRES_SHARE="/usr/share/pgsql" +if [ ! -d ${POSTGRES_SHARE} ]; then + POSTGRES_SHARE="$(dirname /usr/pgsql*/.)""/share" +fi + +AVAILABLE_GEOSERVER=$([ -d "${DEPLOY_DIR}/geoserver" ] && echo true || echo false) +AVAILABLE_NEO4J=$([ -d "${DEPLOY_DIR}/neo4j" ] && echo true || echo false) +AVAILABLE_NEO4J_SPATIAL=$([ -d "${DEPLOY_DIR}/neo4j-spatial" ] && echo true || echo false) +AVAILABLE_POSTGRES=$(type ${EXEC_POSTGRES} >/dev/null 2>&1 && echo true || echo false) +AVAILABLE_POSTGIS=$([ -f "${POSTGRES_SHARE}/extension/postgis.control" ] && echo true || echo false) +AVAILABLE_PGROUTING=$([ -f "${POSTGRES_SHARE}/extension/pgrouting.control" ] && echo true || echo false) + +DOWNLOAD_DIR="${CACHE_DIR_LOCAL}/wget" +if [ ! -f "${SETUP_DIR}" ]; then + SCRIPT="$(readlink -f ${BASH_SOURCE[0]})" + SCRIPT_DIR="$(dirname ${SCRIPT})" + SETUP_DIR="$(dirname ${SCRIPT_DIR})" +fi +SHARED_CONF_DIR="${SETUP_DIR}/conf" +SHARED_IMG_DIR="${SETUP_DIR}/img" + +# Function definitions + +fn_arg2boolean() { + local OUTVAR="${1}" + local ARG="${2}" + local VALUE="${3}" # Default value + + if [ -n "$ARG" ]; then + if [ "$ARG" == "true" ]; then + VALUE=true + else + VALUE=false + fi + fi + + eval $OUTVAR="\$VALUE" +} + +fn_arg2string() { + local OUTVAR="${1}" + local ARG="${2}" + local VALUE="${3}" # Default value + + if [ "${VALUE:0:1}" == "@" ]; then + VALUE="${ARG}" + fi + if [ "${VALUE:0:1}" == "@" ]; then + echo '- No (or invalid) database user supplied!' + exit 1 + fi + + eval $OUTVAR="\$VALUE" +} + +fn_download() { + local FILE="$1" + local URL="$2" + + if wget --no-check-certificate -q -O /dev/null "$URL"; then + wget --no-check-certificate -q -O "$FILE" "$URL" + fi +} + +fn_download_newer() { + # "wget -N" does not work with "-O" option... so we use a workaround here + local FILE="$1" + local URL="$2" + + if [ ! -f "$FILE" ]; then + if wget --no-check-certificate -q -O /dev/null "$URL"; then + wget --no-check-certificate -q -O "$FILE" "$URL" + fi + fi +} diff --git a/bootstrap/createDatabase.sh b/bootstrap/createDatabase.sh new file mode 100755 index 0000000..8debd54 --- /dev/null +++ b/bootstrap/createDatabase.sh @@ -0,0 +1,69 @@ +#! /bin/bash +############################# +# This script creates postgis (and pgRouting) databases. +############################# + +if [ "$EUID" -ne "0" ]; then + echo '- This script must be run as root!' + exit 1 +fi + +############################ +# Variable definitions # +############################ + +SCRIPT="$(readlink -f ${BASH_SOURCE[0]})" +SCRIPT_DIR="$(dirname ${SCRIPT})" +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + # If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest) + # we will try to find it in the shared folder + SCRIPT_DIR="/vagrant/bootstrap" +fi +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + echo '- No variable declarations found (config.properties file not found)!' + exit 1; +fi +source "${SCRIPT_DIR}/config.sh" + +fn_arg2string PG_DB_USER "${1}" "${PG_DB_USER}" +fn_arg2string PG_DB_PASSWORD "${2}" "${PG_DB_PASSWORD}" + +###################### +# Database creation # +###################### + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Preparing the database ($(date +%H:%M:%S)):" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +START=$(date +%s) + +if $AVAILABLE_POSTGRES; then + echo "Creating postgresql database \"$PG_DB_NAME\"" + sudo -u "postgres" ${EXEC_POSTGRES} -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 + sudo -u "postgres" ${EXEC_POSTGRES} -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1 + + if $AVAILABLE_POSTGIS; then + echo "Registering postgis extension for database \"$PG_DB_NAME\"" + PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1 + PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1 + PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1 + fi + + if $AVAILABLE_PGROUTING; then + echo "Registering pgRouting extension for database \"$PG_DB_NAME\"" + PGPASSWORD="$PG_DB_PASSWORD" ${EXEC_POSTGRES} -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1 + fi +fi + +END=$(date +%s) +TOTAL=$(( $END - $START )) + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Database prepared" +printf 'Time to prepare the database: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60)) +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" diff --git a/bootstrap/importData.sh b/bootstrap/importData.sh new file mode 100755 index 0000000..6a00250 --- /dev/null +++ b/bootstrap/importData.sh @@ -0,0 +1,201 @@ +#! /bin/bash +############################# +# This script imports data (e.g. from the road network of bolzano) that is +# downloaded from osm (OpenStreetMap) and then imported into available +# databases (neo4j and postgresql). +############################# + +if [ "$EUID" -ne "0" ]; then + echo '- This script must be run as root!' + exit 1 +fi + +############################ +# Variable definitions # +############################ + +SCRIPT="$(readlink -f ${BASH_SOURCE[0]})" +SCRIPT_DIR="$(dirname ${SCRIPT})" +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + # If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest) + # we will try to find it in the shared folder + SCRIPT_DIR="/vagrant/bootstrap" +fi +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + echo '- No variable declarations found (config.properties file not found)!' + exit 1; +fi +source "${SCRIPT_DIR}/config.sh" + +if ! $IMPORT_DATA_OSM && ! $IMPORT_DATA_OSM_CACHED && ! $IMPORT_DATA_SQL; then + exit 0 +fi + +fn_arg2string PG_DB_USER "${1}" "${PG_DB_USER}" +fn_arg2string PG_DB_PASSWORD "${2}" "${PG_DB_PASSWORD}" +fn_arg2boolean IS_LOCAL_TEST_DEPLOY "${3}" "${IS_LOCAL_TEST_DEPLOY}" + +############################ +# Function definitions # +############################ + +fn_import_data() { + local NAME="$1" + local OSM_FILE="$2" + local OSM_FILE_FILTERED="$3" + local BOUNDING="$4" + local SQL_EXPORT_FILE="$5" + local TABLE_PREFIX="$6" + + local VALID_OSM=false + local VALID_SQL=false + if $IMPORT_DATA_SQL && $AVAILABLE_POSTGIS && $IMPORT_SCHEDULES; then + if [ -n "$SQL_EXPORT_FILE" ]; then + VALID_SQL=true + fi + fi + if ( $AVAILABLE_PGROUTING || $AVAILABLE_NEO4J_SPATIAL ) && ( $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_OSM ); then + # osm data does not need to be downloaded (since it would not be imported afterwards) + VALID_OSM=true + fi + + echo "Importing data for region of $NAME" + if ! ( $VALID_SQL || $VALID_OSM ); then + echo " - skipping import" + return 1 + fi + + if $VALID_SQL; then + echo " - downloading sql export" + fn_download_newer $DOWNLOAD_DIR/$SQL_EXPORT_FILE $CACHE_DIR_REMOTE/$SQL_EXPORT_FILE + cp $DOWNLOAD_DIR/$SQL_EXPORT_FILE $DEPLOY_DIR/$SQL_EXPORT_FILE >> /dev/null 2>&1 + + echo " - importing sql export into postgis database" + gunzip -c $DEPLOY_DIR/$SQL_EXPORT_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> "$WORKING_DIR/import_schedule_$NAME.log" 2>&1 + + echo " - getting table permissions" + tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"` + + echo " - fixing table permissions" + for tbl in $tables ; do + PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME"; + done + fi + + if ! $VALID_OSM; then + return 0 + fi + + if $IMPORT_DATA_OSM_CACHED; then + echo " - downloading cached OpenStreetMap file" + fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED + cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED >> /dev/null 2>&1 + fi + + if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then + if $IMPORT_DATA_OSM; then + echo " - downloading OpenStreetMap file (no cached file found)" + OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/} + fn_download_newer $OSM_FILENAME $OSM_DOWNLOAD_MIRROR/$OSM_FILE + + echo " - filtering OpenStreetMap data" + if [[ "$BOUNDING" == *.poly ]]; then + $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 + else + $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 + fi + else + echo " - problems with downloading cached osm file... this will most likely lead cause errors" + fi + fi + + if $AVAILABLE_PGROUTING; then + echo " - importing filtered OpenStreetMap data into pgRouting" + $DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> "import_osm2pgrouting_$NAME.log" 2>&1 + + echo " - creating pgRouting topology" + PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> "$WORKING_DIR/setup_database_$NAME.log" 2>&1 + fi + + if $AVAILABLE_NEO4J_SPATIAL; then + echo " - importing filtered OpenStreetMap data into neo4j-spatial" + cd $DEPLOY_DIR/neo4j-spatial + mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1 + cd $WORKING_DIR + fi + + return 0 +} + +################ +# Data import # +################ + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Importing datasets ($(date +%H:%M:%S)):" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +START=$(date +%s) + +# Import real world datasets +fn_import_data "Bozen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" "$TABLE_PREFIX_BZ" +fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" "$TABLE_PREFIX_IBK" +fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF +#if ! $IS_LOCAL_TEST_DEPLOY; then +# fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT +# fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST +#fi + +# Generate synthetic data +if $AVAILABLE_POSTGIS && $INSTALL_ISOCHRONE_TOOLS; then + java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.GridNetworkGenerator -d 100 -l 60 > "$WORKING_DIR/generate_gridNetwork.log" 2>&1 + java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.SpiderNetworkGenerator -d 6 -lvl 1000 -l 60 > "$WORKING_DIR/generate_spiderNetwork.log" 2>&1 +fi + +if $AVAILABLE_GEOSERVER; then + if $AVAILABLE_NEO4J_SPATIAL; then + echo "Configuring neo4j data permissions for geoserver" + chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db + fi + + echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION" + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs >> setup_geoserver_workspace.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs >> setup_geoserver_styles.log 2>&1 + cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1 + + if $AVAILABLE_NEO4J_SPATIAL; then + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1 + if ! $IS_LOCAL_TEST_DEPLOY; then +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1 +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1 + fi + fi + if $AVAILABLE_POSTGIS; then + # copy geoserver_setup_postgis_ds and replace username/password + cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs + sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs + sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs + + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1 + if ! $IS_LOCAL_TEST_DEPLOY; then +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1 +# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1 + sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1 + fi + fi +fi + +END=$(date +%s) +TOTAL=$(( $END - $START )) + +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo " Datasets imported" +printf 'Time to import the datasets: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60)) +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" diff --git a/bootstrap.sh b/bootstrap/prepareEnvironment.sh old mode 100644 new mode 100755 similarity index 70% rename from bootstrap.sh rename to bootstrap/prepareEnvironment.sh index 17ae255..951a9f2 --- a/bootstrap.sh +++ b/bootstrap/prepareEnvironment.sh @@ -10,94 +10,46 @@ # - pgRouting # - osmosis # - osm2pgrouting -# into a centos6 (32bit and 64bit) or centos7 (64bit only) environment +# into a centos6 (32bit and 64bit) or centos7 (64bit only) environment. # # It can be used in the context of a Vagrantfile to configure a vagrant box and all -# the installations can be configured using global variables (some packages are only -# installed if their installed flag is set to "true") -# -# Some data (from the road network of innsbruck) is also downloaded (from osm) and -# imported into the installed databases (neo4j and postgresql) -# After various installations the installed services are started as well +# the installations can be configured using the variables in the config.sh file. +# After various installations are performed the installed services are started as well. ############################ -if [ -f "/var/vagrant_provision" ]; then - exit 0 -fi - if [ "$EUID" -ne "0" ]; then - echo '- The bootstrap script must be run as root!' + echo '- This script must be run as root!' exit 1 fi -############################ -# Variable definitions # -############################ - -IMPORT_DATA_OSM=false -IMPORT_DATA_OSM_CACHED=false -IMPORT_DATA_SQL=true -IMPORT_SCHEDULES=true -INSTALL_GEOSERVER=false -INSTALL_HTTPD=true -INSTALL_ISOCHRONE_LOCAL=false # installs isochrone from vagrant start directory (eclipse project) -INSTALL_ISOCHRONE_RELEASE=true # installs latest isochrone release from nexus repository -INSTALL_ISOCHRONE_SNAPSHOT=true # installs latest isochrone snapshot from nexus repository -INSTALL_ISOCHRONE_TOOLS=true # installs latest isochrone tools from nexus repository -INSTALL_NEO4J=false -INSTALL_NEO4J_SPATIAL=false -INSTALL_PGROUTING=false -INSTALL_POSTGIS=true -INSTALL_POSTGRES=true -INSTALL_POSTGRES_ADMIN=true -INSTALL_PROJECT_PSIPROBE=true +if [ -f "/var/vagrant_provision" ]; then + echo '- The box has already been provisioned' + exit 0 +fi ############################ -# Ext. argument handling # +# Variable definitions # ############################ -IS_LOCAL_TEST_DEPLOY=false # will prevent install of projects if set to true -PG_DB_NAME="isochrone" -PG_DB_USER="@db_username@" -PG_DB_PASSWORD="@db_password@" - -if [ ${PG_DB_USER:0:1} == "@" ]; then - PG_DB_USER=$1 +SCRIPT="$(readlink -f ${BASH_SOURCE[0]})" +SCRIPT_DIR="$(dirname ${SCRIPT})" +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + # If config.properties is not besides the bash-script (most likely because vagrant uploaded it into the guest) + # we will try to find it in the shared folder + SCRIPT_DIR="/vagrant/bootstrap" fi -if [ ${PG_DB_USER:0:1} == "@" ]; then - echo '- No (or invalid) database user supplied!' - exit 1 +if [ ! -f "${SCRIPT_DIR}/config.sh" ]; then + echo '- No variable declarations found (config.properties file not found)!' + exit 1; fi +source "${SCRIPT_DIR}/config.sh" -if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then - PG_DB_PASSWORD=$2 -fi -if [ ${PG_DB_PASSWORD:0:1} == "@" ]; then - echo '- No (or invalid) database password supplied!' - exit 1 -fi +fn_arg2string PG_DB_PASSWORD "${1}" "${TOMCAT_PASSWORD}" +fn_arg2boolean IS_LOCAL_TEST_DEPLOY "${2}" "${IS_LOCAL_TEST_DEPLOY}" -if [ -n "$3" ]; then - if [ "$3" = "true" ]; then - IS_LOCAL_TEST_DEPLOY=true - fi -fi - -############################ -# General configuration # -############################ - -CACHE_DIR_LOCAL="/tmp/vagrant-cache" -CACHE_DIR_REMOTE="http://dbis-informatik.uibk.ac.at/static/ma/niko/isochrone" -DEPLOY_DIR="/opt" -DOWNLOAD_DIR="$CACHE_DIR_LOCAL/wget" -SHARED_CONF_DIR="/setup/conf" -SHARED_IMG_DIR="/setup/img" -WORKING_DIR="/var/log/vagrant_bootstrap" - -############################ -# Components configuration # -############################ +###################################### +# Configuration (tool versions, ...) # +###################################### #Armadillo from epel is too new for postgis (version 4 instead of 3), so use hard-coded file here ARMADILLO_FILE="armadillo-3.800.2-1.el6.x86_64.rpm" @@ -241,7 +193,6 @@ fi # Calculated configuration # ############################ -IMPORT_DATA=false INSTALL_JAVA=false INSTALL_MAVEN=false INSTALL_TOMCAT=false @@ -253,9 +204,6 @@ if $IS_LOCAL_TEST_DEPLOY; then INSTALL_ISOCHRONE_RELEASE=false INSTALL_ISOCHRONE_SNAPSHOT=false fi -if $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_SQL; then - IMPORT_DATA=true -fi if $INSTALL_GEOSERVER || $INSTALL_ISOCHRONE_LOCAL || $INSTALL_ISOCHRONE_RELEASE || $INSTALL_ISOCHRONE_SNAPSHOT || $INSTALL_PROJECT_PSIPROBE; then INSTALL_TOMCAT=true fi @@ -294,122 +242,10 @@ fi # Function definitions # ############################ -fn_download() -{ - local FILE="$1" - local URL="$2" - - if wget --no-check-certificate -q -O /dev/null "$URL"; then - wget --no-check-certificate -q -O "$FILE" "$URL" - fi -} - -# "wget -N" does not work with "-O" option... so we use a workaround here -fn_download_newer() -{ - local FILE="$1" - local URL="$2" - - if [ ! -f "$FILE" ]; then - if wget --no-check-certificate -q -O /dev/null "$URL"; then - wget --no-check-certificate -q -O "$FILE" "$URL" - fi - fi -} - -fn_import_data() -{ - local NAME="$1" - local OSM_FILE="$2" - local OSM_FILE_FILTERED="$3" - local BOUNDING="$4" - local SQL_EXPORT_FILE="$5" - local TABLE_PREFIX="$6" - - local VALID_OSM=false - local VALID_SQL=false - if $IMPORT_DATA_SQL && $INSTALL_POSTGIS && $IMPORT_SCHEDULES; then - if [ -n "$SQL_EXPORT_FILE" ]; then - VALID_SQL=true - fi - fi - if ( $INSTALL_PGROUTING || $INSTALL_NEO4J_SPATIAL ) && ( $IMPORT_DATA_OSM_CACHED || $IMPORT_DATA_OSM ); then - # osm data does not need to be downloaded (since it would not be imported afterwards) - VALID_OSM=true - fi - - echo "Importing data for region of $NAME" - if ! ( $VALID_SQL || $VALID_OSM ); then - echo " - skipping import" - return 1 - fi - - if $VALID_SQL; then - echo " - downloading sql export" - fn_download_newer $DOWNLOAD_DIR/$SQL_EXPORT_FILE $CACHE_DIR_REMOTE/$SQL_EXPORT_FILE - cp $DOWNLOAD_DIR/$SQL_EXPORT_FILE $DEPLOY_DIR/$SQL_EXPORT_FILE >> /dev/null 2>&1 - - echo " - importing sql export into postgis database" - gunzip -c $DEPLOY_DIR/$SQL_EXPORT_FILE | PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost "$PG_DB_NAME" >> "$WORKING_DIR/import_schedule_$NAME.log" 2>&1 - - echo " - getting table permissions" - tables=`PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';" "$PG_DB_NAME"` - - echo " - fixing table permissions" - for tbl in $tables ; do - PGPASSWORD="$PG_DB_PASSWORD" psql -qAt -U "$PG_DB_USER" -h localhost -c "ALTER TABLE $tbl OWNER TO $PG_DB_USER" "$PG_DB_NAME"; - done - fi - - if ! $VALID_OSM; then - return 0 - fi - - if $IMPORT_DATA_OSM_CACHED; then - echo " - downloading cached OpenStreetMap file" - fn_download_newer $DOWNLOAD_DIR/$OSM_FILE_FILTERED $CACHE_DIR_REMOTE/$OSM_FILE_FILTERED - cp $DOWNLOAD_DIR/$OSM_FILE_FILTERED $DEPLOY_DIR/$OSM_FILE_FILTERED >> /dev/null 2>&1 - fi - - if [ ! -f $DEPLOY_DIR/$OSM_FILE_FILTERED ]; then - if $IMPORT_DATA_OSM; then - echo " - downloading OpenStreetMap file (no cached file found)" - OSM_FILENAME=$DOWNLOAD_DIR/${OSM_FILE##*/} - fn_download_newer $OSM_FILENAME $OSM_DOWNLOAD_MIRROR/$OSM_FILE - - echo " - filtering OpenStreetMap data" - if [[ "$BOUNDING" == *.poly ]]; then - $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-polygon file="$BOUNDING" --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 - else - $DEPLOY_DIR/osmosis/bin/osmosis --read-pbf file="$OSM_FILENAME" --bounding-box $BOUNDING --way-key keyList="$OSM_KEYS" --used-node --write-xml file="$DEPLOY_DIR/$OSM_FILE_FILTERED" >> "initialize_osmData_$NAME.log" 2>&1 - fi - else - echo " - problems with downloading cached osm file... this will most likely lead cause errors" - fi - fi - - if $INSTALL_PGROUTING; then - echo " - importing filtered OpenStreetMap data into pgRouting" - $DEPLOY_DIR/osm2pgrouting/build/osm2pgrouting -file "$DEPLOY_DIR/$OSM_FILE_FILTERED" -conf "$OSM2PGROUTING_MAPPING_CONF" -dbname $PG_DB_NAME -user $PG_DB_USER -passwd $PG_DB_PASSWORD -clean -prefixtables $TABLE_PREFIX >> "import_osm2pgrouting_$NAME.log" 2>&1 - - echo " - creating pgRouting topology" - PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "SELECT pgr_createTopology('${TABLE_PREFIX}ways', $TOPOLOGY_TOLERANCE, 'the_geom', 'gid');" >> "$WORKING_DIR/setup_database_$NAME.log" 2>&1 - fi - - if $INSTALL_NEO4J_SPATIAL; then - echo " - importing filtered OpenStreetMap data into neo4j-spatial" - cd $DEPLOY_DIR/neo4j-spatial - mvn exec:java -Dexec.mainClass=org.neo4j.gis.spatial.osm.OSMImporter -Dexec.args="$DEPLOY_DIR/neo4j/data/graph.db $DEPLOY_DIR/$OSM_FILE_FILTERED" >> $WORKING_DIR/import_osm2neo4j.log 2>&1 - cd $WORKING_DIR - fi - - return 0 -} - -fn_service_start() -{ +fn_service_start() { local SERVICE_NAME="$1" + echo "Starting service \"${SERVICE_NAME}\"" touch "service_start_$SERVICE_NAME.log" 2>&1 if [ "$DISTRI_TYPE" == "CentOS 6" ]; then service $SERVICE_NAME start >> "service_start_$SERVICE_NAME.log" 2>&1 @@ -422,8 +258,7 @@ fn_service_start() sleep 2 } -fn_service_stop() -{ +fn_service_stop() { local SERVICE_NAME="$1" touch "service_stop_$SERVICE_NAME.log" 2>&1 @@ -438,13 +273,12 @@ fn_service_stop() sleep 2 } -START=$(date +%s) - -echo "" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Performing basic system preparations:" +echo " Performing basic system preparations ($(date +%H:%M:%S)):" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +START=$(date +%s) + ############################ # Basic preparations # ############################ @@ -524,7 +358,7 @@ sed -i 's/enabled = 1/enabled = 0/' $REPO_RPMFORGE_CONFIG ############################ echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Bootstrapping the VM:" +echo " Bootstrapping the VM ($(date +%H:%M:%S)):" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "Operating system $DISTRI_NAME" echo " - osType: $DISTRI_TYPE" @@ -562,7 +396,7 @@ if $INSTALL_ISOCHRONE_SNAPSHOT; then echo "Importing project \"isochrone (testin if $INSTALL_ISOCHTONE_TOOLS; then echo "Importing project \"isochrone-tools\""; fi if $INSTALL_PROJECT_PSIPROBE; then echo "Importing project \"psi-probe\""; fi echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Performing installations:" +echo " Performing installations ($(date +%H:%M:%S)):" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "Installing cmake" @@ -839,8 +673,8 @@ if ( $IMPORT_DATA_OSM || $IMPORT_DATA_OSM_CACHED ) && $INSTALL_PGROUTING; then fi echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Installations performed!" -echo " Preparing services:" +echo " Installations performed" +echo " Preparing services ($(date +%H:%M:%S)):" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" if $INSTALL_POSTGRES; then @@ -853,7 +687,7 @@ if $INSTALL_POSTGRES; then fi sleep 2 - echo "Configuring postgresql-server" + echo "Configuring postgresql-server (permissions, logging, ...)" mkdir -p /var/log/postgresql chown postgres:postgres -R /var/log/postgresql @@ -886,7 +720,7 @@ if $INSTALL_TOMCAT; then chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/$TOMCAT_NAME >> install_tomcat.log 2>&1 cp $SHARED_CONF_DIR/tomcat-users.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml - sed -i "s/password=\"admin\"/password=\"$PG_DB_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml + sed -i "s/password=\"admin\"/password=\"$TOMCAT_PASSWORD\"/" $DEPLOY_DIR/$TOMCAT_NAME/conf/tomcat-users.xml echo "Configuring tomcat default web.xml (enabling CORS filer)" cp -f $SHARED_CONF_DIR/tomcat_web.xml $DEPLOY_DIR/$TOMCAT_NAME/conf/web.xml @@ -915,8 +749,8 @@ if $INSTALL_POSTGIS && $INSTALL_GEOSERVER; then fi echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Services prepared!" -echo " Starting services:" +echo " Services prepared" +echo " Starting services ($(date +%H:%M:%S)):" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" if $INSTALL_HTTPD; then @@ -932,91 +766,8 @@ if $INSTALL_TOMCAT; then fn_service_start "$TOMCAT_NAME" fi -if $INSTALL_POSTGRES; then - echo "Creating postgresql database $PG_DB_NAME" - sudo -u "postgres" psql -d template1 -c "CREATE DATABASE \"$PG_DB_NAME\";" >> $WORKING_DIR/setup_database.log 2>&1 - sudo -u "postgres" psql -d "$PG_DB_NAME" -c "CREATE USER \"$PG_DB_USER\" WITH PASSWORD '$PG_DB_PASSWORD';" >> $WORKING_DIR/setup_database.log 2>&1 - sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER DATABASE \"$PG_DB_NAME\" OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 - sudo -u "postgres" psql -d "$PG_DB_NAME" -c "GRANT ALL PRIVILEGES ON DATABASE \"$PG_DB_NAME\" TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 - sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER SCHEMA public OWNER TO \"$PG_DB_USER\";" >> $WORKING_DIR/setup_database.log 2>&1 - sudo -u "postgres" psql -d "$PG_DB_NAME" -c "ALTER ROLE \"$PG_DB_USER\" SUPERUSER;" >> $WORKING_DIR/setup_database.log 2>&1 -fi - -if $INSTALL_POSTGIS; then - PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION postgis;" >> $WORKING_DIR/setup_database.log 2>&1 - PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/pg_procedures.sql >> $WORKING_DIR/setup_database.log 2>&1 - PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -f $SHARED_CONF_DIR/srid_82344_insert.sql >> $WORKING_DIR/setup_database.log 2>&1 -fi - -if $INSTALL_PGROUTING; then - PGPASSWORD="$PG_DB_PASSWORD" psql -U "$PG_DB_USER" -h localhost -d "$PG_DB_NAME" -c "CREATE EXTENSION pgRouting;" >> $WORKING_DIR/setup_database.log 2>&1 -fi - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " Services started!" -if $IMPORT_DATA; then - echo " Importing data:" - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - - # Import real world datasets - fn_import_data "Bozen" "$OSM_FILE_ITALY" "$OSM_FILE_BZ_FILTERED" "$OSM_BBOX_BZ" "bz_export.sql.gz" "$TABLE_PREFIX_BZ" - fn_import_data "Innsbruck" "$OSM_FILE_AUSTRIA" "$OSM_FILE_IBK_FILTERED" "$OSM_BBOX_IBK" "" "$TABLE_PREFIX_IBK" - fn_import_data "San Francisco" "$OSM_FILE_CALIFORNIA" "$OSM_FILE_SF_FILTERED" "$OSM_BBOX_SF" "sf_export.sql.gz" $TABLE_PREFIX_SF -# if ! $IS_LOCAL_TEST_DEPLOY; then -# fn_import_data "Italy" "$OSM_FILE_ITALY" "$OSM_FILE_IT_FILTERED" "$OSM_BBOX_IT" "it_export.sql.gz" $TABLE_PREFIX_IT -# fn_import_data "Alto Adige" "$OSM_FILE_ITALY" "$OSM_FILE_ST_FILTERED" "$OSM_BBOX_ST" "st_export.sql.gz" $TABLE_PREFIX_ST -# fi - - # Generate synthetic data - if $INSTALL_POSTGIS && $INSTALL_ISOCHRONE_TOOLS; then - java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.GridNetworkGenerator -d 100 -l 60 > "$WORKING_DIR/generate_gridNetwork.log" 2>&1 - java -cp $DOWNLOAD_DIR/isochrone-tools.jar at.uibk.dbis.isochrone.generator.SpiderNetworkGenerator -d 6 -lvl 1000 -l 60 > "$WORKING_DIR/generate_spiderNetwork.log" 2>&1 - fi - - if $INSTALL_GEOSERVER; then - if $INSTALL_NEO4J_SPATIAL; then - echo "Configuring neo4j data permissions for geoserver" - chown -R $TOMCAT_USER:$TOMCAT_USER $DEPLOY_DIR/neo4j/data/graph.db - fi - - echo "Configuring geoserver $GEOSERVER_VERSION using geoserver-shell $GEOSERVER_SHELL_VERSION" - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_ws.gs >> setup_geoserver_workspace.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_styles.gs >> setup_geoserver_styles.log 2>&1 - cp $SHARED_IMG_DIR/* $DEPLOY_DIR/geoserver/data/styles >> setup_geoserver_styles.log 2>&1 - - if $INSTALL_NEO4J_SPATIAL; then - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ds.gs >> setup_geoserver_neo4j.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_bz.gs >> setup_geoserver_neo4j.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_ibk.gs >> setup_geoserver_neo4j.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_sf.gs >> setup_geoserver_neo4j.log 2>&1 - if ! $IS_LOCAL_TEST_DEPLOY; then -# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_it.gs >> setup_geoserver_neo4j.log 2>&1 -# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft_st.gs >> setup_geoserver_neo4j.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_neo4j_ft.gs >> setup_geoserver_neo4j.log 2>&1 - fi - fi - if $INSTALL_POSTGIS; then - # copy geoserver_setup_postgis_ds and replace username/password - cp $SHARED_CONF_DIR/geoserver_setup_postgis_ds.gs $WORKING_DIR/geoserver_setup_postgis_ds.gs - sed -i "s/@db_username@/$PG_DB_USER/" $WORKING_DIR/geoserver_setup_postgis_ds.gs - sed -i "s/@db_password@/$PG_DB_PASSWORD/" $WORKING_DIR/geoserver_setup_postgis_ds.gs - - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $WORKING_DIR/geoserver_setup_postgis_ds.gs >> setup_geoserver_postgis.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_bz.gs >> setup_geoserver_postgis.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_ibk.gs >> setup_geoserver_postgis.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_sf.gs >> setup_geoserver_postgis.log 2>&1 - if ! $IS_LOCAL_TEST_DEPLOY; then -# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_it.gs >> setup_geoserver_postgis.log 2>&1 -# sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft_st.gs >> setup_geoserver_postgis.log 2>&1 - sh $DEPLOY_DIR/gs-shell/bin/gs-shell --cmdfile $SHARED_CONF_DIR/geoserver_setup_postgis_ft.gs >> setup_geoserver_postgis.log 2>&1 - fi - fi - fi - - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "Data imported!" - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -fi +echo " Services started" # Prevent second provision (done by check at the beginning of this file) touch /var/vagrant_provision @@ -1024,7 +775,5 @@ touch /var/vagrant_provision END=$(date +%s) TOTAL=$(( $END - $START )) -echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -echo " All preparations done... the system can now be used" -echo " Provisioning time: $TOTAL seconds" +printf 'Time to prepare the environment: %dh:%dm:%ds\n' $(($TOTAL/3600)) $(($TOTAL%3600/60)) $(($TOTAL%60)) echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" -- GitLab