mirror of
https://github.com/samply/bridgehead.git
synced 2025-06-16 16:10:14 +02:00
This auto-build functionality is a workaround for a bug, described in README. The README now has additional documentation for EHDS2. The root certificate files have been expanded to contain certificates for both the ECDC and the DKFZ setup.
155 lines
4.4 KiB
Bash
Executable File
155 lines
4.4 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
baseDir() {
|
|
# see https://stackoverflow.com/questions/59895
|
|
SOURCE=${BASH_SOURCE[0]}
|
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
|
|
SOURCE=$(readlink "$SOURCE")
|
|
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
done
|
|
DIR=$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )
|
|
echo $DIR
|
|
}
|
|
|
|
BASE=$(baseDir)
|
|
cd $BASE
|
|
|
|
source ./lib/functions.sh
|
|
|
|
ACTION=$1
|
|
export PROJECT=$2
|
|
|
|
if [[ -z $1 || -z $2 ]]; then
|
|
printUsage
|
|
exit 1
|
|
fi
|
|
|
|
case "$PROJECT" in
|
|
ccp)
|
|
#nothing extra to do
|
|
;;
|
|
bbmri)
|
|
#nothing extra to do
|
|
;;
|
|
minimal)
|
|
#nothing extra to do
|
|
;;
|
|
*)
|
|
printUsage
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
loadVars() {
|
|
# Load variables from /etc/bridgehead and /srv/docker/bridgehead
|
|
set -a
|
|
source /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "/etc/bridgehead/$PROJECT.conf not found"
|
|
if [ -e /etc/bridgehead/$PROJECT.local.conf ]; then
|
|
log INFO "Applying /etc/bridgehead/$PROJECT.local.conf"
|
|
source /etc/bridgehead/$PROJECT.local.conf || fail_and_report 1 "Found /etc/bridgehead/$PROJECT.local.conf but failed to import"
|
|
fi
|
|
fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "Unable to fetchVarsFromVaultByFile"
|
|
[ -e ./$PROJECT/vars ] && source ./$PROJECT/vars
|
|
set +a
|
|
|
|
OVERRIDE=${OVERRIDE:=""}
|
|
# minimal contains shared components, so potential overrides must be applied in every project
|
|
if [ -f "minimal/docker-compose.override.yml" ]; then
|
|
log INFO "Applying Bridgehead common components override (minimal/docker-compose.override.yml)"
|
|
OVERRIDE+=" -f ./minimal/docker-compose.override.yml"
|
|
fi
|
|
if [ -f "$PROJECT/docker-compose.override.yml" ]; then
|
|
log INFO "Applying $PROJECT/docker-compose.override.yml"
|
|
OVERRIDE+=" -f ./$PROJECT/docker-compose.override.yml"
|
|
fi
|
|
detectCompose
|
|
setHostname
|
|
setupProxy
|
|
|
|
# Set some project-independent default values
|
|
: ${ENVIRONMENT:=production}
|
|
|
|
case "$ENVIRONMENT" in
|
|
"production")
|
|
export FOCUS_TAG=main
|
|
;;
|
|
"test")
|
|
export FOCUS_TAG=develop
|
|
;;
|
|
*)
|
|
report_error 7 "Environment \"$ENVIRONMENT\" is unknown. Assuming production. FIX THIS!"
|
|
export FOCUS_TAG=main
|
|
;;
|
|
esac
|
|
}
|
|
|
|
case "$ACTION" in
|
|
start)
|
|
loadVars
|
|
hc_send log "Bridgehead $PROJECT startup: Checking requirements ..."
|
|
checkRequirements
|
|
# Local versions of focus and transfair are needed by EHDS2
|
|
clone_focus_if_nonexistent ${BASE}/..
|
|
build_focus ${BASE}/..
|
|
clone_transfair_if_nonexistent ${BASE}/..
|
|
build_transfair ${BASE}/..
|
|
# Location for input data and results for EHDS2
|
|
mkdir -p ${BASE}/../ecdc/test
|
|
mkdir -p ${BASE}/../ecdc/data
|
|
chown -R bridgehead ${BASE}/../ecdc
|
|
hc_send log "Bridgehead $PROJECT startup: Requirements checked out. Now starting bridgehead ..."
|
|
exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE up --abort-on-container-exit
|
|
;;
|
|
stop)
|
|
loadVars
|
|
# HACK: This is temporarily to properly shut down false bridgehead instances (bridgehead-ccp instead ccp)
|
|
$COMPOSE -p bridgehead-$PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down
|
|
exec $COMPOSE -p $PROJECT -f ./minimal/docker-compose.yml -f ./$PROJECT/docker-compose.yml $OVERRIDE down
|
|
;;
|
|
is-running)
|
|
bk_is_running
|
|
exit $?
|
|
;;
|
|
update)
|
|
loadVars
|
|
exec ./lib/update-bridgehead.sh $PROJECT
|
|
;;
|
|
install)
|
|
source ./lib/prepare-system.sh NODEV
|
|
loadVars
|
|
exec ./lib/install-bridgehead.sh $PROJECT
|
|
;;
|
|
dev-install)
|
|
exec ./lib/prepare-system.sh DEV
|
|
loadVars
|
|
exec ./lib/install-bridgehead.sh $PROJECT
|
|
;;
|
|
uninstall)
|
|
exec ./lib/uninstall-bridgehead.sh $PROJECT
|
|
;;
|
|
adduser)
|
|
loadVars
|
|
log "INFO" "Adding encrypted credentials in /etc/bridgehead/$PROJECT.local.conf"
|
|
read -p "Please choose the component (LDM_AUTH|NNGM_AUTH) you want to add a user to : " COMPONENT
|
|
read -p "Please enter a username: " USER
|
|
read -s -p "Please enter a password (will not be echoed): "$'\n' PASSWORD
|
|
add_basic_auth_user $USER $PASSWORD $COMPONENT $PROJECT
|
|
;;
|
|
enroll)
|
|
loadVars
|
|
do_enroll $PROXY_ID
|
|
;;
|
|
preRun | preUpdate)
|
|
fixPermissions
|
|
;;
|
|
postRun | postUpdate)
|
|
;;
|
|
*)
|
|
printUsage
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|