Files

90 lines
2.5 KiB
Bash

#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
set -euxo pipefail
HOSTNAME=`hostname`
OPTS=`getopt -o h: --long hostname: -n 'parse-options' -- "$@"`
if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
echo "$OPTS"
eval set -- "$OPTS"
while true; do
case "$1" in
-h | --hostname ) HOSTNAME=$2; shift; shift ;;
-- ) shift; break ;;
* ) break ;;
esac
done
echo "Using HOSTNAME='$HOSTNAME'"
until mongo --eval "print(\"waited for connection\")"
do
echo "Wait for connection"
sleep .5
done
mongo localhost:27017/kogito <<-EOF
rs.initiate({
_id: "rs0",
members: [ { _id: 0, host: "${HOSTNAME}:27017" } ]
});
EOF
echo "Initiated replica set"
mongo localhost:27017/admin <<-EOF
db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
EOF
mongo -u admin -p admin localhost:27017/admin <<-EOF
db.runCommand({
createRole: "listDatabases",
privileges: [
{ resource: { cluster : true }, actions: ["listDatabases"]}
],
roles: []
});
db.runCommand({
createRole: "readChangeStream",
privileges: [
{ resource: { db: "", collection: ""}, actions: [ "find", "changeStream" ] }
],
roles: []
});
db.createUser({
user: "$MONGODB_USER",
pwd: "$MONGODB_PASSWORD",
roles: [
{ role: "readWrite", db: "kogito" },
{ role: "read", db: "local" },
{ role: "listDatabases", db: "admin" },
{ role: "readChangeStream", db: "admin" },
{ role: "read", db: "config" },
{ role: "read", db: "admin" }
]
});
EOF
echo "MongoDB initialized"