From 99126a89598961401469dae5b9b177bb8b47cf48 Mon Sep 17 00:00:00 2001 From: Martin Lablans <6804500+lablans@users.noreply.github.com> Date: Tue, 4 Oct 2022 10:04:32 +0200 Subject: [PATCH 001/213] Shutdown all docker containers if one fails ... will then be restarted by systemd --- bridgehead | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bridgehead b/bridgehead index 35442c9..85d9348 100755 --- a/bridgehead +++ b/bridgehead @@ -51,7 +51,7 @@ set +a case "$ACTION" in start) checkRequirements - exec docker-compose -f ./$PROJECT/docker-compose.yml up + exec docker-compose -f ./$PROJECT/docker-compose.yml up --abort-on-container-exit ;; stop) exec docker-compose -f ./$PROJECT/docker-compose.yml down From bba1041bed0dcda5ea021630bdb193ff811a9c20 Mon Sep 17 00:00:00 2001 From: Torben Brenner <76154651+torbrenner@users.noreply.github.com> Date: Wed, 5 Oct 2022 12:52:39 +0200 Subject: [PATCH 002/213] Updated Blaze from v0.17 -> v0.18 --- ccp/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index 161e495..65343d6 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -52,7 +52,7 @@ services: SITE_NAME: ${SITE_NAME} blaze: - image: "samply/blaze:0.17" + image: "samply/blaze:0.18" container_name: bridgehead-ccp-blaze environment: BASE_URL: "http://bridgehead-ccp-blaze:8080" From b41e5b23158d0a8e05b1620d3599b19a56a716cd Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Wed, 5 Oct 2022 19:58:07 +0200 Subject: [PATCH 003/213] Fix permissions on startup. Requires re-install of systemd units. --- bridgehead | 3 +++ lib/systemd/bridgehead-update@.service | 1 + lib/systemd/bridgehead@.service | 1 + 3 files changed, 5 insertions(+) diff --git a/bridgehead b/bridgehead index 85d9348..eba542d 100755 --- a/bridgehead +++ b/bridgehead @@ -65,6 +65,9 @@ case "$ACTION" in uninstall) exec ./lib/remove-bridgehead-units.sh $PROJECT ;; + fixPermissions) + chown -R bridgehead /etc/bridgehead . + ;; *) printUsage exit 1 diff --git a/lib/systemd/bridgehead-update@.service b/lib/systemd/bridgehead-update@.service index c1d8b4c..e8b42ea 100644 --- a/lib/systemd/bridgehead-update@.service +++ b/lib/systemd/bridgehead-update@.service @@ -4,6 +4,7 @@ Description=Bridgehead (%i) Update Service [Service] Type=oneshot User=bridgehead +ExecStartPre=-/srv/docker/bridgehead/bridgehead fixPermissions %i ExecStart=/srv/docker/bridgehead/bridgehead update %i [Install] diff --git a/lib/systemd/bridgehead@.service b/lib/systemd/bridgehead@.service index c387c71..f109e5a 100644 --- a/lib/systemd/bridgehead@.service +++ b/lib/systemd/bridgehead@.service @@ -6,6 +6,7 @@ Requires=docker.service User=bridgehead Restart=always RestartSec=30 +ExecStartPre=-/srv/docker/bridgehead/bridgehead fixPermissions %i ExecStart=/srv/docker/bridgehead/bridgehead start %i ExecStop=/srv/docker/bridgehead/bridgehead stop %i From 8a6274389459c0c15a8dfcac852c2238c1081b07 Mon Sep 17 00:00:00 2001 From: Martin Lablans <6804500+lablans@users.noreply.github.com> Date: Thu, 6 Oct 2022 10:45:50 +0200 Subject: [PATCH 004/213] Monitoring for bridgehead startup and update (#22) --- bridgehead | 12 +++++--- lib/functions.sh | 23 +++++++++++---- lib/gitpassword.sh | 5 ++-- lib/log.sh | 5 ++++ lib/monitoring.sh | 41 ++++++++++++++++++++++++++ lib/prerequisites.sh | 16 ++++------ lib/setup-bridgehead-units.sh | 4 ++- lib/systemd/bridgehead-update@.service | 3 +- lib/systemd/bridgehead@.service | 3 +- lib/update-bridgehead.sh | 19 +++++++----- 10 files changed, 98 insertions(+), 33 deletions(-) create mode 100644 lib/log.sh create mode 100755 lib/monitoring.sh diff --git a/bridgehead b/bridgehead index eba542d..87d6a1f 100755 --- a/bridgehead +++ b/bridgehead @@ -43,14 +43,16 @@ esac # Load variables from /etc/bridgehead and /srv/docker/bridgehead set -a -source /etc/bridgehead/$PROJECT.conf -fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || exit 1 +source /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "/etc/bridgehead/$PROJECT.conf not found" +fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "Unable to fetchVarsFromVaultByFile" [ -e ./$PROJECT/vars ] && source ./$PROJECT/vars set +a case "$ACTION" in start) + hc_send log "Bridgehead $PROJECT startup: Checking requirements ..." checkRequirements + hc_send log "Bridgehead $PROJECT startup: Requirements checked out. Now starting bridgehead ..." exec docker-compose -f ./$PROJECT/docker-compose.yml up --abort-on-container-exit ;; stop) @@ -65,8 +67,10 @@ case "$ACTION" in uninstall) exec ./lib/remove-bridgehead-units.sh $PROJECT ;; - fixPermissions) - chown -R bridgehead /etc/bridgehead . + preRun | preUpdate) + fixPermissions + ;; + postRun | postUpdate) ;; *) printUsage diff --git a/lib/functions.sh b/lib/functions.sh index 3d5a88f..ded0cd9 100755 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -1,9 +1,11 @@ #!/bin/bash -e +source lib/log.sh + exitIfNotRoot() { if [ "$EUID" -ne 0 ]; then log "ERROR" "Please run as root" - exit 1 + fail_and_report 1 "Please run as root" fi } @@ -16,10 +18,6 @@ checkOwner(){ return 0 } -log() { - echo -e "$(date +'%Y-%m-%d %T')" "$1:" "$2" -} - printUsage() { echo "Usage: bridgehead start|stop|update|install|uninstall PROJECTNAME" echo "PROJECTNAME should be one of ccp|nngm|gbn" @@ -28,7 +26,7 @@ printUsage() { checkRequirements() { if ! lib/prerequisites.sh; then log "ERROR" "Validating Prerequisites failed, please fix the error(s) above this line." - exit 1 + fail_and_report 1 "Validating prerequisites failed." else return 0 fi @@ -97,6 +95,19 @@ assertVarsNotEmpty() { return 0 } +fixPermissions() { + CHOWN=$(which chown) + sudo $CHOWN -R bridgehead /etc/bridgehead /srv/docker/bridgehead +} + +source lib/monitoring.sh + +fail_and_report() { + log ERROR "$2" + hc_send $1 "$2" + exit $1 +} + ##Setting Network properties export HOSTIP=$(MSYS_NO_PATHCONV=1 docker run --rm --add-host=host.docker.internal:host-gateway ubuntu cat /etc/hosts | grep 'host.docker.internal' | awk '{print $1}'); export HOST=$(hostname) diff --git a/lib/gitpassword.sh b/lib/gitpassword.sh index 25eb9ce..17756d6 100755 --- a/lib/gitpassword.sh +++ b/lib/gitpassword.sh @@ -22,7 +22,7 @@ cd $BASE source lib/functions.sh -assertVarsNotEmpty SITE_ID || exit 1 +assertVarsNotEmpty SITE_ID || fail_and_report 1 "gitpassword.sh failed: SITE_ID is empty." PARAMS="$(cat)" GITHOST=$(echo "$PARAMS" | grep "^host=" | sed 's/host=\(.*\)/\1/g') @@ -30,8 +30,7 @@ GITHOST=$(echo "$PARAMS" | grep "^host=" | sed 's/host=\(.*\)/\1/g') fetchVarsFromVault GIT_PASSWORD if [ -z "${GIT_PASSWORD}" ]; then - log ERROR "Git password not found." - exit 1 + fail_and_report 1 "gitpassword.sh failed: Git password not found." fi cat <&1 is_available=$? if [ $is_available -gt 0 ]; then - log "ERROR" "Prerequisite not fulfilled - $prerequisite is not available!" - exit 79 + fail_and_report 79 "Prerequisite not fulfilled - $prerequisite is not available!" fi # TODO: Check for specific version done log INFO "Checking if sudo is installed ..." if [ ! -d /etc/sudoers.d ]; then - log ERROR "/etc/sudoers.d does not exist. Please install sudo package." - exit 1 + fail_and_report 1 "/etc/sudoers.d does not exist. Please install sudo package." fi log INFO "Checking configuration ..." ## Download submodule if [ ! -d "/etc/bridgehead/" ]; then - log ERROR "Please set up the config folder at /etc/bridgehead. Instruction are in the readme." - exit 1 + fail_and_report 1 "Please set up the config folder at /etc/bridgehead. Instruction are in the readme." fi # TODO: Check all required variables here in a generic loop #check if project env is present if [ -d "/etc/bridgehead/${PROJECT}.conf" ]; then - log ERROR "Project config not found. Please copy the template from ${PROJECT} and put it under /etc/bridgehead-config/${PROJECT}.conf." - exit 1 + fail_and_report 1 "Project config not found. Please copy the template from ${PROJECT} and put it under /etc/bridgehead-config/${PROJECT}.conf." fi # TODO: Make sure you're in the right directory, or, even better, be independent from the working directory. @@ -60,11 +56,11 @@ fi if [ -e /etc/bridgehead/vault.conf ]; then if [ "$(stat -c "%a %U" /etc/bridgehead/vault.conf)" != "600 bridgehead" ]; then - log ERROR "/etc/bridgehead/vault.conf has wrong owner/permissions. To correct this issue, run chmod 600 /etc/bridgehead/vault.conf && chown bridgehead /etc/bridgehead/vault.conf." - exit 1 + fail_and_report 1 "/etc/bridgehead/vault.conf has wrong owner/permissions. To correct this issue, run chmod 600 /etc/bridgehead/vault.conf && chown bridgehead /etc/bridgehead/vault.conf." fi fi log INFO "Success - all prerequisites are met!" +hc_send log "Success - all prerequisites are met!" exit 0 diff --git a/lib/setup-bridgehead-units.sh b/lib/setup-bridgehead-units.sh index a1393c2..a96e583 100755 --- a/lib/setup-bridgehead-units.sh +++ b/lib/setup-bridgehead-units.sh @@ -26,7 +26,9 @@ Cmnd_Alias BRIDGEHEAD${PROJECT^^} = \\ /bin/systemctl start bridgehead@${PROJECT}.service, \\ /bin/systemctl stop bridgehead@${PROJECT}.service, \\ /bin/systemctl restart bridgehead@${PROJECT}.service, \\ - /bin/systemctl restart bridgehead@*.service + /bin/systemctl restart bridgehead@*.service, \\ + /bin/chown -R bridgehead /etc/bridgehead /srv/docker/bridgehead, \\ + /usr/bin/chown -R bridgehead /etc/bridgehead /srv/docker/bridgehead bridgehead ALL= NOPASSWD: BRIDGEHEAD${PROJECT^^} EOF diff --git a/lib/systemd/bridgehead-update@.service b/lib/systemd/bridgehead-update@.service index e8b42ea..3a7f347 100644 --- a/lib/systemd/bridgehead-update@.service +++ b/lib/systemd/bridgehead-update@.service @@ -4,8 +4,9 @@ Description=Bridgehead (%i) Update Service [Service] Type=oneshot User=bridgehead -ExecStartPre=-/srv/docker/bridgehead/bridgehead fixPermissions %i +ExecStartPre=-/srv/docker/bridgehead/bridgehead preUpdate %i ExecStart=/srv/docker/bridgehead/bridgehead update %i +ExecStopPost=-/srv/docker/bridgehead/bridgehead postUpdate %i [Install] WantedBy=multi-user.target diff --git a/lib/systemd/bridgehead@.service b/lib/systemd/bridgehead@.service index f109e5a..7645793 100644 --- a/lib/systemd/bridgehead@.service +++ b/lib/systemd/bridgehead@.service @@ -6,9 +6,10 @@ Requires=docker.service User=bridgehead Restart=always RestartSec=30 -ExecStartPre=-/srv/docker/bridgehead/bridgehead fixPermissions %i +ExecStartPre=-/srv/docker/bridgehead/bridgehead preRun %i ExecStart=/srv/docker/bridgehead/bridgehead start %i ExecStop=/srv/docker/bridgehead/bridgehead stop %i +ExecStopPost=-/srv/docker/bridgehead/bridgehead postRun %i [Install] WantedBy=multi-user.target diff --git a/lib/update-bridgehead.sh b/lib/update-bridgehead.sh index 9bb73bd..162d592 100755 --- a/lib/update-bridgehead.sh +++ b/lib/update-bridgehead.sh @@ -1,20 +1,21 @@ #!/bin/bash source lib/functions.sh +hc_send log "Updating bridgehead ..." + CONFFILE=/etc/bridgehead/$1.conf if [ ! -e $CONFFILE ]; then - log ERROR "Configuration file $CONFFILE not found." - exit 1 + fail_and_report 1 "Configuration file $CONFFILE not found." fi source $CONFFILE -assertVarsNotEmpty SITE_ID || exit 1 +assertVarsNotEmpty SITE_ID || fail_and_report 1 "Update failed: SITE_ID empty" export SITE_ID -checkOwner . bridgehead || exit 1 -checkOwner /etc/bridgehead bridgehead || exit 1 +checkOwner . bridgehead || fail_and_report 1 "Update failed: Wrong permissions in $(pwd)" +checkOwner /etc/bridgehead bridgehead || fail_and_report 1 "Update failed: Wrong permissions in /etc/bridgehead" CREDHELPER="/srv/docker/bridgehead/lib/gitpassword.sh" @@ -69,10 +70,14 @@ done # If anything is updated, restart service if [ $git_updated = "true" ] || [ $docker_updated = "true" ]; then - log "INFO" "Update detected, now restarting bridgehead" + RES="Update detected, now restarting bridgehead" + log "INFO" "$RES" + hc_send log "$RES" sudo /bin/systemctl restart bridgehead@*.service else - log "INFO" "Nothing updated, nothing to restart." + RES="Nothing updated, nothing to restart." + log "INFO" "$RES" + hc_send log "$RES" fi exit 0 From 2fb57980eef3a4f51fbe90025d508396045ff25a Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Thu, 6 Oct 2022 12:04:24 +0200 Subject: [PATCH 005/213] Format docker status table --- lib/monitoring.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/monitoring.sh b/lib/monitoring.sh index d9bbf60..b6384b0 100755 --- a/lib/monitoring.sh +++ b/lib/monitoring.sh @@ -29,7 +29,7 @@ function hc_send(){ fi if [ -z "$UPTIME" ]; then - UPTIME=$(docker ps --format '{{.Names}} {{.RunningFor}}' --filter name=bridgehead || echo "Unable to get docker statistics") + UPTIME=$(docker ps --format 'table {{.Names}} \t{{.RunningFor}} \t {{.Status}} \t {{.Image}}' --filter name=bridgehead || echo "Unable to get docker statistics") fi if [ -n "$2" ]; then From 0f449344195b8724a8905981d6c0afcd2288977d Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Thu, 6 Oct 2022 12:05:36 +0200 Subject: [PATCH 006/213] Clarified log message --- lib/update-bridgehead.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/update-bridgehead.sh b/lib/update-bridgehead.sh index 162d592..a79fece 100755 --- a/lib/update-bridgehead.sh +++ b/lib/update-bridgehead.sh @@ -1,7 +1,7 @@ #!/bin/bash source lib/functions.sh -hc_send log "Updating bridgehead ..." +hc_send log "Checking for bridgehead updates ..." CONFFILE=/etc/bridgehead/$1.conf From f7c4bf6ac5cb0def425904b6d9dc9a5a872ca479 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Thu, 6 Oct 2022 12:49:31 +0200 Subject: [PATCH 007/213] Consider stopped docker containers for reports, updates --- lib/monitoring.sh | 2 +- lib/update-bridgehead.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/monitoring.sh b/lib/monitoring.sh index b6384b0..bdd9a35 100755 --- a/lib/monitoring.sh +++ b/lib/monitoring.sh @@ -29,7 +29,7 @@ function hc_send(){ fi if [ -z "$UPTIME" ]; then - UPTIME=$(docker ps --format 'table {{.Names}} \t{{.RunningFor}} \t {{.Status}} \t {{.Image}}' --filter name=bridgehead || echo "Unable to get docker statistics") + UPTIME=$(docker ps -a --format 'table {{.Names}} \t{{.RunningFor}} \t {{.Status}} \t {{.Image}}' --filter name=bridgehead || echo "Unable to get docker statistics") fi if [ -n "$2" ]; then diff --git a/lib/update-bridgehead.sh b/lib/update-bridgehead.sh index a79fece..19dd8e7 100755 --- a/lib/update-bridgehead.sh +++ b/lib/update-bridgehead.sh @@ -60,7 +60,7 @@ done # Check docker updates log "INFO" "Checking for updates to running docker images ..." docker_updated="false" -for IMAGE in $(docker ps --filter "name=bridgehead" --format {{.Image}}); do +for IMAGE in $(cat $PROJECT/docker-compose.yml | grep "image:" | sed -e 's_^.*image: \(.*\).*$_\1_g; s_\"__g'); do log "INFO" "Checking for Updates of Image: $IMAGE" if docker pull $IMAGE | grep "Downloaded newer image"; then log "INFO" "$IMAGE updated." From 7b15e02becda271641ebc002955c30dab025d708 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Thu, 6 Oct 2022 12:49:48 +0200 Subject: [PATCH 008/213] Use HTTPS proxy (not http proxy) for git pull --- lib/update-bridgehead.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/update-bridgehead.sh b/lib/update-bridgehead.sh index 19dd8e7..ef07590 100755 --- a/lib/update-bridgehead.sh +++ b/lib/update-bridgehead.sh @@ -33,8 +33,8 @@ for DIR in /etc/bridgehead $(pwd); do git -C $DIR pull 2>&1 else log "INFO" "Git is using proxy ${HTTP_PROXY_URL} from ${CONFFILE}" - git -c http.proxy=$HTTP_PROXY_URL -c http.proxy=$HTTP_PROXY_URL -C $DIR fetch 2>&1 - git -c http.proxy=$HTTP_PROXY_URL -c http.proxy=$HTTP_PROXY_URL -C $DIR pull 2>&1 + git -c http.proxy=$HTTP_PROXY_URL -c https.proxy=$HTTPS_PROXY_URL -C $DIR fetch 2>&1 + git -c http.proxy=$HTTP_PROXY_URL -c https.proxy=$HTTPS_PROXY_URL -C $DIR pull 2>&1 fi new_git_hash="$(git -C $DIR rev-parse --verify HEAD)" git_updated="false" From 67ec348f747b8419f3ab454d9884d50c2bd13179 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Thu, 6 Oct 2022 16:27:52 +0200 Subject: [PATCH 009/213] Support docker-compose.override.yml --- bridgehead | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bridgehead b/bridgehead index 87d6a1f..6ea59e4 100755 --- a/bridgehead +++ b/bridgehead @@ -48,15 +48,21 @@ fetchVarsFromVaultByFile /etc/bridgehead/$PROJECT.conf || fail_and_report 1 "Una [ -e ./$PROJECT/vars ] && source ./$PROJECT/vars set +a +OVERRIDE="" +if [ -f "$PROJECT/docker-compose.override.yml" ]; then + log INFO "Apply docker-compose.override.yml" + OVERRIDE+="-f ./$PROJECT/docker-compose.override.yml" +fi + case "$ACTION" in start) hc_send log "Bridgehead $PROJECT startup: Checking requirements ..." checkRequirements hc_send log "Bridgehead $PROJECT startup: Requirements checked out. Now starting bridgehead ..." - exec docker-compose -f ./$PROJECT/docker-compose.yml up --abort-on-container-exit + exec docker-compose -f ./$PROJECT/docker-compose.yml $OVERRIDE up --abort-on-container-exit ;; stop) - exec docker-compose -f ./$PROJECT/docker-compose.yml down + exec docker-compose -f ./$PROJECT/docker-compose.yml $OVERRIDE down ;; update) exec ./lib/update-bridgehead.sh $PROJECT From ca45a3dbe9a408e618e33adbff65b6b06c226d21 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Tue, 11 Oct 2022 11:06:52 +0200 Subject: [PATCH 010/213] Support /etc/bridgehead/PROJECT.local.conf --- bridgehead | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bridgehead b/bridgehead index 6ea59e4..5c7d121 100755 --- a/bridgehead +++ b/bridgehead @@ -44,13 +44,17 @@ esac # 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="" if [ -f "$PROJECT/docker-compose.override.yml" ]; then - log INFO "Apply docker-compose.override.yml" + log INFO "Applying $PROJECT/docker-compose.override.yml" OVERRIDE+="-f ./$PROJECT/docker-compose.override.yml" fi From f7742f2a2bfb0e2d9292ff75c96d7a5dbaa095f7 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Tue, 11 Oct 2022 13:28:51 +0200 Subject: [PATCH 011/213] Make traefik volumes read-only --- ccp/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index 65343d6..d78a842 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -25,8 +25,8 @@ services: - 80:80 - 443:443 volumes: - - ../certs:/tools/certs - - ../lib/traefik-configuration/:/configuration + - ../certs:/tools/certs:ro + - ../lib/traefik-configuration/:/configuration:ro - /var/run/docker.sock:/var/run/docker.sock:ro forward_proxy: From e439510920f36c272fe8ce99efc630849ce0ac9b Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Tue, 11 Oct 2022 13:29:09 +0200 Subject: [PATCH 012/213] Rename spot container so it shows up in monitoring --- ccp/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index d78a842..3ef7f24 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -72,6 +72,7 @@ services: spot: image: samply/spot:latest + container_name: bridgehead-spot environment: SECRET: ${SPOT_BEAM_SECRET_LONG} APPID: spot From 7ecb39d6cede55a820e36900ccca92554782b1f7 Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Tue, 11 Oct 2022 18:29:08 +0200 Subject: [PATCH 013/213] Use new forward proxy --- ccp/docker-compose.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index 3ef7f24..c446f64 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -31,13 +31,14 @@ services: forward_proxy: container_name: bridgehead-forward-proxy - image: samply/bridgehead-forward-proxy:develop + image: samply/bridgehead-forward-proxy:main environment: - http_proxy: ${HTTP_PROXY_URL} - https_proxy: ${HTTPS_PROXY_URL} + HTTPS_PROXY: ${HTTPS_PROXY_URL} + USERNAME: ${HTTPS_PROXY_USERNAME} + PASSWORD: ${HTTPS_PROXY_PASSWORD} volumes: - - "bridgehead-proxy:/var/log/squid" - + - /etc/bridgehead/trusted-ca-certs:/docker/custom-certs/:ro + landing: container_name: bridgehead-landingpage image: samply/bridgehead-landingpage:master @@ -60,7 +61,7 @@ services: LOG_LEVEL: "debug" ENFORCE_REFERENTIAL_INTEGRITY: "false" volumes: - - "blaze-data:/app/data" + - "blaze-data:/app/data" labels: - "traefik.enable=true" - "traefik.http.middlewares.ccp-auth.basicauth.users=${bc_auth_users}" @@ -98,17 +99,19 @@ services: PRIVKEY_FILE: /run/secrets/proxy.pem RUST_LOG: debug ALL_PROXY: http://forward_proxy:3128 + TLS_CA_CERTIFICATES_DIR: /conf/trusted-ca-certs secrets: - proxy.pem labels: - "traefik.enable=false" depends_on: - "forward_proxy" + volumes: + - /etc/bridgehead/trusted-ca-certs:/conf/trusted-ca-certs:ro volumes: blaze-data: - bridgehead-proxy: secrets: proxy.pem: From 0f1cb966badaa95997b4636840ff1197d8b755c6 Mon Sep 17 00:00:00 2001 From: Martin Lablans <6804500+lablans@users.noreply.github.com> Date: Tue, 11 Oct 2022 18:36:42 +0200 Subject: [PATCH 014/213] Use tag latest for forward proxy --- ccp/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index c446f64..bc8fdf2 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -31,7 +31,7 @@ services: forward_proxy: container_name: bridgehead-forward-proxy - image: samply/bridgehead-forward-proxy:main + image: samply/bridgehead-forward-proxy:latest environment: HTTPS_PROXY: ${HTTPS_PROXY_URL} USERNAME: ${HTTPS_PROXY_USERNAME} From e273e97d9cfa1fb351743ae4db4227e2ee6a368d Mon Sep 17 00:00:00 2001 From: Martin Lablans <6804500+lablans@users.noreply.github.com> Date: Mon, 17 Oct 2022 14:38:34 +0200 Subject: [PATCH 015/213] Certificate enrollment (#24) --- bridgehead | 8 ++++++++ ccp/vars | 2 ++ lib/functions.sh | 2 +- lib/prerequisites.sh | 11 ++++++++++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/bridgehead b/bridgehead index 5c7d121..5548a7d 100755 --- a/bridgehead +++ b/bridgehead @@ -77,6 +77,14 @@ case "$ACTION" in uninstall) exec ./lib/remove-bridgehead-units.sh $PROJECT ;; + enroll) + if [ -e $PRIVATEKEYFILENAME ]; then + echo "Private key already exists at $PRIVATEKEYFILENAME. Please delete first to proceed." + exit 1 + fi + docker run --rm -ti -v /etc/bridgehead/pki:/etc/bridgehead/pki samply/beam-enroll:latest --output-file $PRIVATEKEYFILENAME --proxy-id $PROXY_ID --admin-email $SUPPORT_EMAIL + chmod 600 $PRIVATEKEYFILENAME + ;; preRun | preUpdate) fixPermissions ;; diff --git a/ccp/vars b/ccp/vars index 4152fa4..ce12d1a 100644 --- a/ccp/vars +++ b/ccp/vars @@ -5,3 +5,5 @@ SPOT_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | he SPOT_BEAM_SECRET_LONG="ApiKey spot.${PROXY_ID} ${SPOT_BEAM_SECRET_SHORT}" REPORTHUB_BEAM_SECRET_SHORT="$(cat /proc/sys/kernel/random/uuid | sed 's/[-]//g' | head -c 20)" REPORTHUB_BEAM_SECRET_LONG="ApiKey report-hub.${PROXY_ID} ${REPORTHUB_BEAM_SECRET_SHORT}" +SUPPORT_EMAIL=support-ccp@dkfz-heidelberg.de +PRIVATEKEYFILENAME=/etc/bridgehead/pki/${SITE_ID}.priv.pem diff --git a/lib/functions.sh b/lib/functions.sh index ded0cd9..5059829 100755 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -19,7 +19,7 @@ checkOwner(){ } printUsage() { - echo "Usage: bridgehead start|stop|update|install|uninstall PROJECTNAME" + echo "Usage: bridgehead start|stop|update|install|uninstall|enroll PROJECTNAME" echo "PROJECTNAME should be one of ccp|nngm|gbn" } diff --git a/lib/prerequisites.sh b/lib/prerequisites.sh index f4fd3be..2709a6f 100755 --- a/lib/prerequisites.sh +++ b/lib/prerequisites.sh @@ -43,7 +43,7 @@ fi # TODO: Make sure you're in the right directory, or, even better, be independent from the working directory. -log INFO "Checking ssl cert" +log INFO "Checking ssl cert for accessing bridgehead via https" if [ ! -d "certs" ]; then log WARN "TLS cert missing, we'll now create a self-signed one. Please consider getting an officially signed one (e.g. via Let's Encrypt ...)" @@ -60,6 +60,15 @@ if [ -e /etc/bridgehead/vault.conf ]; then fi fi +log INFO "Checking your beam proxy private key" + +if [ -e /etc/bridgehead/pki/${SITE_ID}.priv.pem ]; then + log INFO "Success - private key found." +else + log ERROR "Unable to find private key at /etc/bridgehead/pki/${SITE_ID}.priv.pem. To fix, please run bridgehead enroll ${PROJECT} and follow the instructions". + exit 1 +fi + log INFO "Success - all prerequisites are met!" hc_send log "Success - all prerequisites are met!" From f8b9aed7f52b1c0774b94afbbac20d23aad612eb Mon Sep 17 00:00:00 2001 From: Martin Lablans Date: Mon, 17 Oct 2022 15:09:18 +0200 Subject: [PATCH 016/213] Cleaning --- .gitignore | 8 +-- ccp/docker-compose.yml | 4 +- lib/generate.sh | 116 ----------------------------------------- lib/log.sh | 0 lib/prerequisites.sh | 20 +++---- site.dev.conf | 11 ---- 6 files changed, 13 insertions(+), 146 deletions(-) delete mode 100755 lib/generate.sh mode change 100644 => 100755 lib/log.sh delete mode 100644 site.dev.conf diff --git a/.gitignore b/.gitignore index d6c86b5..2c4c7ec 100644 --- a/.gitignore +++ b/.gitignore @@ -3,10 +3,4 @@ site-config/* ## Ignore site configuration -config/**/* -!config/**/*.default -landing/* -docker-compose.override.yml -site.conf -auth/* -certs/* +*/docker-compose.override.yml diff --git a/ccp/docker-compose.yml b/ccp/docker-compose.yml index 65343d6..2539d8e 100644 --- a/ccp/docker-compose.yml +++ b/ccp/docker-compose.yml @@ -25,8 +25,8 @@ services: - 80:80 - 443:443 volumes: - - ../certs:/tools/certs - - ../lib/traefik-configuration/:/configuration + - /etc/bridgehead/traefik-tls:/tools/certs:ro + - ../lib/traefik-configuration/:/configuration:ro - /var/run/docker.sock:/var/run/docker.sock:ro forward_proxy: diff --git a/lib/generate.sh b/lib/generate.sh deleted file mode 100755 index 9673055..0000000 --- a/lib/generate.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash - -if [ ! -d ./landing ] -then - mkdir landing -fi - -if [ ! -f ./landing/index.html ] -then - touch index.html -fi - -CENTRAL_SERVICES=" - CCP-IT - Monitoring Service - " - -LOCAL_SERVICES=" - Bridgehead - Reverse Proxy Traefik - " - -if [ "$project" = "dktk" ] || [ "$project" = "c4" ] || [ "$project" = "dktk-fed" ] -then - CENTRAL_SERVICES+=" - CCP-IT - Zentrale Patientenliste - - - CCP-IT - Dezentrale Suche - - - CCP-IT - Zentrale Suche - - - CCP-IT - Deployment-Server - - - CCP-IT - Zentraler Kontrollnummernerzeuger - - " -fi - -if [ "$project" = "dktk-fed" ] -then - LOCAL_SERVICES+=" - DKTK - Blaze - - " -fi - -cat > ./landing/index.html < - - - - - - Bridgehead Overview - - - - - - - - - -