|
| 1 | +#!/bin/sh |
| 2 | +# Setup rabbitmq vhost and users |
| 3 | +export NAMESPACE="faf-infra" |
| 4 | + |
| 5 | +# fail on errors |
| 6 | +set -e |
| 7 | + |
| 8 | +. ./k8s-helpers.sh |
| 9 | + |
| 10 | +check_resource_exists_or_fail secret mongodb |
| 11 | +check_resource_exists_or_fail statefulset mongodb |
| 12 | +check_resource_exists_or_fail pod mongodb-0 |
| 13 | + |
| 14 | +ADMIN_USER=$(get_config_value mongodb MONGO_INITDB_ROOT_USERNAME) |
| 15 | +ADMIN_PASSWORD=$(get_secret_value mongodb MONGO_INITDB_ROOT_PASSWORD) |
| 16 | + |
| 17 | +run_mongo_query() { |
| 18 | + kubectl -n $NAMESPACE exec -i mongodb-0 -- mongosh --quiet --username "$ADMIN_USER" --password "$ADMIN_PASSWORD" --authenticationDatabase admin --eval "$1" |
| 19 | +} |
| 20 | + |
| 21 | +# Function to check if a user exists |
| 22 | +user_exists() { |
| 23 | + DATABASE=$1 |
| 24 | + USERNAME=$2 |
| 25 | + RESULT=$(run_mongo_query "db.getSiblingDB(\"$DATABASE\").getUser(\"$USERNAME\");") |
| 26 | + |
| 27 | + if [ "$RESULT" != "null" ]; then |
| 28 | + return 0 # User exists (true) |
| 29 | + else |
| 30 | + return 1 # User does not exist (false) |
| 31 | + fi |
| 32 | +} |
| 33 | + |
| 34 | +create_user_and_db() { |
| 35 | + SERVICE_NAMESPACE=$1 |
| 36 | + SERVICE_NAME=$2 |
| 37 | + DB_USER=$(NAMESPACE=$SERVICE_NAMESPACE get_config_value "$SERVICE_NAME" "$3") |
| 38 | + DB_PASSWORD=$(NAMESPACE=$SERVICE_NAMESPACE get_secret_value "$SERVICE_NAME" "$4") |
| 39 | + DB_NAME=$(NAMESPACE=$SERVICE_NAMESPACE get_config_value "$SERVICE_NAME" "$5") |
| 40 | + |
| 41 | + # Create user if it does not exist |
| 42 | + if user_exists "$DB_NAME" "$DB_USER"; then |
| 43 | + echo "User $DB_USER already exists in db $DB_NAME. Skipping user creation." |
| 44 | + else |
| 45 | + run_mongo_query <<MONGODB_SCRIPT |
| 46 | +use ${MONGO_NODEBB_DATABASE}; |
| 47 | +db.createUser( { user: "${DB_USER}", pwd: "${DB_PASSWORD}", roles: [ "readWrite" ] } ); |
| 48 | +db.grantRolesToUser("${DB_NAME}",[{ role: "clusterMonitor", db: "admin" }]); |
| 49 | +MONGODB_SCRIPT |
| 50 | + echo "User $DB_USER created in db $DB_NAME." |
| 51 | + fi |
| 52 | +} |
| 53 | + |
| 54 | +create_user_and_db faf-apps wikijs DB_USER DB_PASS DB_NAME |
| 55 | + |
| 56 | +echo "All users and databases have been processed." |
0 commit comments