dashboard/scripts/backend

126 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Helper script for devs to run Rancher backend in a Docker container
VERSION="master-head"
ARGS=""
CLEAN="false"
CLEAN_ONLY="false"
IMAGE=""
LOC=${HOME}/.rancher-dashboard-backend
RESET="true"
usage() {
echo "Usage: $0 [-c] [-k] [-r] [-i IMAGE] [-t TAG] [-s]"
echo " -k Stop and remove previous backend, do not start new backend"
echo " -c Stop and remove previous backend"
echo " -r Don't reset admin password or wait for backend to start before returning"
echo " -i Use the specified image instead of rancher/rancher:${VERSION}"
echo " -t Use the specified image tag for the rancher/rancher image (ignored if -i is specified)"
echo " -s Single cluster management (disable the multi-cluster-management feature)"
echo ""
echo "This script will start and run a Rancher backend (unless -k is specified)"
echo ""
exit 1
}
while getopts "hsci:wrkt:" opt; do
case $opt in
h)
usage
;;
s)
ARGS="--features=multi-cluster-management=false"
;;
c)
CLEAN="true"
;;
k)
CLEAN="true"
CLEAN_ONLY="true"
;;
r)
RESET="false"
;;
i)
IMAGE=$OPTARG
;;
t)
VERSION=$OPTARG
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
DOCKER=$(docker version > /dev/null)
if [ $? -ne 0 ]; then
echo "Can not run Docker commands - is Docker running?"
exit 1
fi
if [ -n "$1" ]; then
VERSION=$1
fi
if [ "$CLEAN" == "true" ]; then
echo "Stopping and removing existing container"
if [ -f "${LOC}" ]; then
CONTAINER=$(cat $LOC)
echo "Container $CONTAINER"
docker stop $CONTAINER
docker rm $CONTAINER
rm ${LOC}
else
echo "Could not find an existing container"
fi
if [ "$CLEAN_ONLY" == "true" ]; then
exit 0
fi
fi
if [ -z "$IMAGE" ]; then
IMAGE="rancher/rancher:${VERSION}"
fi
echo "Version: ${VERSION}"
echo "Image : ${IMAGE}"
echo "Args :${ARGS}"
echo "Pulling image ..."
docker pull ${IMAGE}
echo "Starting container ..."
ID=$(docker run -it -d -p 80:80 -p 443:443 --restart unless-stopped --privileged ${IMAGE} ${ARGS})
if [ $? -ne 0 ]; then
echo "An error occurred running the Docker container"
exit 1
fi
rm -rf ${LOC}
echo ${ID} > ${LOC}
if [ "$RESET" == "true" ]; then
echo "Waiting for backend to become ready..."
TIME=0
while [[ "$(curl --insecure -s -m 5 -o /dev/null -w ''%{http_code}'' https://localhost)" != "200" ]]; do
sleep 5;
TIME=$((TIME + 5))
printf "\r${TIME}s ... "
done
echo ""
echo "Resetting password..."
PASSWORD=$(docker exec -ti ${ID} reset-password | tail -n 1)
echo "Admin Password: ${PASSWORD}"
echo "Use this URL to change the admin password:"
echo "https://127.0.0.1/dashboard/?setup=${PASSWORD}"
fi
echo ""