old_console/deb_old/skeleton/DEBIAN/preinst
2024-11-02 14:12:45 +03:00

68 lines
2 KiB
Bash

#!/bin/bash
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# 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