Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/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
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 all of the above (except dovecot)
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
--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
Docker middleware container:
$ ./ox-installer.sh --docker --middleware
"
}
### 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)
-s|--singlenode)
export INSTALL_DATABASE=true
export INSTALL_MIDDLEWARE=true
export INSTALL_FRONTEND=true
export INSTALL_GUARD=false
export INSTALL_DOCUMENTS=false
export INSTALL_DOCUMENTCONVERTER=false
export INSTALL_TYPE=singlenode
export INIT=true
shift
;;
--docker)
export INSTALL_TYPE=docker
shift
;;
--build-docker)
shift
;;
--init)
export INIT=true
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
# show_usage
# echo ""
# echo "Please provide the install type with --singlenode or --build-docker (see above)"
# exit 99
echo "No install type specified. We will see what happens ..."
elif [[ "${INSTALL_TYPE}" == "build_docker" ]]; then
echo ""
docker build --no-cache --rm -f docker/groupware.dockerfile -t middleware:latest .
exit 0
fi
checkRootPrivileges
detectDistribution
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_
preInstallActions
writeRepositories
addOxBuildKey
if [ "$INSTALL_DATABASE" = true ] ; then
setup/install-database.sh
if [ "$INIT" = true ] ; then
config/init-database.sh
fi
fi
if [ "$INSTALL_FRONTEND" = true ] ; then
setup/install-frontend.sh
if [ "$INIT" = true ] ; then
config/init-frontend.sh
fi
fi
if [ "$INSTALL_MIDDLEWARE" = true ] ; then
setup/install-middleware.sh
fi
if [ "$INSTALL_GUARD" = true ] ; then
setup/install-guard.sh
fi
if [ "$INSTALL_DOCUMENTS" = true ] ; then
setup/install-documents.sh
if [ "$INIT" = true ] ; then
config/init-documents.sh
fi
benedikt.kroening
committed
if [ "$INSTALL_DOCUMENTCONVERTER" = true ] ; then
setup/install-documentconverter.sh
# if [ "$INIT" = true ] ; then
# config/init-documents.sh
# fi
fi
if [ "$INSTALL_DOVECOT" = true ] ; then
setup/install-dovecot.sh -s
fi
#if [ "$INSTALL_MIDDLEWARE" = true ] && [ "${INIT}" = true ]; then
if [ "${INIT}" = true ]; then
if [ "$INSTALL_DOVECOT" = true ] ; then
echo "Configuring middleware against local dovecot"
config/init-middleware.sh \
--mail-host localhost \
--mail-domain "$(hostname)"
else
echo "Configuring middleware against dovecot.qa.open-xchange.com"
config/init-middleware.sh \
--mail-host dovecot.qa.open-xchange.com \
--mail-domain qa.open-xchange.com
fi
fi
FINISHED_AT=$(date)
echo "====================================================================================="
echo "Started at: $STARTED_AT"
echo "Finished at: $FINISHED_AT"
popd