40 lines
1.3 KiB
Django/Jinja
40 lines
1.3 KiB
Django/Jinja
#!/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
|