mirror of
https://github.com/samply/bridgehead.git
synced 2026-10-12 22:56:41 +02:00
* cce: Fetch the config repository token via Secret Sync * Keep the Secret Sync GitLab token across reboots and outages * Install site configuration with a one-time enrollment code * Align the itcc and dhki cases in prepare-system.sh * Report an unreachable broker instead of a clock skew during install * Show bridgehead check results as OK, WARN or CRIT and run them during install * Refresh the config repo token before bridgehead check fetches * Skip Secret Sync until the private key and root certificate exist * Indent the case block in prepare-system.sh with tabs only * Hide the config repo URL, token and enrollment code from other local users * remove the unreachable second dhki case --------- Co-authored-by: Martin Lablans <m.lablans@dkfz-heidelberg.de>
142 lines
5.4 KiB
Bash
Executable File
142 lines
5.4 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
DEV_MODE="${1:-NODEV}"
|
|
|
|
source lib/log.sh
|
|
source lib/functions.sh
|
|
|
|
log "INFO" "Preparing your system for bridgehead installation ..."
|
|
|
|
# Check, if running in WSL
|
|
if [[ $(grep -i Microsoft /proc/version) ]]; then
|
|
# Check, if systemd is available
|
|
if [ "$(systemctl is-system-running)" = "offline" ]; then
|
|
log "ERROR" "It seems you have no active systemd environment in your WSL environment. Please follow the guide in https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Create the bridgehead user
|
|
if id bridgehead &>/dev/null; then
|
|
log "INFO" "Existing user with id $(id -u bridgehead) will be used by the bridgehead system units."
|
|
else
|
|
log "INFO" "Now creating a system user to own the bridgehead's files."
|
|
useradd -M -g docker -N bridgehead || fail_and_report ""
|
|
fi
|
|
|
|
# Clone the OpenSource repository of bridgehead
|
|
set +e
|
|
bridgehead_repository_url=$(git remote get-url origin)
|
|
if [ $? -ne 0 ]; then
|
|
bridgehead_repository_url="https://github.com/samply/bridgehead.git"
|
|
fi
|
|
set -e
|
|
if [ -d "/srv/docker/bridgehead" ]; then
|
|
current_owner=$(stat -c '%U' /srv/docker/bridgehead)
|
|
if [ "$(su -c 'git -C /srv/docker/bridgehead remote get-url origin' $current_owner)" == "$bridgehead_repository_url" ]; then
|
|
log "INFO" "Bridgehead's open-source repository has been found at /srv/docker/bridgehead"
|
|
else
|
|
log "ERROR" "The directory /srv/docker/bridgehead seems to exist, but doesn't contain a clone of $bridgehead_repository_url\nPlease delete the directory and try again."
|
|
exit 1
|
|
fi
|
|
else
|
|
log "INFO" "Cloning $bridgehead_repository_url to /srv/docker/bridgehead"
|
|
mkdir -p /srv/docker/
|
|
git clone $bridgehead_repository_url /srv/docker/bridgehead
|
|
fi
|
|
|
|
case "$PROJECT" in
|
|
ccp)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/bridgehead-configurations/bridgehead-config-"
|
|
;;
|
|
bbmri)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/bbmri-bridgehead-configs/"
|
|
;;
|
|
cce)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/cce-sites/"
|
|
;;
|
|
pscc)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/pscc-sites/"
|
|
;;
|
|
itcc)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/itcc-sites/"
|
|
;;
|
|
dhki)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/dhki/"
|
|
;;
|
|
kr)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/krebsregister-sites/"
|
|
;;
|
|
nngm)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/nngm/"
|
|
;;
|
|
minimal)
|
|
site_configuration_repository_middle="git.verbis.dkfz.de/minimal-bridgehead-configs/"
|
|
;;
|
|
*)
|
|
log ERROR "Internal error, this should not happen."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Clone the site-configuration
|
|
if [ -d /etc/bridgehead ]; then
|
|
current_owner=$(stat -c '%U' /etc/bridgehead)
|
|
if [ "$(su -c 'git -C /etc/bridgehead remote get-url origin' $current_owner | grep $site_configuration_repository_middle)" ]; then
|
|
log "INFO" "Your site config repository in /etc/bridgehead seems to be installed correctly."
|
|
else
|
|
log "WARN" "Your site configuration repository in /etc/bridgehead seems to have another origin than git.verbis.dkfz.de. Please check if the repository is correctly cloned!"
|
|
fi
|
|
elif [[ "$DEV_MODE" == "NODEV" ]]; then
|
|
log "INFO" "Now cloning your site configuration repository for you."
|
|
if [ -z "$access_token" ] && [ -z "$enrollment_code" ]; then
|
|
echo "Way A: You received a one-time enrollment code."
|
|
echo "Way B: You received a repository URL including access credentials."
|
|
read -p "Please choose your way of installation [A/B]: " way
|
|
case "$way" in
|
|
[Aa])
|
|
read -p "Please enter your one-time enrollment code: " enrollment_code
|
|
;;
|
|
[Bb])
|
|
read_masked "Please enter your repository URL: " site_configuration_repository_url
|
|
;;
|
|
*)
|
|
log "ERROR" "Please choose A or B."
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
if [ -z "$site_configuration_repository_url" ]; then
|
|
if [ -z "$site" ]; then
|
|
read -p "Please enter your site: " site
|
|
fi
|
|
site=$(echo $site | tr '[:upper:]' '[:lower:]')
|
|
fi
|
|
if [ -z "$access_token" ] && [ -n "$enrollment_code" ]; then
|
|
if ! bootstrap_site_configuration "$site" "$enrollment_code" "https://${site_configuration_repository_middle}${site}.git"; then
|
|
log "ERROR" "Unable to set up your configuration repository with your one-time enrollment code (Way A)."
|
|
exit 1
|
|
fi
|
|
else
|
|
if [ -n "$access_token" ]; then
|
|
site_configuration_repository_url="https://bytoken:${access_token}@${site_configuration_repository_middle}${site}.git"
|
|
fi
|
|
git clone $site_configuration_repository_url /etc/bridgehead
|
|
if [ $? -gt 0 ]; then
|
|
log "ERROR" "Unable to clone your configuration repository. Please obtain correct access data and try again."
|
|
fi
|
|
fi
|
|
elif [[ "$DEV_MODE" == "DEV" ]]; then
|
|
log "INFO" "Now cloning your developer configuration repository for you."
|
|
read -p "Please enter your config repository URL: " url
|
|
git clone "$url" /etc/bridgehead
|
|
fi
|
|
|
|
fixPermissions
|
|
mkdir -p /tmp/bridgehead /var/cache/bridgehead
|
|
chown -R bridgehead:docker /tmp/bridgehead /var/cache/bridgehead
|
|
chmod -R g+wr /var/cache/bridgehead /tmp/bridgehead
|
|
|
|
log INFO "System preparation is completed and configuration is present."
|
|
|