#!/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 Installation types (not combineable): -s | --singlenode This will install all of the above (except dovecot) --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) INSTALL_MIDDLEWARE=true shift ;; --frontend) INSTALL_FRONTEND=true shift ;; --database) INSTALL_DATABASE=true shift ;; --guard) INSTALL_GUARD=true shift ;; --documents) INSTALL_DOCUMENTS=true shift ;; -d|--dovecot) INSTALL_DOVECOT=true shift ;; -s|--singlenode) INSTALL_DATABASE=true INSTALL_MIDDLEWARE=true INSTALL_FRONTEND=true #INSTALL_GUARD=true export INSTALL_TYPE=singlenode export INIT=true shift ;; --docker) export INSTALL_TYPE=docker shift ;; --build-docker) INSTALL_TYPE=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 if [ -z ${INSTALL_TYPE} ]; then # 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 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 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