diff --git a/libre b/libre new file mode 100755 index 0000000000000000000000000000000000000000..4d0a16f4b0ba741dfe235fc5221a0ba3c3670e29 --- /dev/null +++ b/libre @@ -0,0 +1,94 @@ +#!/bin/bash +export NS=`pwd | rev | cut -d'/' -f 2 | rev | sed 's/\./-/'` +export DOMAIN=`pwd | rev | cut -d'/' -f 2 | rev` +export SUBDOMAIN=`pwd | rev | cut -d'/' -f 1 | rev` +export FQDN=${SUBDOMAIN}-${NS} +export FQDN_DOTS=${SUBDOMAIN}.`echo $DOMAIN | sed 's/\(.*\)-/\1./'` +export PG_DOMAIN=$NS +export EPOCH=`date "+%s"` +export NUAGE_URL=`kubectl -n $NS get ing -o custom-columns=HOST:spec.rules[*].host --selector=app.kubernetes.io/name=nextcloud --no-headers=true` +export BUCKET=${FQDN} + +export S3_SECRET=${NS}-dumps + +for key in `kubectl -n ${NS} get secrets ${S3_SECRET} -o json | jq -r '.data | keys | .[]'`; do + #echo "loading $key into env..." + export $key=`kubectl -n ${NS} get secrets ${S3_SECRET} -o json | jq -r ".data.$key" | base64 -d` + #echo "done." +done + + +function show_usage { + echo "Usage:" + echo " - apply" + echo " - diff" + echo " - update" + echo " - changens" + exit 1 +} + +if [ $# -eq 0 ]; then + show_usage +fi + +export VERSION=stable +source ./.env +if [ "${APP}" = "nextcloud" ]; then + if [ "${VERSION}" = "alpha" ]; then + #cat ./version.php | grep 'array(' | cut -d\( -f2 | cut -d\) -f1 | sed 's/,/\./g' + export NC_VERSION=21.0.2.1 + export NC_IMAGE_TAG=21.0.2-2021-07-06 + export NC_WEB_IMAGE_TAG=21.0.2-web-2021-07-06 + else + export NC_VERSION=20.0.11.1 + export NC_IMAGE_TAG=20.0.11-2021-08-03 + export NC_WEB_IMAGE_TAG=20.0.11-web-2021-08-03 + fi +fi + +create_update_job_nc () { + if [ "${APP}" = "nextcloud" ]; then + kubectl -n $NS delete job update-nc + libre apply ../../common/nextcloud/other-manifests/update-job.yml + fi +} + +case "$1" in + apply|diff) + if [ -z "$2" ]; then + manifest="../../common/$APP/manifests/app.yml" + if [ -f "$manifest" ]; then + cat "${manifest}" | envsubst '$BUCKET $NC_VERSION $NC_IMAGE_TAG $NC_WEB_IMAGE_TAG $ALLOWED_HOSTS $NS $EPOCH $NUAGE_URL $PG_DOMAIN $DOMAIN $SUBDOMAIN $FQDN $FQDN_DOTS $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY'| /home/deploy/libre-cli -t - | kubectl -n ${NS} $1 -f - + else + echo "Manifest $manifest not found" + exit + fi + else + cat "${@:2}" | envsubst '$BUCKET $NC_VERSION $NC_IMAGE_TAG $NC_WEB_IMAGE_TAG $ALLOWED_HOSTS $NS $EPOCH $NUAGE_URL $PG_DOMAIN $DOMAIN $SUBDOMAIN $FQDN $FQDN_DOTS $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY'| /home/deploy/libre-cli -t - | kubectl -n ${NS} $1 -f - + fi;; + update) + echo $FQDN_DOTS + libre diff > /tmp/diff + retVal=$? # returns 1 if diff + if [ $retVal -ne 0 ]; then # if diff + if [ "$2" = "--batch" ]; then + cat /tmp/diff | grep -v "value:\|image\|generation\|+++\|---\|@@\|diff" | grep "^+\|^-" + retVal=$? # returns 1 if grep + if [ $retVal -ne 1 ]; then + read -p "Ctrl-c to not apply the diff" + fi + else + cat /tmp/diff + read -p "Ctrl-c to not apply the diff" + fi + libre apply + create_update_job_nc + else + echo "Nothing to update, good job!" + fi;; + changens) + kubens $NS;; + *) + show_usage +esac +