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 argument below
# This config file will still be loaded to provide defaults
exportProperties ${SCRIPT_DIR}/config/config
exportProperties ${SCRIPT_DIR}/setup/versions
# checking if Install variables are set, if not default will be set to false
checkInstallDefaults
## 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
-s | --singlenode This will install and init an basic OX instance (db, mw, fe)
--build-docker This will install everything inside docker (you have to provide the components to install)
Configuration options:
--init This will start configuration scripts after component installation
Examples:
Singlenode setup with everything you need:
$ ./ox-installer.sh --singlenode --dovecot
"
}
### 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
;;
# -t|--type)
# INSTALL_TYPE="$2"
# shift
# 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
export INSTALL_TYPE=singlenode
export INIT=true
shift
;;
--docker)
export INSTALL_TYPE=docker
# --build-docker)
# export INSTALL_TYPE=build_docker
# export INIT=false
# shift
# ;;
--config)
exportProperties "$2"
shift
shift
;;
# --repo-guard)
# OX_REPO_GUARD="$2"
# echo "WARNING: Using $OX_REPO_GUARD as guard repository source"
# 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
echo ""
echo "Setup checks done... Setup will install an OX with following modules:"
echo "=== (CTRL+C to cancel) ==="
printenv | grep INSTALL_
echo "The following versions will be used:"
printenv | grep AS_
echo "=== (CTRL+C to cancel) ==="
sleep 5
echo "No install type specified. We will see what happens ..."
fi
checkRootPrivileges
detectDistribution
preInstallActions
writeRepositories
addOxBuildKey
if [ "$INSTALL_DATABASE" = true ] ; then
setup/install-database.sh
fi
if [ "$INSTALL_MIDDLEWARE" = true ] ; then
# Install OX middleware (optionally with guard and documents enabled)
if [ "$INSTALL_DOCUMENTCONVERTER" = true ] ; then
setup/install-documentconverter.sh
# Install OX App Suite frontend (optionally with guard and documents)
benedikt.kroening
committed
fi
if [ "$INSTALL_GUARD" = true ] ; then
if [[ "${INSTALL_TYPE}" == "singlenode" ]]; then
# ensure that all components will be "force" installed if on singlenode
features/guard.sh --install --middlware --backend --frontend
else
# let the environment variables do the selection magic
features/guard.sh --install
fi
fi
if [ "$INSTALL_DOVECOT" = true ] ; then
setup/install-dovecot.sh -s
fi
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 [ "$INSTALL_GUARD" = true ] ; then
features/guard.sh --enable --restart
fi
fi
FINISHED_AT=$(date)
echo "====================================================================================="
echo "Started at: $STARTED_AT"
echo "Finished at: $FINISHED_AT"
popd