Newer
Older
#!/bin/bash
#
# Copyright (C) 2019 OX Software GmbH
#
# This file is part of OX Automation.
#
# OX Automation is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OX Automation is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OX Automation. If not, see <http://www.gnu.org/licenses/>.
#
#
# Authors:
# Benedikt Kroening <benedikt.kroening@open-xchange.com>
#
set -e
SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P)"
pushd ${SCRIPT_DIR}
STARTED_AT=$(date)
# sourcing some commonly used functions and executing basic checks
source ${SCRIPT_DIR}/lib/common.bash
source ${SCRIPT_DIR}/lib/setup.bash
# sourcing the default configuration to use
# This may be overriden by some arguments below
# This config file will still be loaded to provide defaults
if [[ -z "$CONFIG_DIR" ]] ; then
echo "CONFIG_DIR variable is empty, fallback to ${SCRIPT_DIR}/config/config"
export CONFIG_DIR="${SCRIPT_DIR}/config/config"
else
echo "CONFIG_DIR variable set, using $CONFIG_DIR"
fi
exportProperties ${CONFIG_DIR}
## Help text
show_usage() {
echo -n "
This scripts lets you install a fully fledged Open-Xchange App Suite
environment with configured database and dovecot backends.
Easiest way to get a working OX App Suite this:
$ ./ox-installer.sh --singlenode
Per component options (can be combined):
--middleware Installs middleware components
--frontend Installs frontnend with apache2 balancer
--guard not yet supported
--documents not yet supported
--database Installs mysql or mariadb server
-d | --dovecot Installs local only dovecot test server
--init This will start configuration scripts after component installation (enabled by default in config)
Examples:
Singlenode setup with everything you need:
"
}
### reading config from command line; overriding defaults
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
show_usage
exit 0
shift
;;
--debug)
echo "WARNING: Debug flag set (--debug)"
set -x
shift
;;
--middleware)
benedikt.kroening
committed
--documentconverter)
export INSTALL_DOCUMENTCONVERTER=true
shift
;;
-d|--dovecot)
export OX_MAIL_HOST=localhost
export OX_MAIL_DOMAIN=$(hostname)
echo "WARNING: overriding OX_MAIL_HOST and OX_MAIL_DOMAIN with local only dovecot configuration!"
sleep 3
-s|--singlenode)
export INSTALL_DATABASE=true
export INSTALL_MIDDLEWARE=true
export INSTALL_FRONTEND=true
--codecept)
export EXECUTE_CODECEPT=true
shift
;;
--config)
export CONFIG_DIR="$2"
exportProperties ${CONFIG_DIR}
shift
shift
;;
*) # unknown option
echo "Unknonwn option: $1"
POSITIONAL+=("$1") # save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
# checking if Install variables are set, if not default will be set to false
checkInstallDefaults
echo "Setup checks done... Following environment is prepared:"
echo "The following components will be installed:"
printenv | grep "^INSTALL_"
preInstallActions
addOxBuildKey
if [ "$INSTALL_JAVA" = true ] ; then
setup/install-java.sh
fi
if [ "$INSTALL_DATABASE" = true ] ; then
setup/install-database.sh
fi
# Install OX middleware (optionally with documents enabled)
benedikt.kroening
committed
fi
if [ "$INSTALL_DOCUMENTS" = true ] ; then
if [[ "${INSTALL_TYPE}" == *"singlenode"* ]]; then
# ensure that all components will be "force" installed if on any singlenode
echo "Installing documents for singlenode environment ..."
benedikt.kroening
committed
features/documents.sh --install --middleware --frontend --documents-collaboration
else
# let the environment variables do the selection magic
echo "Installing documents ..."
benedikt.kroening
committed
features/documents.sh --install --middleware --documents-collaboration
if [ "$INSTALL_DOCUMENTCONVERTER" = true ] ; then
if [[ "${INSTALL_TYPE}" == *"singlenode"* ]]; then
# ensure that all components will be "force" installed if on any singlenode
echo "Installing documents for singlenode environment ..."
features/documentconverter.sh --install --server --client
else
# let the environment variables do the selection magic
echo "Installing documents ..."
features/documentconverter.sh --install --server
fi
fi
if [ "$INSTALL_GUARD" = true ] ; then
if [[ "${INSTALL_TYPE}" == *"singlenode"* ]]; then
# ensure that all components will be "force" installed if on any singlenode
echo "Installing guard for singlenode environment ..."
features/guard.sh --install --middleware --backend --frontend
else
# let the environment variables do the selection magic
# You may need to set GUARD_MIDDLEWARE, GUARD_BACKEND, GUARD_FRONTEND
features/guard.sh --install
fi
fi
if [ "$INSTALL_DOVECOT" = true ] ; then
if [[ "${INSTALL_TYPE}" == *"singlenode"* ]]; then
# ensure that all components will be "force" installed if on any singlenode
echo "Installing documents for singlenode environment ..."
features/dovecot.sh --install --enable
else
# let the environment variables do the selection magic
echo "Docker/Dovecot install is currently not supported by ox-installer...."
exit 1
fi
fi
if [ "${OX_INIT}" = true ]; then
echo "Init flag set to true... starting environment init ..."
sleep 5
if [ "$INSTALL_DATABASE" = true ] ; then
config/init-database.sh
fi
if [ "$INSTALL_FRONTEND" = true ] ; then
config/init-frontend.sh
fi
if [ "$INSTALL_MIDDLEWARE" = true ] ; then
config/init-middleware.sh
fi
if [ "${EXECUTE_CODECEPT}" = true ] ; then
echo "Init Codecept...."
features/codecept.sh --enable
fi
FINISHED_AT=$(date)
echo "====================================================================================="
echo "Started at: $STARTED_AT"
echo "Finished at: $FINISHED_AT"
popd