This repository has been archived on 2024-02-03. You can view files and clone it, but cannot push or open issues or pull requests.
flow-packer/files/scripts/bootstrap.sh

103 lines
3.3 KiB
Bash

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
function usage() {
echo "usage: $0 [options]"
echo "Bootstraps the flow instance"
echo ""
echo "-h,--help: print this help message"
echo "--network-forge-flow-subnet: The subnet for the forge flow docker network. (default: 172.20.0.0/24)"
echo "--root-domain: The root domain of the traefik. (default: localhost)"
echo "--traefik-container-ipv4-address: The IPv4 address of the traefik container. (default: 172.20.0.2)"
echo "--traefik-check-new-version: Set to true to enable automatic checks for new Traefik versions. (default: true)"
echo "--traefik-external-ssh-port: The external SSH port to expose for Gitea. (default: 22)"
}
while [[ $# -gt 0 ]]; do
arg="$1"
case $arg in
-h|--help)
usage
exit 0
;;
--network-forge-flow-subnet)
NETWORK_FORGE_FLOW_SUBNET=$2
shift
shift
;;
--root-domain)
ROOT_DOMAIN=$2
shift
shift
;;
--traefik-container-ipv4-address)
TRAEFIK_CONTAINER_IPV4_ADDRESS=$2
shift
shift
;;
--traefik-check-new-version)
TRAEFIK_CHECK_NEW_VERSION=$2
shift
shift
;;
--traefik-external-ssh-port)
TRAEFIK_EXTERNAL_SSH_PORT=$2
shift
shift
;;
--traefik-log-level)
TRAEFIK_LOG_LEVEL=$2
shift
shift
;;
--traefik-send-anonymous-usage)
TRAEFIK_SEND_ANONYMOUS_USAGE=$2
shift
shift
;;
--traefik-version)
TRAEFIK_VERSION=$2
shift
shift
;;
*)
# unknown argument
shift
;;
esac
done
source /etc/flow/setup/env
DOCKER_ROOT="/home/${FLOW_USERNAME}/Docker/flow"
export NETWORK_FORGE_FLOW_SUBNET="${NETWORK_FORGE_FLOW_SUBNET:-172.20.0.0/24}"
export ROOT_DOMAIN="${ROOT_DOMAIN:-localhost}"
export TRAEFIK_DOCKER_DIR="${DOCKER_ROOT}/traefik"
export TRAEFIK_CHECK_NEW_VERSION="${TRAEFIK_CHECK_NEW_VERSION:-true}"
export TRAEFIK_EXTERNAL_SSH_PORT="${TRAEFIK_EXTERNAL_SSH_PORT:-22}"
export TRAEFIK_LOG_LEVEL="${TRAEFIK_LOG_LEVEL:-info}"
export TRAEFIK_SEND_ANONYMOUS_USAGE="${TRAEFIK_SEND_ANONYMOUS_USAGE:-false}"
export TRAEFIK_VERSION="${TRAEFIK_VERSION:-v2.6.3}"
export TRAEFIK_CONTAINER_IPV4_ADDRESS="${TRAEFIK_CONTAINER_IPV4_ADDRESS:-172.20.0.2}"
export TRAEFIK_SHARED_MOUNT_POINT="/flow/shared/traefik"
mkdir -p "${DOCKER_ROOT}"
envsubst < "${ROOT_SETUP_DIRECTORY}/template/compose/docker-compose.yaml" > "${DOCKER_ROOT}/docker-compose.yaml"
# Traefik setup section
mkdir -p "${TRAEFIK_DOCKER_DIR}"
cp "${ROOT_SETUP_DIRECTORY}/template/traefik/Dockerfile" "${TRAEFIK_DOCKER_DIR}/Dockerfile"
for i in $(find "${ROOT_SETUP_DIRECTORY}/template/traefik" -type f -mindepth 1 -not -name *Dockerfile); do
file=$(basename ${i})
envsubst < "${ROOT_SETUP_DIRECTORY}/template/traefik/${file}" > "${TRAEFIK_DOCKER_DIR}/${file}"
done
chown -R ${FLOW_USERNAME}:${FLOW_USERNAME} /home/${FLOW_USERNAME}/Docker
chmod -R a-rwx,u+rwX /home/${FLOW_USERNAME}/Docker
rc-service docker start