Shell腳本一鍵部署MongoDB

Shell腳本一鍵部署MongoDB

基本實施思路:

安裝MongoDB→創建多實例(創建數量可根據需求自定義)→開啓所有實例並展示端口

#!/bin/bash
#自動安裝MongoDB
#
#檢查MongoDB是否已安裝
local="/etc/yum.repos.d/MongoDB.repo"
rpm -q mongodb-org &> /dev/null
if [ $? -ne 0 ];then
#配置本地YUM源
	ls /etc/yum.repos.d/ | grep Mongo &> /dev/null
	if [ $? -ne 0 ];then
		touch $local
		echo "[mongodb-org]" >> $local
		echo "name=mongodb" >> $local
		echo "baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.6/x86_64/" >> $local
		echo "gpgcheck=1" >> $local
		echo "enabled=1" >> $local 
		echo "gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc" >> $local
		yum list
		yum install mongodb-org -y
	else
		echo "配置本地YUM源配置完成"
		yum list
		yum install mongodb-org -y
	fi
else
	echo "MongoDB已安裝~~~~~"
fi
#反覆比對密鑰(可能不會一次成功)
for ((i=1;i<=10;i++))
do
	rpm -q mongodb-org &> /dev/null
	if [ $? -ne 0 ];then
		yum install mongodb-org -y
	fi
done
#監聽所有網段
sed -i "/bindIp/s/127.0.0.1/0.0.0.0/" /etc/mongod.conf
systemctl start mongod.service
#檢測是否啓動正常
netstat -atnp | grep 27017 &> /dev/null
if [ $? -eq 0 ];then
	echo "MongoDB服務啓動,一號實例建立完成"
else
	echo "啓動失敗"
	exit 1
fi
echo "=========================================================="
echo "即將開始創建實例"
sleep 5
#死循環進行多實例的創建
for ((i=2;i>0;i++))
do
#判斷數據目錄與日誌文件是否存在
if [ ! -e /data/mongodb/mongodb$i ] && [ ! -e /data/mongodb/mongod$i.log ];then
	read -p "是否開始創建第$i個實例(y/n):"  create
	p=`expr $i - 1`
	case $create in
		y)
#建立數據存放路徑
			mkdir -p /data/mongodb/mongodb$i
#新建多實例對應的日誌文件
			touch /data/mongodb/mongodb$i.log
#日誌文件提權
			chmod 777 /data/mongodb/mongodb$i.log
#複製原配置文件
			cp -p /etc/mongod.conf /etc/mongod$i.conf
#修改對應的數據文件存放路徑&日誌文件路徑
			sed -i "/path/s/\/var\/log\/mongodb\/mongod.log/\/data\/mongodb\/mongodb$i.log/" /etc/mongod$i.conf
			sed -i "/dbPath/s/\/var\/lib\/mongo/\/data\/mongodb\/mongodb$i/" /etc/mongod$i.conf
			point=`cat /etc/mongod.conf | grep port | awk '{print $2}'`
#更改實例對應的端口號
			sed -i "/port/s/27017/`expr $point + $p`/" /etc/mongod$i.conf
#啓動對應實例
			mongod -f /etc/mongod$i.conf
			netstat -atnp | grep $point &> /dev/null
			if [ $? -eq 0 ];then
				echo "$i號實例開啓成功"
			else
				echo "致命錯誤"
				exit 1
			fi
			;;
		n)
			echo "本次共創建$p個實例(包括一號實例)"
#展示所有實例端口號
			netstat -atnp | grep mongod | awk '{print $4}' | awk -F: '{print $2}' > shili
			echo "端口號爲:"
			cat shili
			break ;;
		*)
			echo "請輸入y/n,別搞些有的沒的"
	esac
else
	echo "$i號實例已創建" 
fi
done
rm -rf shili
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章