## TODO: check if root ## wipe everything out first ## kill mongo, mongos, mongo config if [ `whoami` != 'root' ]; then echo "Please run as root, sudo to root, or su -l root" exit fi mkdir -p /TestEnv/source/mongodb6/config_files # Install mongodb if not detected by apt-get if test -f "/TestEnv/source/mongodb6/$mshfile"; then echo "mongos installed, skipping." else echo "installing mongodb" /usr/bin/mongod apt-get install -y gnupg curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \ --dearmor echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list apt-get update v=6.0.2 sudo apt-get install -y mongodb-org=$v mongodb-org-server=$v mongodb-org-shell=$v mongodb-org-mongos=$v mongodb-org-tools=$v # Step 1, make sure ubuntu files are downloaded mshfile=mongosh-1.9.1-linux-x64-openssl3.tgz mdbfile=mongodb-linux-x86_64-ubuntu2004-6.0.6.tgz mongosh_source="https://downloads.mongodb.com/compass/$mshfile" mongodb_source="https://fastdl.mongodb.org/linux/$mdbfile" if test -f "/TestEnv/source/mongodb6/$mshfile"; then echo "mongosh downloaded skipping install." else echo "installing mshfile" cd /TestEnv/source/mongodb6 wget $mongosh_source cd /TestEnv/apps tar -zxvf /TestEnv/source/mongodb6/$mshfile fi if test -f "/TestEnv/source/mongodb6/$mdbfile"; then echo "mongodb downloaded skipping install." else echo "installing mdbfile" cd /TestEnv/source/mongodb6 wget $mongodb_source cd /TestEnv/apps tar -zxvf /TestEnv/source/mongodb6/$mdbfile fi # step 2 make sure mongodb user exists count=`grep mongodb /etc/passwd | cut -d ':' -f1 | wc -l` if [ "$count" != "0" ]; then echo "mongodb user exists, skipping creating user." else groupadd mongodb useradd mongodb -g mongodb passwd mongodb # You will need to enter a password here fi # step 3 download config templates config_tar=/TestEnv/source/mongodb6/mongo_config_files.tgz config_dir=/TestEnv/source/mongodb6/config_files echo "Testing if $config_tar exists." if test -f "$config_tar"; then echo "It exists." else echo "Downloading file" mkdir -p $config_dir wget http://odendata.com/docs/database/mongo/6/mongo_config_files.tgz -O $config_tar fi # step 4 Reinstall mongodb instances mkdir -p /TestEnv/env/bin/mongodb6 mkdir -p /TestEnv/apps/mongodb6 mkdir -p /TestEnv/logs/mongodb6 mkdir -p /TestEnv/init/mongodb6 echo "killing all mongo services" killall -q mongod killall -q mongos killall -q mongodb sleep 5 echo "Removing mongodb installations" rm -rvf /TestEnv/data/mongodb6/ rm -fv /TestEnv/logs/mongodb6/* rm -rv /TestEnv/init/mongodb6/* mkdir -p /TestEnv/data/mongodb6/node1 mkdir -p /TestEnv/data/mongodb6/node2 mkdir -p /TestEnv/data/mongodb6/node3 mkdir -p /TestEnv/data/mongodb6/node4 mkdir -p /TestEnv/data/mongodb6/node5 mkdir -p /TestEnv/data/mongodb6/node6 mkdir -p /TestEnv/data/mongodb6/mongos1 mkdir -p /TestEnv/data/mongodb6/mongodb_config1 mkdir -p /TestEnv/data/mongodb6/mongodb_config2 mkdir -p /TestEnv/data/mongodb6/mongodb_config3 chown -R mongodb.mongodb /TestEnv/data/mongodb6 chown -R mongodb.mongodb /TestEnv/logs/mongodb6 mkdir -p $config_dir tar -zxvf $config_tar -C $config_dir/ # step 6, make ssl files ---- skipped cd /etc/ssl/ #$keyfile=/TestEnv/init/mongodb6/mongodb-cert.key #$crtfile=/TestEnv/init/mongodb6/mongodb-cert.crt #$pemfile=/TestEnv/init/mongodb6/mongodb.pem #openssl req -newkey rsa:2048 -new -x509 -days 3650 -nodes -out $crtfile -keyout $keyfile #cat $keyfile $crtfile > $pemfile # step 7 , make config and start files # TODO # make config files, mongod, router, config, subsitutue variables # make replica sets # shard replica sets # post test # env files -- 7 different ones, one for router, one for each node, six data nodes # startstop files, one for each service, one for all start_file=/TestEnv/init/mongodb6/start_mongod echo "#!/bin/bash" > $start_file chmod 755 $start_file echo "making data nodes" export TEMP_PORT=3000 mkdir -p /TestEnv/logs/mongodb chown mongodb.mongodb /TestEnv/logs/mongodb/ for i in 1 2 3 4 5 6 ; do d=/TestEnv/init/mongodb6 s=$config_dir/mongo6_template.cfg f=$d/mongo6_node$i.cfg cp $s $f R=r1 NODE=$i sed -i "s/__NODE__/$NODE/" $f sed -i "s/__REPNAME__/$R/" $f sed -i "s/__PORT__/$TEMP_PORT/" $f let TEMP_PORT=$TEMP_PORT+1 done TEMP_PORT=3100 for i in 1 2 3; do d=/TestEnv/init/mongodb6 s=$config_dir/mongo6_config_template.cfg f=$d/mongo6_config_node$i.cfg cp $s $f R=r1 NODE=$i sed -i "s/__NODE__/$NODE/" $f sed -i "s/__PORT__/$TEMP_PORT/" $f let TEMP_PORT=$TEMP_PORT+1 done TEMP_PORT=3306 for i in 1 ; do d=/TestEnv/init/mongodb6 s=$config_dir/mongo6_router_template.cfg f=$d/mongo6s_node$i.cfg cp $s $f R=r1 NODE=$i sed -i "s/__NODE__/$NODE/" $f sed -i "s/__PORT__/$TEMP_PORT/" $f let TEMP_PORT=$TEMP_PORT+1 done # step 8 initialize mongo