lamassu-server/bin/lamassu-update
Fabio Cigliano 147db125dd reworking l-s startup (#175)
* reworking l-s startup

it was failing to retry when starting with an invalid configuration

* changed startup routine

* start supervisor after update
2018-09-27 13:49:11 +03:00

77 lines
2.6 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
export LOG_FILE=/tmp/update.$(date +"%Y%m%d").log
export NPM_BIN=$(npm -g bin)
rm -f ${LOG_FILE}
decho () {
echo `date +"%H:%M:%S"` $1
echo `date +"%H:%M:%S"` $1 >> ${LOG_FILE}
}
cat <<'FIG'
_
| | __ _ _ __ ___ __ _ ___ ___ _ _ ___ ___ _ ____ _____ _ __
| |/ _` | '_ ` _ \ / _` / __/ __| | | |_____/ __|/ _ \ '__\ \ / / _ \ '__|
| | (_| | | | | | | (_| \__ \__ \ |_| |_____\__ \ __/ | \ V / __/ |
|_|\__,_|_| |_| |_|\__,_|___/___/\__,_| |___/\___|_| \_/ \___|_|
FIG
echo -e "\nStarting \033[1mlamassu-server\033[0m update. This will take a few minutes...\n"
if [ "$(whoami)" != "root" ]; then
echo -e "This script has to be run as \033[1mroot\033[0m user"
exit 3
fi
decho "stopping lamassu-server"
supervisorctl stop lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl stop lamassu-admin-server >> ${LOG_FILE} 2>&1
decho "unlinking ${NPM_BIN}/lamassu* old executables"
find ${NPM_BIN} -type l \( -name "lamassu-*" -or -name "hkdf" \) -exec rm -fv {} \; >> ${LOG_FILE} 2>&1
if [ -d "/usr/lib/node_modules/lamassu-server" ]; then
decho "renaming old lamassu-server instance to lamassu-server-old"
mv -v "/usr/lib/node_modules/lamassu-server" "/usr/lib/node_modules/lamassu-server-old" >> ${LOG_FILE} 2>&1
fi
decho "updating node"
npm install n -g >> ${LOG_FILE} 2>&1
n lts >> ${LOG_FILE} 2>&1
decho "version installed $(node -v)"
export NPM_BIN=$(npm -g bin)
decho "updating lamassu-server"
npm -g install lamassu/lamassu-server#stable --unsafe-perm >> ${LOG_FILE} 2>&1
decho "rebuilding npm deps"
cd $(npm root -g)/lamassu-server/ >> ${LOG_FILE} 2>&1
npm rebuild >> ${LOG_FILE} 2>&1
decho "running migration"
lamassu-migrate >> ${LOG_FILE} 2>&1
lamassu-migrate-config >> ${LOG_FILE} 2>&1
decho "updating supervisor conf"
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-server/g' /etc/supervisor/conf.d/lamassu-server.conf >> ${LOG_FILE} 2>&1
perl -i -pe 's/command=.*/command=$ENV{NPM_BIN}\/lamassu-admin-server/g' /etc/supervisor/conf.d/lamassu-admin-server.conf >> ${LOG_FILE} 2>&1
decho "updating lamassu-server"
supervisorctl update lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl update lamassu-admin-server >> ${LOG_FILE} 2>&1
supervisorctl start lamassu-server >> ${LOG_FILE} 2>&1
supervisorctl start lamassu-admin-server >> ${LOG_FILE} 2>&1
decho "updating backups conf"
BACKUP_CMD=${NPM_BIN}/lamassu-backup-pg
BACKUP_CRON="@daily $BACKUP_CMD > /dev/null"
( (crontab -l 2>/dev/null || echo -n "") | grep -v '@daily.*lamassu-backup-pg'; echo $BACKUP_CRON ) | crontab - >> $LOG_FILE 2>&1
$BACKUP_CMD >> $LOG_FILE 2>&1
# reset terminal to link new executables
hash -r
decho "Update complete!"