自动化部署服务shell脚本的应用

来源:互联网 发布:java 获取tomcat路径 编辑:程序博客网 时间:2024/06/05 12:40

实际的项目开发与运维中,常常需要部署新的服务。如果每次部署时,都手动更改环境配置信息,以及安装部署新包,无疑是很浪费时间。

可以通过编写自动化脚本的方式部署新的服务,节约部署时间和减少部署错误。

auto_deploy.sh具体代码如下:

#!/bin/sh############################校验当前用户是否可部署user='whoami‘if ["$user"=="deploy_user"];thenecho "service is ready to deploy"elseecho "this user has no privilege, only deploy_user can deploy service."exit 0fi#校验部署服务名与服务版本信息if [! -n "$1"];thenecho "service name is null, please input service name."exit 0fiif [! -n "$2"];thenecho "service version is null, please input service version."exit 0fi#前端服务if [$1=="web_ui"];thenservice_dir="web_ui"service_name="web_ui"package_type="zip"echo "web ui is ready to install."fi#后端服务if [$1=="web_service"];thenservice_dir="web_service"service_name="web_service"package_type="war"echo "web service is ready to install."fiif [! -n "$service_name"];thenecho "service name is not correct. please input correct service name."exit 0fiif [! -f /opt/deploy_dir/${service_name}-$2.${package_type}];thenecho "service version is not correct. please input correct service version."exit 0fi######################################开始部署服务echo "start to deploy service."if [$1=="web_service"];thenecho "start to shut down ${service_name} service."sh /opt/${service_dir}/Tomcat/bin/shutdown.shfiif [-d "/opt/${service_dir}/Tomcat/webapps/${service_name}"];thenif [$1=="web_ui"];thencd /opt/${service_dir}/Tomcat/webapps/${service_name}fiif [$1=="web_service"];thencd /opt/${service_dir}/Tomcat/webapps/${service_name}/WEB-INFfi#备份服务last_version=$(cat *.version)echo "start to backup (${service_name}-${last_version}.tar.gz)."if [-f /opt/${service_dir}/Tomcat/webapps/${service_name}-${last_version}.tar.gz];then rm -rf /opt/${service_dir}/Tomcat/webapps/${service_name}-${last_version}.tar.gzficd /opt/${service_dir}/Tomcat/webapps/tar -cvzf ${service_name}-${last_version}.tar.gz ${service_name}/if [$?!=0];thenecho "fail to backup ${service_name}"exit 0fiecho "success to backup ${service_name}-${last_version}.tar.gz."echo "start to delete ${service_name}"rm -rf /opt/${service_dir}/Tomcat/webapps/${service_name}if [$?!=0];echo "fail to delete ${service_name}."fifi#开始部署服务echo "start to deploy the lastest package for ${service_name}."mkdir /opt/${service_dir}/Tomcat/webapps/${service_name}cp /opt/deploy_dir/${service_name}-$2.${package_type} /opt/${service_dir}/Tomcat/webapps/${service_name}if [$?!=0];thenecho "fail to copy the lastest package for ${service_name}."exit 0ficd /opt/${service_dir}/Tomcat/webapps/${service_name}if [$1=="web_ui"];thenunzip -q ${service_name}-$2.${package_type}fiif [$1=="web_service"]jar -xf ${service_name}-$2.${package_type}fiif [$?!=0];thenecho "fail to decompress ${service_name}-$2.${package_type}."exit 0firm -f /opt/${service_dir}/Tomcat/webapps/${service_name}/${service_name}-$2.${package_type}if [$1=="web_ui"];thencd /opt/${service_dir}/Tomcat/webapps/${service_namefiif [$1=="web_service"];thencd /opt/${service_dir}/Tomcat/webapps/${service_name}/WEB-INFfiecho "start to update ${service_name} configuration."#更新服务配置脚本sh /opt/deploy_dir/update_config.sh $1if [$1=="web_service"];thenecho "start to startup ${service_name}."sh /opt/${service_dir}/Tomcat/bin/startup.shfi#服务部署完成echo "finish to deploy ${service_name}."

update_config.sh是更新服务配置的脚本,为了更好地结构化处理,将其作为一个新的脚本来实现功能。


每次部署新服务时,将新包放在/opt/deploy_dir目录下,使用deploy_user用户登录,执行./auto_deploy service_name service_version(service_name, service_version根据实际信息填写)部署服务。


原创粉丝点击