-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathconstruct-connection-strings.sh
More file actions
104 lines (85 loc) · 3.82 KB
/
construct-connection-strings.sh
File metadata and controls
104 lines (85 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env sh
# Constructs Redis and MongoDB connection strings based on environment variables
############################
### REDIS ###
############################
# Detect mode
REDIS_MODE="${REDIS_MODE:-standalone}"
# Only construct if URLs not already set
if [ -z "$REDIS_URL" ] || [ -z "$CELERY_BROKER_URL" ]; then
if [ "$REDIS_MODE" = "replication" ]; then
# Sentinel HA mode
echo "Redis mode: Sentinel HA"
REDIS_SENTINEL_SERVICE="${REDIS_SENTINEL_SERVICE:-snmp-redis-sentinel}"
REDIS_HEADLESS_SERVICE="${REDIS_HEADLESS_SERVICE:-snmp-redis-headless}"
REDIS_SENTINEL_PORT="${REDIS_SENTINEL_PORT:-26379}"
REDIS_PORT="${REDIS_PORT:-6379}"
REDIS_MASTER_NAME="${REDIS_MASTER_NAME:-mymaster}"
REDIS_DB="${REDIS_DB:-1}"
CELERY_DB="${CELERY_DB:-0}"
if [ -n "$REDIS_PASSWORD" ]; then
SENTINEL_SCHEME="sentinel://:${REDIS_PASSWORD}@${REDIS_SENTINEL_SERVICE}:${REDIS_SENTINEL_PORT}"
REDIS_HA_CHECK="redis://:${REDIS_PASSWORD}@${REDIS_HEADLESS_SERVICE}:${REDIS_PORT}"
else
SENTINEL_SCHEME="sentinel://${REDIS_SENTINEL_SERVICE}:${REDIS_SENTINEL_PORT}"
REDIS_HA_CHECK="redis://${REDIS_HEADLESS_SERVICE}:${REDIS_PORT}"
fi
REDBEAT_SCHEME="redis-sentinel://${REDIS_SENTINEL_SERVICE}:${REDIS_SENTINEL_PORT}"
# Celery broker uses sentinel://
: "${CELERY_BROKER_URL:=${SENTINEL_SCHEME}/${CELERY_DB}#master_name=${REDIS_MASTER_NAME}}"
# RedBeat uses redis-sentinel:// with master_name query
: "${REDIS_URL:=${REDBEAT_SCHEME}/${REDIS_DB}#master_name=${REDIS_MASTER_NAME}}"
SENTINEL_CHECK="redis://${REDIS_SENTINEL_SERVICE}:${REDIS_SENTINEL_PORT}"
# Checking specific databases
REDIS_HA_DB_0="${REDIS_HA_CHECK}/${REDIS_DB}"
REDIS_HA_DB_1="${REDIS_HA_CHECK}/${CELERY_DB}"
# For healthcheck / wait-for-dep - space-separated list
REDIS_DEPENDENCIES="${SENTINEL_CHECK} ${REDIS_HA_CHECK} ${REDIS_HA_DB_0} ${REDIS_HA_DB_1}"
else
# Standalone mode
echo "Redis mode: Standalone"
REDIS_HOST="${REDIS_HOST:-snmp-redis}"
REDIS_PORT="${REDIS_PORT:-6379}"
if [ -n "$REDIS_PASSWORD" ]; then
BASE="redis://:$REDIS_PASSWORD@$REDIS_HOST:$REDIS_PORT"
else
BASE="redis://$REDIS_HOST:$REDIS_PORT"
fi
: "${REDIS_URL:=$BASE/${REDIS_DB:-1}}"
: "${CELERY_BROKER_URL:=$BASE/${CELERY_DB:-0}}"
# For healthcheck / wait-for-dep - space-separated list
REDIS_DEPENDENCIES="${REDIS_URL} ${CELERY_BROKER_URL}"
fi
############################
### MongoDB ###
############################
# Build MongoDB URI from environment variables
if [ -n "$MONGODB_PASSWORD" ]; then
# With authentication
if [ -n "$MONGODB_REPLICA_SET" ]; then
# Replica set
export MONGO_URI="mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@${MONGODB_HOST}/${MONGODB_DATABASE}?replicaSet=${MONGODB_REPLICA_SET}&authSource=${MONGODB_AUTH_SOURCE:-admin}&readPreference=primary"
else
# Standalone
export MONGO_URI="mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@${MONGODB_HOST}:${MONGODB_PORT}/${MONGODB_DATABASE}?authSource=admin"
fi
else
# Without authentication
if [ -n "$MONGODB_REPLICA_SET" ]; then
export MONGO_URI="mongodb://${MONGODB_HOST}/${MONGODB_DATABASE}?replicaSet=${MONGODB_REPLICA_SET}&authSource=admin&retryWrites=false&readPreference=primary"
else
export MONGO_URI="mongodb://${MONGODB_HOST}:${MONGODB_PORT}/${MONGODB_DATABASE}?authSource=admin"
fi
fi
if [ -n "$MONGODB_REPLICA_SET" ]; then
export MONGO_WAIT="mongodb://${MONGODB_HOST}/${MONGODB_DATABASE}?replicaSet=${MONGODB_REPLICA_SET}&authSource=admin&retryWrites=false"
else
export MONGO_WAIT="mongodb://${MONGODB_HOST}:${MONGODB_PORT}/${MONGODB_DATABASE}?authSource=admin"
fi
export MONGO_WAIT
export MONGO_URI
export REDIS_URL
export CELERY_BROKER_URL
export REDIS_DEPENDENCIES
export REDIS_MODE
fi