Sleds/buildvm/scat/sl_initmongo.sh

134 lines
5.2 KiB
Bash

#!/bin/bash
# sl_initmongo.sh
# Initialize both CG and MongoDB server instance on this host.
#
# Usage: <<MUST BE RUN AS ROOT>>
# sl_initmongo.sh
#
# This will check and correct permissions, and will overwrite or
# destroy existing keys, uuid's, etc.
# Requires:
# No Tomcat requirements in MongoDB setup
# What this does:
# . Verifies environment; if something is mis-configured, exits
# * You must have a running mongod and valid /etc/mongod.conf file
# . Generates a 36 character UUID and writes the value to
# $SEQUENCELOGICHOME/cg/public/uuid.txt
# If the file already exists, requires confirmation to overwrite
# . Creates a public/private key pair for the localhost
# H1) Places private key into $SEQUENCELOGICHOME/cg/private/cg-{uuid}.pem
# H2) Places public key into $SEQUENCELOGICHOME/cg/public/cg-{uuid}.pem
# . Configures database if necessary
# . Creates the 000000 VAN
# NOTE - when initializing a MongoDB contained in a replica set,
# initialize the DB only once, on the primary.
# setup
SCRIPT=$0
echo "[OK] Script: ${SCRIPT}"
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=`dirname ${SCRIPT}`
echo "[OK] This script is located at: $SCRIPTPATH"
# Source the mongo helpers script. It performs mongo-set specific required "helping"
source ${SCRIPTPATH}/sl_mongohelp.sh
# need to be root
isUser root
if [ $? = 0 ]; then
echo "[ERROR] You must be root to run this script"
exit 1;
fi
# env
#verifyEnvironment;
# CG public/private keys
if [ ! -f "${SEQUENCELOGICHOME}/cg/public/cg-public.pem" ]; then
# This server
createKeys private/cg-private.pem public/cg-public.pem
rm ${SEQUENCELOGICHOME}/cg/private/cloudguard-keyring.iks
rm ${SEQUENCELOGICHOME}/cg/private/cloudguard-keyring.iks.public
else
echo "[OK] Using existing server keys; server public: "
cat ${SEQUENCELOGICHOME}/cg/public/cg-public.pem
fi
# Check that mongo is working
MPID=`ps auxwww | grep mongod | grep "$MONGO_CONFIG" | grep -v grep`
if [ "$MPID" = "" ]; then
echo "[ERROR] Unable to detect running mongod process using config file: ${MONGO_CONFIG}"
#exit 2;
fi
# create DB (just adds a row to the dummy "initialized" collection)
now=`date '+%Y%m%dT%H:%M:%S'`
mongoPutDoc initialized "$now" "{_id:\"${now}\", initialized:true}"
### DEFAULT VAN/PMO
VANUUID=000000
if [ ! -f $SEQUENCELOGICHOME/cg/public/vanpub-${VANUUID}.pem ]; then
createKeys private/van-${VANUUID}.pem public/vanpub-${VANUUID}.pem
fi
# ... remainder "destroys" existing values but that's OK
# create VAN
vanname="SEQUENCELOGIC VAN"
vanid="urn:sl:${VANUUID}:::"
#vantp=`getTtyInput "" "VAN token passphrase?" "echo"`
#vansp=`getTtyInput "" "VANstatus passphrase?" "echo"`
#suggest=`hostname | sed 's/[.].*$//'`
#vanalias=`getTtyInput "" "VAN alias (suggest you use: ${suggest})?" "echo"`
vantp="madman12"
vansp="madman12"
vanalias="sleds"
vandoc="{_id:\"${vanid}\", name:\"${vanname}\", activationBypassCode:\"NickiLovesMariah\", alias:\"${vanalias}\", statusPassphrase:\"${vansp}\", tokenPassphrase:\"${vantp}\"}"
mongoPutDoc van "${vanid}" "${vandoc}"
#Now fetch any needed system variables
SEQUENCE_LOGIC_ENV = facter --external-dir=/etc/facter/facts.d sequence_logic_env
source /sl/scat/sl_setvanpolicy.sh ${vanid}
source /sl/scat/sl_setvanquota.sh ${vanid}
source /sl/scat/sl_setteams.sh ${VANUUID}
CTRLDOC="{_id:\"scat-0\", recipe:\"mongo\", flavor:\"instance\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
# No mongo! mongoPutDoc scat_control "scat-0" "$CTRLDOC"
CTRLDOC="{_id:\"scat-1\", recipe:\"k2daemon\", flavor:\"instance\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-1" "$CTRLDOC"
CTRLDOC="{_id:\"scat-2\", recipe:\"tomcat\", flavor:\"all\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-2" "$CTRLDOC"
CTRLDOC="{_id:\"scat-3\", recipe:\"robot-infrastructure\", flavor:\"all\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-3" "$CTRLDOC"
CTRLDOC="{_id:\"scat-4\", recipe:\"robot-workflow\", flavor:\"ingest\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-4" "$CTRLDOC"
CTRLDOC="{_id:\"scat-5\", recipe:\"robot-workflow\", flavor:\"ocr\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-5" "$CTRLDOC"
CTRLDOC="{_id:\"scat-6\", recipe:\"robot-workflow\", flavor:\"classification\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-6" "$CTRLDOC"
CTRLDOC="{_id:\"scat-7\", recipe:\"k2proxy\", flavor:\"instance\", van:\"${VANID}\", device:\"0001\", status:\"enabled\"}"
mongoPutDoc scat_control "scat-7" "$CTRLDOC"
echo "[OK] sequencelogic/van database contains:"
mongoExec "db.van.find()"
echo
# applies to all user/office creation below
export PMOPREFS="{\"avatar\":\"\",\"sharePhone\":true,\"shareEmail\":true,\"shareAvatar\":true,\"shareUsername\":true,\"shareFullname\":true,\"searchUsername\":true,\"searchPhone\":true,\"searchEmail\":true,\"receiveOptInNews\":true,\"msgDR\":true,\"msgRR\":true,\"msgTBR\":true,\"msgTTL\":3600, \"EST\":true}"
# Lastly, make sure sequencelogic owns everything...
# not needed - chown -R sequencelogic:sequencelogic ${SEQUENCELOGICHOME}/*
exit 0