wrapper.sh 1.42 KB
#!/usr/bin/env bash

set -e

INKLUSTER_IMAGE=brainfood/inkluster-dev

if [[ -e .inkluster.env ]]; then
	. .inkluster.env
fi

declare -a REST=()
while [[ $# -gt 0 ]]; do
	case "$1" in
		(-v)
			INKLUSTER_VOLUME_NAME="$2"
			shift 2
			;;
		(*)
			break
			;;
	esac
done

has_volume=
if [[ $INKLUSTER_VOLUME_NAME ]]; then
	docker volume inspect "inkluster-$INKLUSTER_VOLUME_NAME" 1>/dev/null 2>/dev/null || has_volume=1
fi

case "$1" in
	(reset)
		[[ $has_volume ]] && docker volume rm "inkluster-$INKLUSTER_VOLUME_NAME"
		exit
		;;
esac

declare -a docker_args=(--rm -i)

[[ -t 0 ]] && docker_args+=(-t)

docker_args+=(-v /:/srv/host-root)
docker_args+=(-w /srv/host-root/$PWD)
[[ -S /var/run/docker.sock ]] && docker_args+=(-v /var/run/docker.sock:/var/run/docker.sock)
[[ $SSH_AUTH_SOCK ]] && docker_args+=(-e "SSH_AUTH_SOCK=/srv/host-root/$SSH_AUTH_SOCK")
network=
if [[ $KUBECONFIG ]]; then
	network=host
	docker_args+=(-e "KUBECONFIG=/srv/host-root/$KUBECONFIG")
elif [[ -e $HOME/.kube/config ]]; then
	network=host
	docker_args+=(-v "$HOME/.kube/config:/home/tool/.kube/config")
fi

if [[ $network ]]; then
	docker_args+=(--network host)
fi

docker_args+=(-e MAP_UID="$(id -u)" -e MAP_GROUPS="$(id -G)")

if [[ $INKLUSTER_VOLUME_NAME ]]; then
	if [[ ! $has_volume ]]; then
		docker volume create "inkluster-$INKLUSTER_VOLUME_NAME"
	fi
	docker_args+=(-v "inkluster-$INKLUSTER_VOLUME_NAME":/run)
fi

docker run "${docker_args[@]}" "$INKLUSTER_IMAGE" "$@"