天天看點

批量部署stg Pool到生産腳本

    腳本來源的需求saas批量更新,需求将stg(stg環境:近似1:1的生産環境)的war包全量部署到online,先刷sql後部署war包,差不多10分鐘部署完成。

腳本存放于跳闆機上,跳闆機和stg/online做了秘鑰登入:

env.sh的内容就是war和ip對應的清單如下:

env.sh檔案:

#10.10.15.15=owms-api.war;      

操作前先備份,防止復原:

$ cat backup_env_war.sh 
#!/bin/bash
backup_time=`date +"%Y-%m-%d-%H-%M-%S"`
for ip in `cat ../env.sh | grep -v "^$" | awk -F '#' '{print $2}' | awk -F '=' '{print $1}' | sort | uniq`
do
    ssh ${ip} "cd /data/ && cp -r env{,-${backup_time}}"#備份env目錄,開發pool自定義的變量
    ssh ${ip} "cd /data/tomcat && cp -r webapps{,-${backup_time}}"#備份生産tomcat 部署路徑,防止復原
done      

備份完做個确認,是否正确:

批量部署stg Pool到生産腳本
$ cat copy_stgwar_prodwar.sh 
#!/bin/bash
time_stamp=`date +"%Y-%m-%d-%H-%M-%S"`#備份時間
prod_war_home=/data/ksyun-saas/package/wars#從stg拉去war包存放本地的目錄
stg_env=/data/stg-saas/package#stg env.sh檔案路徑
prod_env=/data/ksyun-saas/package#online env.sh檔案對應路徑
tomcat_dir=/data/tomcat/webapps#tomcat 部署路徑
function shutdown_tomcat() {#stop tomcat函數
    tomcatId=`ssh $ip ps -ef | grep java | grep -v "grep" | awk '{print $2}'`
    if [ ! $tomcatId ];then
        echo "tomcat process in ${ip} is not exist."
    else
        echo "shutdown tomcat in ${ip}"
        ssh $ip "/bin/kill -9 $tomcatId"
        if [ $? == 0 ];then
        echo "shutdown $ip tomcat process is success."
        else
        echo "shutdown $ip tomcat process is false."
        exit 2
        fi
    fi
}
function start_tomcat() {#啟動tomcat函數
    echo "start tomcat in ${ip}."
    ssh $ip "JAVA_HOME=`which java | awk -F '/bin/' '{print $1}'`;export JAVA_HOME;/bin/sh /data/tomcat/bin/startup.sh"
    ssh $ip "/usr/local/java/jdk1.7.0_80/bin/jps"
}
read -p "輸入你需要釋出的war包:" stg_war#read 變量
if [ "${stg_war}" != " " ];then#強制輸入參數,避免空參數
    stg_war_ip=`cat ${stg_env}/env.sh | egrep "${stg_war}[^-]" | awk -F '#' '{print $2}' | awk -F '=' '{print $1}'`   #過濾pool對應的stg環境部署機器
    echo $stg_war_ip
    echo -n "正在從stg環境${stg_war_ip} 複制 ${stg_war}到${prod_war_home}下"
    scp ${stg_war_ip}:/${tomcat_dir}/${stg_war}.war ${prod_war_home}#scp war到本地目錄
    echo -n "确認${stg_war}.war存在"
    ls -lh ${prod_war_home} | grep ${stg_war}.war
    sleep 2
    echo -n "開始部署到online環境"
    for ip in `cat ${prod_env}/env.sh | grep "${stg_war}[^-]" | awk -F '#' '{print $2}' | awk -F '=' '{print $1}'`;do#通過pool過濾生産ip
        shutdown_tomcat $ip
        ssh ${ip} "cd ${tomcat_dir} && cp ${stg_war}.war ${stg_war}.war-${time_stamp}"#下面備份部署重新開機tomcat
        ssh ${ip} "cd ${tomcat_dir} && /bin/rm -rf ${stg_war}"
        scp ${prod_war_home}/${stg_war}.war ${ip}:/${tomcat_dir}
        start_tomcat $ip
    done
fi      

繼續閱讀