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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/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
#export INSTALL_TYPE=singlenode
export INSTALL_FRONTEND=false
export INSTALL_MIDDLEWARE=false
export INSTALL_GUARD=false
export INSTALL_DOCUMENTS=false
export INSTALL_DATABASE=false
# export REMOTE_HOST=
# export REMOTE_SSH_KEY=
## 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)
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
101
102
103
104
105
106
--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)
-d|--dovecot)
-s|--singlenode)
export INSTALL_DATABASE=true
export INSTALL_MIDDLEWARE=true
export INSTALL_FRONTEND=true
export INSTALL_GUARD=true
export INSTALL_DOCUMENTS=true
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 ..."
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
elif [[ "${INSTALL_TYPE}" == "build_docker" ]]; then
echo ""
docker build --no-cache --rm -f docker/groupware.dockerfile -t middleware:latest .
exit 0
fi
echo "Preparing this environment for setup ..."
checkRootPrivileges
detectDistribution
preInstallActions
writeRepositories
addOxBuildKey
echo "... environment should be ready."
echo "Starting OX installation with the following configuration:"
echo ""
set | grep INSTALL_
echo "=== (CTRL+C to cancel) ==="
sleep 5
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
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