upgrade-mattermost.sh: add support for PostgreSQL database.

This commit is contained in:
Christoph 2024-09-23 23:06:52 +02:00
parent 2bdeadaa17
commit 66d3210184

View File

@ -218,6 +218,8 @@ DEFAULT_FQHN_HOSTNAME="$(hostname -f)"
DEFAULT_MATTERMOST_USER="mattermost" DEFAULT_MATTERMOST_USER="mattermost"
DEFAULT_MATTERMOST_GROUP="mattermost" DEFAULT_MATTERMOST_GROUP="mattermost"
DEFAULT_DB_TYPE="pgsql"
DEFAULT_MATTERMOST_BASE_INSTALL_PATH="/opt" DEFAULT_MATTERMOST_BASE_INSTALL_PATH="/opt"
DEFAULT_MATTERMOST_TMP_DIR="/tmp" DEFAULT_MATTERMOST_TMP_DIR="/tmp"
@ -231,6 +233,9 @@ fi
[[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME" [[ -n "$FQHN_HOSTNAME" ]] && DEFAULT_FQHN_HOSTNAME="$FQHN_HOSTNAME"
if [[ -z "$DB_TYPE" ]] ; then
fatal "Missing database type (DB_TYPE)!"
fi
if [[ -z "$DB_NAME" ]] ; then if [[ -z "$DB_NAME" ]] ; then
fatal "Missing database name (DB_NAME)!" fatal "Missing database name (DB_NAME)!"
fi fi
@ -404,39 +409,41 @@ do
done done
if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then if [[ "$DB_TYPE" = "mysql" ]] ; then
if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then if [[ -n "$MYSQL_CREDENTIAL_ARGS" ]] ; then
fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!" if ! $(mysql $MYSQL_CREDENTIAL_ARGS -N -s -e 'quit' > /dev/null 2>&1) ; then
fi fatal "Parameter MYSQL_CREDENTIAL_ARGS is given, but a connection to MySQL Service failed.!"
USE_MYSQL_CREDENTIAL_ARGS=true
else
USE_MYSQL_CREDENTIAL_ARGS=false
_MYSQL_ROOT_PW=""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert root password of MySQL Database Service"
echo ""
while [ "X${_MYSQL_ROOT_PW}" = "X" ]; do
echononl "Passworteingabe: "
read -s _MYSQL_ROOT_PW
if [ "X${_MYSQL_ROOT_PW}" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi fi
if $(pgrep mysqld_safe > /dev/null 2>&1) || $(pgrep mysqld > /dev/null 2>&1); then USE_MYSQL_CREDENTIAL_ARGS=true
if $(mysql --user="root" --password="$_MYSQL_ROOT_PW" -N -s -e 'quit' > /dev/null 2>&1) ; then else
MYSQL_ROOT_PW=$_MYSQL_ROOT_PW USE_MYSQL_CREDENTIAL_ARGS=false
else
echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n" _MYSQL_ROOT_PW=""
_MYSQL_ROOT_PW="" echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert root password of MySQL Database Service"
echo ""
while [ "X${_MYSQL_ROOT_PW}" = "X" ]; do
echononl "Passworteingabe: "
read -s _MYSQL_ROOT_PW
if [ "X${_MYSQL_ROOT_PW}" = "X" ]; then
echo -e "\n\t\033[33m\033[1mPassworteingabe erforderlich!\033[m\n"
continue
fi fi
else if $(pgrep mysqld_safe > /dev/null 2>&1) || $(pgrep mysqld > /dev/null 2>&1); then
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again." if $(mysql --user="root" --password="$_MYSQL_ROOT_PW" -N -s -e 'quit' > /dev/null 2>&1) ; then
fi MYSQL_ROOT_PW=$_MYSQL_ROOT_PW
done else
echo -e "\n\t\033[33m\033[1mFalsches Passwort\033[m\n"
_MYSQL_ROOT_PW=""
fi
else
fatal "MySQL seems not be running. Start MySQL Service and try installing mattermost again."
fi
done
fi
fi fi
@ -460,10 +467,18 @@ echo -e " Mattermost user...................: $MATTERMOST_USER"
echo -e " Mattermost group..................: $MATTERMOST_GROUP" echo -e " Mattermost group..................: $MATTERMOST_GROUP"
echo "" echo ""
echo "" echo ""
if $USE_MYSQL_CREDENTIAL_ARGS ; then if [[ "${DB_TYPE}" = "pgsql" ]] ; then
echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS" echo -e " Database Type.....................: PostgreSQL"
else else
echo -e " Root password MySQL...............: **" echo -e " Database Type.....................: MySQL"
fi
echo ""
if [[ "${DB_TYPE}" = "mysql" ]]; then
if $USE_MYSQL_CREDENTIAL_ARGS ; then
echo -e " MYSQL_CREDENTIAL_ARGS.............: $MYSQL_CREDENTIAL_ARGS"
else
echo -e " Root password MySQL...............: **"
fi
fi fi
echo "" echo ""
echo -e " Database Name.....................: $DB_NAME" echo -e " Database Name.....................: $DB_NAME"
@ -586,22 +601,41 @@ else
fi fi
echononl "Backup mattermost database.." echononl "Backup mattermost database.."
mysqldump --login-path=local --opt $DB_NAME \ if [[ "${DB_TYPE}" = "mysql" ]]; then
> ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file mysqldump --login-path=local --opt $DB_NAME \
if [[ $? -ne 0 ]]; then > ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file
echo_failed if [[ $? -ne 0 ]]; then
error "$(cat "$log_file")" echo_failed
error "$(cat "$log_file")"
echononl "continue anyway [yes/no]: " echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK read OK
done OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
[[ $OK = "yes" ]] || fatal "Stopped by user" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Stopped by user"
else
echo_ok
fi
else else
echo_ok pg_dump -U ${DB_USER} -F p -c ${DB_NAME} -f ${MATTERMOST_BASE_INSTALL_PATH}/${DB_NAME}-${backup_date}.sql 2> $log_file
if [[ $? -ne 0 ]]; then
echo_failed
error "$(cat "$log_file")"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Stopped by user"
else
echo_ok
fi
fi fi
echononl "Backup mattermost installation directory.." echononl "Backup mattermost installation directory.."