2021-08-19 17:26:25 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
2021-08-24 11:10:44 +08:00
|
|
|
|
|
|
|
|
|
|
#######################基础变量######################
|
|
|
|
|
|
#脚本目录
|
|
|
|
|
|
bin_path=$(cd `dirname $0`; pwd)
|
|
|
|
|
|
#脚本目录的上层目录
|
|
|
|
|
|
base_path=$(cd `dirname $0`/..; pwd)
|
|
|
|
|
|
#uuid
|
|
|
|
|
|
uuid=`uuidgen`
|
|
|
|
|
|
|
2021-08-19 17:26:25 +08:00
|
|
|
|
NUM_DIR="/usr/galaxyinstmp"
|
|
|
|
|
|
if [ ! -d "$NUM_DIR/" ];then
|
|
|
|
|
|
mkdir -p $NUM_DIR/
|
|
|
|
|
|
fi
|
2021-08-24 11:10:44 +08:00
|
|
|
|
#######################基础变量######################
|
2021-08-19 17:26:25 +08:00
|
|
|
|
|
|
|
|
|
|
cd parcels
|
|
|
|
|
|
|
|
|
|
|
|
function checkManager() {
|
|
|
|
|
|
echo "Check whether the current executor has Docker and Ansible environment, if not, install it"
|
|
|
|
|
|
echo -e "\033[31;1mThe process may prompt command not found error, please ignore it.\033[0m"
|
|
|
|
|
|
|
|
|
|
|
|
sleep 2
|
2021-08-24 11:10:44 +08:00
|
|
|
|
a=`docker -v 2>/dev/null`
|
2021-08-19 17:26:25 +08:00
|
|
|
|
hasDocker=$?
|
|
|
|
|
|
if [[ $hasDocker != '0' ]]; then
|
|
|
|
|
|
echo "
|
|
|
|
|
|
"
|
|
|
|
|
|
echo -e "\033[31;1mThis Docker not installed, Please install\033[0m"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
else
|
|
|
|
|
|
echo "
|
|
|
|
|
|
"
|
|
|
|
|
|
echo -e "\033[32;1mThis Docker installed, the version is:\033[0m"
|
|
|
|
|
|
docker -v
|
|
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2021-08-24 11:10:44 +08:00
|
|
|
|
|
|
|
|
|
|
a=`ansible --version 2>/dev/null`
|
2021-08-19 17:26:25 +08:00
|
|
|
|
hasAnsible=$?
|
|
|
|
|
|
if [[ $hasAnsible != '0' ]]; then
|
|
|
|
|
|
echo "
|
|
|
|
|
|
"
|
2021-08-24 11:10:44 +08:00
|
|
|
|
echo -e "\033[31;1mThis Ansible not installed, beginning install . . . \033[0m"
|
|
|
|
|
|
mkdir /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`
|
|
|
|
|
|
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`
|
|
|
|
|
|
cp ${bin_path}/software_packages/ansible/ansible.repo /etc/yum.repos.d/
|
|
|
|
|
|
sed -i -e "s#s_ansible_rpm_dir#${bin_path}#g" /etc/yum.repos.d/ansible.repo
|
|
|
|
|
|
yum clean all && yum makecache
|
|
|
|
|
|
yum -y -q install ansible
|
|
|
|
|
|
|
|
|
|
|
|
if [ $? == 0 ]; then
|
|
|
|
|
|
mv /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`/* /etc/yum.repos.d/
|
|
|
|
|
|
rm -r /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`
|
|
|
|
|
|
echo -e "\033[32;1mThis Ansible installed, the version is:\033[0m"
|
|
|
|
|
|
ansible --version
|
|
|
|
|
|
echo 1 > $NUM_DIR/checkManager
|
|
|
|
|
|
else
|
|
|
|
|
|
mv /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`/* /etc/yum.repos.d/
|
|
|
|
|
|
rm -r /etc/yum.repos.d/bak_`date '+%Y-%m-%d'`
|
2021-09-01 11:30:43 +08:00
|
|
|
|
echo -e "\033[32;1mThis Ansible install failed, please check it manually\033[0m"
|
2021-08-24 11:10:44 +08:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
2021-08-19 17:26:25 +08:00
|
|
|
|
else
|
|
|
|
|
|
echo "
|
|
|
|
|
|
"
|
|
|
|
|
|
echo -e "\033[32;1mThis Ansible installed, the version is:\033[0m"
|
|
|
|
|
|
ansible --version
|
|
|
|
|
|
echo 1 > $NUM_DIR/checkManager
|
|
|
|
|
|
fi
|
2021-08-24 11:10:44 +08:00
|
|
|
|
|
2021-08-19 17:26:25 +08:00
|
|
|
|
sleep 5
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function checkCluster() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
echo "Check the environment to be deployed, including JDK, PIP, Docker, Firewall, TimeZone if not installed"
|
|
|
|
|
|
sleep 2
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts environment.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
clear
|
|
|
|
|
|
echo -e "\033[32;1mEnvironmental check complete, ready for installation\033[0m"
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
echo 1 > $NUM_DIR/checkCluster
|
|
|
|
|
|
else
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#记录组件安装次数
|
|
|
|
|
|
function recordinstnum() {
|
|
|
|
|
|
FILE_NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f "$NUM_DIR/$FILE_NAME" ];then
|
|
|
|
|
|
OLD_NUM=`cat $NUM_DIR/$FILE_NAME`
|
|
|
|
|
|
INS_NUM=`expr $OLD_NUM + 1`
|
|
|
|
|
|
echo $INS_NUM > $NUM_DIR/$FILE_NAME
|
|
|
|
|
|
else
|
|
|
|
|
|
echo 1 > $NUM_DIR/$FILE_NAME
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#获取组件安装次数
|
|
|
|
|
|
function getrecordnum() {
|
|
|
|
|
|
FILE_NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! -d "$NUM_DIR/" ];then
|
|
|
|
|
|
mkdir -p $NUM_DIR/
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f "$NUM_DIR/$FILE_NAME" ];then
|
|
|
|
|
|
echo `cat $NUM_DIR/$FILE_NAME`
|
|
|
|
|
|
else
|
|
|
|
|
|
echo 0 > $NUM_DIR/$FILE_NAME
|
|
|
|
|
|
echo 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#输出组件安装信息
|
|
|
|
|
|
function echoSuccess() {
|
|
|
|
|
|
NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[32;1m$NAME Components have been installed.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
echo "`date "+%Y-%m-%d %H:%M:%S"` - $NAME 剧本已执行完成." >> ../auditlog
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
clear
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#输出组件安装信息
|
|
|
|
|
|
function echoError() {
|
|
|
|
|
|
NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\033[31;1m $NAME The installation fails. Please check\033[0m"
|
|
|
|
|
|
echo "`date "+%Y-%m-%d %H:%M:%S"` - $NAME 剧本执行异常." >> ../auditlog
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#=========================================commons======================================#
|
|
|
|
|
|
#单个安装执行方法,根据传入的组件名称进行安装
|
|
|
|
|
|
#若安装出现异常导致ansible停止,则脚本直接终止
|
|
|
|
|
|
#若本机多次安装过某组件,则会提示是否继续安装;y 继续 N 停止
|
|
|
|
|
|
function installation() {
|
|
|
|
|
|
NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
is=`getrecordnum $NAME`
|
|
|
|
|
|
if [ $is -lt '1' ];then
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $NAME.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $NAME
|
|
|
|
|
|
recordinstnum $NAME
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $NAME
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
clear && echo -e "\033[31;1m本执行机已成功安装过 $is 次$NAME,缺是否继续安装,误操作可根据提示返回 \033[0m" && sleep 1
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $NAME.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $NAME
|
|
|
|
|
|
recordinstnum $NAME
|
|
|
|
|
|
break
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $NAME
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装正常逻辑,逐个组件询问,Y执行 N不执行安装。
|
|
|
|
|
|
#记录数组通过循环顺序执行安装
|
|
|
|
|
|
function installAllCommon() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
|
|
|
|
|
|
i=0
|
2021-09-01 11:30:43 +08:00
|
|
|
|
#ins_names=(Zookeeper Mariadb galaxy-gateway-keepalive Nacos Kafka Storm Hadoop HBase Clickhouse Druid Spark Arangodb)
|
|
|
|
|
|
#替换Storm成Flink
|
|
|
|
|
|
ins_names=(Zookeeper Mariadb galaxy-gateway-keepalive Nacos Kafka Flink Hadoop HBase Clickhouse Druid Spark Arangodb)
|
2021-08-19 17:26:25 +08:00
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/common_list
|
|
|
|
|
|
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/common_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装异常终止执行操作
|
|
|
|
|
|
#询问是否需要再上次基础上执行,否则清空文件跳出循环
|
|
|
|
|
|
function abnormalCombination() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[31;1m上次选择部署后还有 `cat $NUM_DIR/common_list`未执行部署,是否继续执行.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
|
|
|
|
|
i=0
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
list=`cat $NUM_DIR/common_list`
|
|
|
|
|
|
ins_names=(${list//,/ })
|
|
|
|
|
|
oldnums=${#ins_names[*]}
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
if [ $i -eq $oldnums ];then
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/common_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/common_list
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/common_list
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装调用方法
|
|
|
|
|
|
function installcombination() {
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f $NUM_DIR/common_list ];then
|
2021-09-01 11:30:43 +08:00
|
|
|
|
#if [ `cat $NUM_DIR/common_list | egrep "Mariadb|Nacos|Zookeeper|galaxy-gateway-keepalive|Kafka|Storm|Hadoop|HBase|Clickhouse|Druid|Spark|Arangodb" | wc -l` -gt '0' ]
|
|
|
|
|
|
#替换Storm成Flink
|
|
|
|
|
|
if [ `cat $NUM_DIR/common_list | egrep "Mariadb|Nacos|Zookeeper|galaxy-gateway-keepalive|Kafka|Flink|Hadoop|HBase|Clickhouse|Druid|Spark|Arangodb" | wc -l` -gt '0' ]
|
2021-08-19 17:26:25 +08:00
|
|
|
|
then
|
|
|
|
|
|
abnormalCombination
|
|
|
|
|
|
else
|
|
|
|
|
|
installAllCommon
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
installAllCommon
|
|
|
|
|
|
fi
|
|
|
|
|
|
clear
|
|
|
|
|
|
}
|
|
|
|
|
|
#=========================================commons======================================#
|
|
|
|
|
|
|
|
|
|
|
|
#=========================================apps======================================#
|
|
|
|
|
|
#单个安装执行方法,根据传入的组件名称进行安装
|
|
|
|
|
|
#若安装出现异常导致ansible停止,则脚本直接终止
|
|
|
|
|
|
#若本机多次安装过某组件,则会提示是否继续安装;y 继续 N 停止
|
|
|
|
|
|
function installationApps() {
|
|
|
|
|
|
NAME=$1
|
|
|
|
|
|
|
|
|
|
|
|
is=`getrecordnum $NAME`
|
|
|
|
|
|
if [ $is -lt '1' ];then
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $NAME.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $NAME
|
|
|
|
|
|
recordinstnum $NAME
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $NAME
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
clear && echo -e "\033[31;1m本执行机已成功安装过 $is 次$NAME,缺是否继续安装,误操作可根据提示返回 \033[0m" && sleep 1
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $NAME.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $NAME
|
|
|
|
|
|
recordinstnum $NAME
|
|
|
|
|
|
break
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $NAME
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装正常逻辑,逐个组件询问,Y执行 N不执行安装。
|
|
|
|
|
|
#记录数组通过循环顺序执行安装
|
|
|
|
|
|
function installAllApps() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
|
|
|
|
|
|
i=0
|
2021-09-01 11:30:43 +08:00
|
|
|
|
hoskeep=`cat ../configurations/config.yml | grep -vE "^#|^$" | grep "hos_keepalive_need" | grep yes | wc -l`
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [[ $hoskeep -eq "1" ]]; then
|
|
|
|
|
|
ins_names=(galaxy-gateway-nginx galaxy-qgw-service galaxy-job-service galaxy-report-service galaxy-hos-service galaxy-chproxy galaxy-hos-nginx galaxy-hos-keepalive galaxy-gohangout)
|
|
|
|
|
|
else
|
|
|
|
|
|
ins_names=(galaxy-gateway-nginx galaxy-qgw-service galaxy-job-service galaxy-report-service galaxy-hos-service galaxy-chproxy galaxy-gohangout)
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/app_list
|
|
|
|
|
|
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/app_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装异常终止执行操作
|
|
|
|
|
|
#询问是否需要再上次基础上执行,否则清空文件跳出循环
|
|
|
|
|
|
function abnormalApps() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[31;1m上次选择部署后还有 `cat $NUM_DIR/app_list`未执行部署,是否继续执行.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
|
|
|
|
|
i=0
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
list=`cat $NUM_DIR/app_list`
|
|
|
|
|
|
ins_names=(${list//,/ })
|
|
|
|
|
|
oldnums=${#ins_names[*]}
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
if [ $i -eq $oldnums ];then
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/app_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/app_list
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
break;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/app_list
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装调用方法
|
|
|
|
|
|
function installApps() {
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f $NUM_DIR/app_list ];then
|
|
|
|
|
|
if [ `cat $NUM_DIR/app_list | egrep "galaxy-qgw-service|galaxy-job-service|galaxy-report-service|galaxy-hos-service|galaxy-chproxy|galaxy-gateway-nginx|galaxy-hos-nginx|galaxy-hos-keepalive|galaxy-gohangout" | wc -l` -gt '0' ]
|
|
|
|
|
|
then
|
|
|
|
|
|
abnormalApps
|
|
|
|
|
|
else
|
|
|
|
|
|
installAllApps
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
installAllApps
|
|
|
|
|
|
fi
|
|
|
|
|
|
clear
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#======================================apps======================================#
|
|
|
|
|
|
|
|
|
|
|
|
#======================================init======================================#
|
|
|
|
|
|
#组合安装正常逻辑,逐个组件询问,Y执行 N不执行安装。
|
|
|
|
|
|
#记录数组通过循环顺序执行安装
|
|
|
|
|
|
function initAll() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
|
|
|
|
|
|
i=0
|
2021-09-01 11:30:43 +08:00
|
|
|
|
#ins_names=(init-galaxy-gateway-keepalive init-kafka init-hbase init-druid init-clickhouse init-storm init-spark init-galaxy-hos-service init-dos)
|
|
|
|
|
|
#替换init-storm成init-flink
|
|
|
|
|
|
ins_names=(init-galaxy-gateway-keepalive init-kafka init-hbase init-druid init-clickhouse init-flink init-spark init-galaxy-hos-service init-dos)
|
2021-08-19 17:26:25 +08:00
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/init_list
|
|
|
|
|
|
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/init_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装异常终止执行操作
|
|
|
|
|
|
#询问是否需要再上次基础上执行,否则清空文件跳出循环
|
|
|
|
|
|
function abnormalInit() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[31;1m上次选择部署后还有 `cat $NUM_DIR/init_list`未执行部署,是否继续执行.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
|
|
|
|
|
i=0
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
list=`cat $NUM_DIR/init_list`
|
|
|
|
|
|
ins_names=(${list//,/ })
|
|
|
|
|
|
oldnums=${#ins_names[*]}
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
if [ $i -eq $oldnums ];then
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/init_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/init_list
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
break;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/init_list
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装调用方法
|
|
|
|
|
|
function installInit() {
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f $NUM_DIR/init_list ];then
|
2021-09-01 11:30:43 +08:00
|
|
|
|
|
|
|
|
|
|
#if [ `cat $NUM_DIR/init_list | egrep "init-galaxy-gateway-keepalive|init-kafka|init-hbase|init-druid|init-clickhouse|init-storm|init-spark|init-galaxy-job-service|init-galaxy-hos-service|init-dos" | wc -l` -gt '0' ]
|
|
|
|
|
|
#替换init-storm成init-flink
|
|
|
|
|
|
if [ `cat $NUM_DIR/init_list | egrep "init-galaxy-gateway-keepalive|init-kafka|init-hbase|init-druid|init-clickhouse|init-flink|init-spark|init-galaxy-job-service|init-galaxy-hos-service|init-dos" | wc -l` -gt '0' ]
|
2021-08-19 17:26:25 +08:00
|
|
|
|
then
|
|
|
|
|
|
abnormalInit
|
|
|
|
|
|
else
|
|
|
|
|
|
initAll
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
initAll
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
#======================================init======================================#
|
|
|
|
|
|
|
|
|
|
|
|
#======================================check======================================#
|
|
|
|
|
|
#组合安装正常逻辑,逐个组件询问,Y执行 N不执行安装。
|
|
|
|
|
|
#记录数组通过循环顺序执行安装
|
|
|
|
|
|
function checkAll() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
|
|
|
|
|
|
i=0
|
|
|
|
|
|
ins_names=(check-services check-components)
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/check_list
|
|
|
|
|
|
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/check_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
clear
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[32;1mCheck finished, service and component status is normal.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装异常终止执行操作
|
|
|
|
|
|
#询问是否需要再上次基础上执行,否则清空文件跳出循环
|
|
|
|
|
|
function abnormalCheck() {
|
|
|
|
|
|
clear
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[31;1m上次选择部署后还有 `cat $NUM_DIR/check_list`未执行部署,是否继续执行.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
read -p "y/Y 继续执行安装,n/N 返回选择菜单:" yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]*)
|
|
|
|
|
|
i=0
|
|
|
|
|
|
#根据组合进行顺序安装
|
|
|
|
|
|
list=`cat $NUM_DIR/check_list`
|
|
|
|
|
|
ins_names=(${list//,/ })
|
|
|
|
|
|
oldnums=${#ins_names[*]}
|
|
|
|
|
|
for element in ${ins_names[@]}
|
|
|
|
|
|
do
|
2021-09-01 11:30:43 +08:00
|
|
|
|
ansible-playbook -i ../configurations/hosts $element.yml
|
2021-08-19 17:26:25 +08:00
|
|
|
|
if [ $? -eq '0' ];then
|
|
|
|
|
|
sleep 10
|
|
|
|
|
|
echoSuccess $element
|
|
|
|
|
|
recordinstnum $element
|
|
|
|
|
|
unset ins_names[$i]
|
|
|
|
|
|
let i++
|
|
|
|
|
|
if [ $i -eq $oldnums ];then
|
|
|
|
|
|
cat /dev/null > $NUM_DIR/check_list
|
|
|
|
|
|
else
|
|
|
|
|
|
echo ${ins_names[@]} > $NUM_DIR/check_list
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
echoError $element
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
done
|
|
|
|
|
|
clear
|
|
|
|
|
|
echo -e "
|
|
|
|
|
|
\033[32;1mCheck finished, service and component status is normal.\033[0m
|
|
|
|
|
|
"
|
|
|
|
|
|
sleep 5
|
|
|
|
|
|
break;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
# cat /dev/null > $NUM_DIR/check_list
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please answer yes or no."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#组合安装调用方法
|
|
|
|
|
|
function installCheck() {
|
|
|
|
|
|
|
|
|
|
|
|
if [ -f $NUM_DIR/check_list ];then
|
|
|
|
|
|
if [ `cat $NUM_DIR/check_list | egrep "check-services|check-components" | wc -l` -gt '0' ]
|
|
|
|
|
|
then
|
|
|
|
|
|
abnormalCheck
|
|
|
|
|
|
else
|
|
|
|
|
|
checkAll
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
checkAll
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
#======================================check======================================#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
|
|
|
|
|
|
if [[ -f $NUM_DIR/checkManager ]]; then
|
|
|
|
|
|
if [[ `cat $NUM_DIR/checkManager` -eq 0 ]]; then
|
|
|
|
|
|
checkManager
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
checkManager
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [[ -f $NUM_DIR/checkCluster ]]; then
|
|
|
|
|
|
if [[ `cat $NUM_DIR/checkCluster` -eq 0 ]]; then
|
|
|
|
|
|
checkCluster
|
|
|
|
|
|
fi
|
|
|
|
|
|
else
|
|
|
|
|
|
checkCluster
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
clear
|
|
|
|
|
|
cat ../parcels/menu/homePage
|
|
|
|
|
|
|
|
|
|
|
|
read -p "
|
|
|
|
|
|
Selection(1-4)? " yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[1])
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
clear
|
|
|
|
|
|
#installcombination
|
|
|
|
|
|
|
|
|
|
|
|
cat ../parcels/menu/commonMenu
|
|
|
|
|
|
echo " ********************************************************************************************************* "
|
|
|
|
|
|
echo " * *
|
|
|
|
|
|
* Press Ctrl+C or N to exit, Enter or Y to continue. *
|
|
|
|
|
|
* *
|
|
|
|
|
|
*********************************************************************************************************
|
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
|
|
read -p "Enter [Y] or [N]: " yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]* )
|
|
|
|
|
|
installcombination
|
|
|
|
|
|
break;;
|
|
|
|
|
|
[Nn]*)
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please Enter [Y] or [N].";;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done;;
|
|
|
|
|
|
[2] )
|
|
|
|
|
|
while true; do
|
|
|
|
|
|
clear
|
|
|
|
|
|
#installApps
|
|
|
|
|
|
|
|
|
|
|
|
cat ../parcels/menu/appMenu
|
|
|
|
|
|
read -p "Enter [Y] or [N]: " yn
|
|
|
|
|
|
case $yn in
|
|
|
|
|
|
[Yy]* )
|
|
|
|
|
|
installApps
|
|
|
|
|
|
break;;
|
|
|
|
|
|
[Nn]* )
|
|
|
|
|
|
break;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please Enter [Y] or [N].";;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done;;
|
|
|
|
|
|
[3] )
|
|
|
|
|
|
installInit
|
|
|
|
|
|
;;
|
|
|
|
|
|
[4] )
|
|
|
|
|
|
installCheck
|
|
|
|
|
|
;;
|
|
|
|
|
|
* )
|
|
|
|
|
|
echo "Please Enter (1-4)."
|
|
|
|
|
|
;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|