#!/bin/bash # summary of how this script can be called: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' # for details, see https://www.debian.org/doc/debian-policy/ or # the debian-policy package set -e # fail on any error PROJECT=armaconsole # USERS CONFIG PROJECT_USER="${PROJECT}" PROJECT_GROUP="www-data" SUDOERS_FILE_PATH="/etc/sudoers.d/${PROJECT}" # SYSTEMCTL CONFIG SYSCTL_AMC_SERVICES="amcgunicorn amccelery amccelerybeat amccorrelator amclicense amcchecker amcvector" # AMC DIRS AMC_HOME="/usr/local/${PROJECT}" # ======[ Trap Errors ]======# set -E # let shell functions inherit ERR trap trap err_handler 1 2 3 15 ERR # Trap non-normal exit signals: 1/HUP, 2/INT, 3/QUIT, 15/TERM, ERR # shellcheck disable=SC2128 function err_handler() { local exit_status=${1:-$?} logger -s -p "syslog.err" -t "${PROJECT}.deb" \ "${PROJECT}.deb script '$0' error code $exit_status (line $BASH_LINENO: '$BASH_COMMAND')" exit "$exit_status" } DEBUG_INSTALL="${DEBUG_INSTALL:-0}" [ "$DEBUG_INSTALL" == "1" ] && set -x [ "$DEBUG_INSTALL" == "1" ] && echo "Calling preinst $*" set -u # treat unset variables as errors case "$1" in upgrade) # shellcheck disable=SC2086 systemctl stop $SYSCTL_AMC_SERVICES || true # shellcheck disable=SC2086 systemctl disable $SYSCTL_AMC_SERVICES || true ;; install) # User id -g ${PROJECT_GROUP} &>/dev/null || groupadd ${PROJECT_GROUP} id -u ${PROJECT_USER} &>/dev/null || adduser --system --home "${AMC_HOME}" --no-create-home \ --shell /bin/bash --ingroup "${PROJECT_GROUP}" --gecos "ARMA management console user" \ "${PROJECT_USER}" &>/dev/null echo "${PROJECT_USER} ALL=(ALL) NOPASSWD:ALL" >"${SUDOERS_FILE_PATH}" # Hosts echo "127.0.0.1 license-client elasticsearch vector armaconsole" >> /etc/hosts ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac exit 0