Housekeeping and script hardening in /srv/docker/bridgehead. Existing installations need to run bridgehead uninstall, bridgehead install.

This commit is contained in:
Martin Lablans
2022-05-09 15:13:38 +02:00
parent 445add6d30
commit 334f82661b
13 changed files with 123 additions and 101 deletions

View File

@ -1,9 +1,20 @@
#!/bin/bash
source lib/functions.sh
## Check for file permissions
if ! id "bridgehead" &>/dev/null; then
log ERROR "User bridgehead does not exist. Please consult readme for installation."
exit 1
fi
COUNT=$(find . ! -user bridgehead |wc -l)
if [ $COUNT -gt 0 ]; then
log ERROR "$COUNT files in $(pwd) are not owned by user bridgehead. Run find $(pwd) ! -user bridgehead to see them, chown -R bridgehead $(pwd) to correct this issue."
exit 1
fi
## Check if user is a su
echo "Welcome to the starting a bridgehead. We will get your instance up and running in no time"
echo "First we will check if all prerequisites are met ..."
log INFO "Checking if all prerequisites are met ..."
prerequisites="git docker docker-compose"
for prerequisite in $prerequisites; do
$prerequisite --version 2>&1
@ -15,54 +26,49 @@ for prerequisite in $prerequisites; do
# TODO: Check for specific version
done
echo "Checking /etc/bridgehead/"
log INFO "Checking configuration ..."
## Download submodule
if [ ! -d "/etc/bridgehead/" ]; then
echo "Please set up the config folder. Instruction are in the readme."
log ERROR "Please set up the config folder at /etc/bridgehead. Instruction are in the readme."
exit 1
else
echo "Done"
fi
echo "Checking /etc/bridgehead/site.conf"
#check if site.conf is created
if [ ! -f /etc/bridgehead/site.conf ]; then
echo "Please create your specific site.conf file from the site.dev.conf"
log ERROR "Please create your specific site.conf file from the site.dev.conf"
exit 1
else
echo "Done"
fi
#Load site specific variables
source /etc/bridgehead/site.conf
# TODO: Check all required variables here in a generic loop
if [ -z "$site_name" ]; then
echo "Please set site_name"
log ERROR "Please set site_name."
exit 1
fi
echo "Checking project config"
#check if project env is present
if [ -d "/etc/bridgehead/${project}.env" ]; then
echo "Please copy the tempalte from ${project} and put it in the /etc/bridgehead-config/ folder"
log ERROR "Project config not found. Please copy the template from ${project} and put it under /etc/bridgehead-config/${project}.env."
exit 1
else
echo "Done"
fi
echo "Checking ssl cert"
# TODO: Make sure you're in the right directory, or, even better, be independent from the working directory.
## Create SSL Cert
if [ ! -d "/certs" ]; then
echo "SSL cert missing, now we create one. Please consider getting a signed one"
mkdir certs
log INFO "Checking ssl cert"
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 ...)"
mkdir -p certs
fi
if [ -d "/etc/bridgehead/traefik.crt" ]; then
if [ -e "/etc/bridgehead/traefik.crt" ]; then
openssl req -x509 -newkey rsa:4096 -nodes -keyout certs/traefik.key -out certs/traefik.crt -days 365
fi
echo "All prerequisites are met!"
log INFO "Success - all prerequisites are met!"
exit 0