for node in $GROUP1_LIST;do # 循环服务器节点列表
scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/ # 将压缩后的代码包复制到web服务器的/opt/webroot
done
}
cluster_node_add(){ #将web服务器添加至前端负载
echo cluster_node_add
}
cluster_node_remove(){ # 将web服务器从集群移除函数(正在部署的时候应该不处理业务)
writelog "cluster_node_remove"
}
url_test(){
URL=$1
curl -s --head $URL |grep '200 OK'
if [ $? -ne 0 ];then
shell_unlock;
writelog "test error" && exit;
fi
}
pre_deploy(){ # 代码解压部署函数,预生产节点
writelog "pre_deploy"
for node in ${PRE_LIST};do # 循环预生产服务器节点列表
cluster_node_remove ${node} # 部署之前将节点从前端负载删除
echo "pre_deploy, cluster_node_remove ${node}"
ssh ${node} "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz" #分别到web服务器执行压缩包解压命令
ssh ${node} "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo" # 整个自动化的核心,创建软连接
done
}
pre_test(){ # 预生产主机测试函数
for node in ${PRE_LIST};do # 循环预生产主机列表
curl -s --head ${node}:9999/index.html | grep "200 OK" # 测试web界面访问
if [ $? -eq 0 ];then # 如果访问成功
writelog " ${node} Web Test OK!" # 记录日志
echo " ${node} Web Test OK!"
cluster_node_add ${node} # 测试成功之后调用添加函数把服务器添加至节点,
writelog "pre,${node} add to cluster OK!" # 记录添加服务器到集群的日志
else # 如果访问失败
writelog "${node} test no OK" # 记录日志
echo "${node} test not OK"
shell_unlock # 调用删除锁文件函数
break # 结束部署
fi
done
}
group1_deploy(){ # 代码解压部署函数
writelog "group1_code_deploy"
for node in ${GROUP1_LIST};do # 循环生产服务器节点列表
cluster_node_remove $node
echo "group1, cluster_node_remove $node"
ssh ${node} "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz" # 分别到各web服务器节点执行压缩包解压命令
ssh ${node} "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo" # 整个自动化的核心,创建软连接
done
scp ${CONFIG_DIR}/other/192.168.3.13.server.xml 192.168.3.13:/webroot/web-demo/server.xml # 将差异项目的配置文件scp到此web服务器并以项目结尾
}
group1_test(){ # 生产主机测试函数
for node in ${PRE_LIST};do # 循环生产主机列表
curl -s --head ${node}:9999/index.html | grep "200 OK" #测试web界面访问
if [ $? -eq 0 ];then #如果访问成功
writelog " ${node} Web Test OK!" #记录日志
echo "group1_test,${node} Web Test OK!"
cluster_node_add
writelog " ${node} add to cluster OK!" #记录将服务器 添加至集群的日志
else #如果访问失败
writelog "${node} test no OK" #记录日志
echo "${node} test no OK"
shell_unlock # 调用删除锁文件函数
break # 结束部署
fi
done
}