mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-03-03 01:40:19 +00:00
83 lines
1.7 KiB
Bash
Executable File
83 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Get the script's real directory, whether we're being called directly or via a symlink
|
|
if [ -L "$0" ]; then
|
|
export SCRIPT_DIR=$(dirname $(readlink "$0"))
|
|
else
|
|
export SCRIPT_DIR=$(dirname "$0")
|
|
fi
|
|
|
|
# Load all scriptlets
|
|
cd "$SCRIPT_DIR"
|
|
for lib in lib/*.sh; do
|
|
. $lib
|
|
done
|
|
|
|
TRAINER_IMAGE="preparevms_prepare-vms"
|
|
|
|
DEPENDENCIES="
|
|
aws
|
|
ssh
|
|
curl
|
|
jq
|
|
pssh
|
|
wkhtmltopdf
|
|
man
|
|
"
|
|
|
|
ENVVARS="
|
|
AWS_ACCESS_KEY_ID
|
|
AWS_SECRET_ACCESS_KEY
|
|
AWS_DEFAULT_REGION
|
|
SSH_AUTH_SOCK
|
|
"
|
|
|
|
check_envvars() {
|
|
status=0
|
|
for envvar in $ENVVARS; do
|
|
if [ -z "${!envvar}" ]; then
|
|
error "Environment variable $envvar is not set."
|
|
if [ "$envvar" = "SSH_AUTH_SOCK" ]; then
|
|
error "Hint: run 'eval \$(ssh-agent) ; ssh-add' and try again?"
|
|
fi
|
|
status=1
|
|
fi
|
|
done
|
|
return $status
|
|
}
|
|
|
|
check_dependencies() {
|
|
status=0
|
|
for dependency in $DEPENDENCIES; do
|
|
if ! command -v $dependency >/dev/null; then
|
|
warning "Dependency $dependency could not be found."
|
|
status=1
|
|
fi
|
|
done
|
|
return $status
|
|
}
|
|
|
|
check_image() {
|
|
docker inspect $TRAINER_IMAGE >/dev/null 2>&1
|
|
}
|
|
|
|
check_envvars \
|
|
|| die "Please set all required environment variables."
|
|
|
|
check_dependencies \
|
|
|| warning "At least one dependency is missing. Install it or try the image wrapper."
|
|
|
|
# Now check which command was invoked and execute it
|
|
if [ "$1" ]; then
|
|
cmd="$1"
|
|
shift
|
|
else
|
|
cmd=help
|
|
fi
|
|
fun=_cmd_$cmd
|
|
type -t $fun | grep -q function || die "Invalid command: $cmd"
|
|
$fun "$@"
|
|
|
|
# export SSH_AUTH_DIRNAME=$(dirname $SSH_AUTH_SOCK)
|
|
# docker-compose run prepare-vms "$@"
|