52 lines
1.4 KiB
YAML
52 lines
1.4 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: mongo-init
|
|
data:
|
|
init.sh: |
|
|
#!/bin/bash
|
|
|
|
# Need to wait for the readiness health check to pass so that the
|
|
# mongo names resolve. This is kind of wonky.
|
|
until ping -c 1 ${HOSTNAME}.mongo; do
|
|
echo "waiting for DNS (${HOSTNAME}.mongo)..."
|
|
sleep 2
|
|
done
|
|
|
|
until /usr/bin/mongo --eval 'printjson(db.serverStatus())'; do
|
|
echo "connecting to local mongo..."
|
|
sleep 2
|
|
done
|
|
echo "connected to local."
|
|
|
|
HOST=mongo-0.mongo:27017
|
|
|
|
until /usr/bin/mongo --host=${HOST} --eval 'printjson(db.serverStatus())'; do
|
|
echo "connecting to remote mongo..."
|
|
sleep 2
|
|
done
|
|
echo "connected to remote."
|
|
|
|
if [[ "${HOSTNAME}" != 'mongo-0' ]]; then
|
|
until /usr/bin/mongo --host=${HOST} --eval="printjson(rs.status())" \
|
|
| grep -v "no replset config has been received"; do
|
|
echo "waiting for replication set initialization"
|
|
sleep 2
|
|
done
|
|
echo "adding self to mongo-0"
|
|
/usr/bin/mongo --host=${HOST} \
|
|
--eval="printjson(rs.add('${HOSTNAME}.mongo'))"
|
|
fi
|
|
|
|
if [[ "${HOSTNAME}" == 'mongo-0' ]]; then
|
|
echo "initializing replica set"
|
|
/usr/bin/mongo --eval="printjson(rs.initiate(\
|
|
{'_id': 'rs0', 'members': [{'_id': 0, \
|
|
'host': 'mongo-0.mongo:27017'}]}))"
|
|
fi
|
|
echo "initialized"
|
|
|
|
while true; do
|
|
sleep 3600
|
|
done
|