51 lines
1.8 KiB
Plaintext
51 lines
1.8 KiB
Plaintext
export STACKSPIN="$HOME/stackspin"
|
|
_stackspin_cluster_cache=/var/tmp/stackspin-cluster
|
|
|
|
# Stackspin CLI Wrapper
|
|
# Initialize once with "stack select example.org",
|
|
# then it loads the last selected one on startup.
|
|
# Presumes a mapping like the following in your ssh config:
|
|
# Host example.org
|
|
# Hostname [IP]
|
|
stack() {
|
|
case "$1" in
|
|
# stackspin administration
|
|
(select) shift
|
|
export _cluster_name="$1"
|
|
export _cluster_ip="$(ssh -G "$_cluster_name" | grep --max-count 1 "^hostname " | cut -d " " -f2-)"
|
|
export CLUSTER_DIR="$STACKSPIN/clusters/$_cluster_name"
|
|
export KUBECONFIG="$CLUSTER_DIR/kube_config_cluster.yml"
|
|
# Uncomment the line below to always use the main stackspin repo, even when running in a fork.
|
|
#export GITLAB_CI="true"
|
|
echo Selected "$_cluster_name" with IP "$_cluster_ip"
|
|
echo "$_cluster_name" >"$_stackspin_cluster_cache"
|
|
;;
|
|
(sso) shift
|
|
builtin cd "$STACKSPIN"
|
|
"$0" exec single-sign-on-login -- flask "$@";;
|
|
(user)
|
|
if test "$2" = "init"
|
|
then mail="$3"
|
|
shift 3
|
|
stack user create "$mail"
|
|
stack user update "$mail" name "$*"
|
|
echo "Initialized user '$*' with email '$mail'"
|
|
else "$0" exec single-sign-on-login -- flask "$@"
|
|
fi;;
|
|
# app clis via kubectl
|
|
(occ) "$0" exec nc-nextcloud -it -- su www-data -s /bin/bash -c "php $*";;
|
|
(exec) shift
|
|
kubectl exec -n $("$0" pod "$1") "${@:2}";;
|
|
(pod) shift
|
|
kubectl get pods --all-namespaces -o=custom-columns=S:.metadata.namespace,N:.metadata.name --no-headers "${@:2}" | grep --color=never "$1";;
|
|
# stackspin bare
|
|
(*) builtin cd "$STACKSPIN"
|
|
if test $# -gt 1 -a "$1" = install
|
|
then shift && "./install/install-$1.sh" || ./install/install-app.sh "$@"
|
|
else python3 -m stackspin "$_cluster_name" "$@"
|
|
fi;;
|
|
esac
|
|
}
|
|
cat "$_stackspin_cluster_cache" 2>/dev/null |
|
|
while read cluster; do stack select "$cluster"; done
|