provisioning-catalog/components/mariadb/cluster/templates/post-install.sh.j2

41 lines
1.3 KiB
Text
Raw Normal View History

#!/bin/bash
set -euo pipefail
_kubectl() {
if command -v kubectl >/dev/null 2>&1; then
command kubectl "$@"
elif command -v k0s >/dev/null 2>&1; then
k0s kubectl "$@"
else
echo "ERROR: no kubectl or k0s binary found on host" >&2; exit 127
fi
}
NAMESPACE="{{ taskserv.namespace }}"
COMPONENT="{{ taskserv.name }}"
DATABASES="{{ databases_space | default(value='') }}"
if [ -z "${DATABASES}" ]; then
echo "[post-install] no databases declared, skipping"
exit 0
fi
POD=$(_kubectl get pod --namespace "${NAMESPACE}" \
--selector "app.kubernetes.io/name=${COMPONENT}" \
-o jsonpath='{.items[0].metadata.name}')
for db in ${DATABASES}; do
exists=$(_kubectl exec --namespace "${NAMESPACE}" "${POD}" -- \
mariadb -u root --password="${MARIADB_ROOT_PASSWORD}" \
-sse "SELECT IF(COUNT(*),'exists','missing') FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${db}'" \
2>/dev/null | tr -d '[:space:]')
if [ "${exists}" = "exists" ]; then
echo "[post-install] database ${db} already exists"
else
echo "[post-install] creating database ${db}"
_kubectl exec --namespace "${NAMESPACE}" "${POD}" -- \
mariadb -u root --password="${MARIADB_ROOT_PASSWORD}" \
-e "CREATE DATABASE \`${db}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
fi
done