#!/bin/bash ## Script de atualização do MD2 QualityManager ## Versão 0.1 - 09/01/2020 - Autor: Danilo Soares ## Preparação de execuçãoi exec &> >(tee -a "logUpdate.log") clear . update.config ##Função principal Main() { echo echo "MENU ATUALIZAÇÃO" echo "--------------------------------" echo "Opcões:" echo echo "1. Atualização de versão" echo "2. Rollback" echo "3. Sair" echo echo -n "Qual a opção desejada? " read option case $option in 1) Update;; 2) Rollback;; 3) exit ;; *) printf "\nOpção desconhecida!\n\n" ; Main ;; esac } Update() { printf "\nAtualização em andamento.\n" ## Backup do War echo "(1/11) Copia de .war em andamento." if [[ -d /var/lib/tomcat10/webapps ]] then dir="/var/lib/tomcat10/webapps" fi if [[ -d /opt/tomcat/webapps ]] then dir="/opt/tomcat/webapps" fi echo $dir cp $dir'/qualityManager-prj.war' ./qualityManager-prj_$(date +\%Y\%m\%d_\%I_\%M_\%p).war echo "(2/11) Cópia de backup da aplicação finalizada." ## Backup do database echo "(3/11) Cópia do banco de dados em andamento." pg_dump -h 127.0.0.1 -U md2net -d qualitymanager | gzip --best > ./bkp_DB_QM_$(date +\%Y\%m\%d_\%I_\%M_\%p).psql.gz echo "(4/11) Cópia de backup do banco de dados finalizada." ## Parando serviço Tomcat echo "(5/11) Parando o serviço Tomcat." sudo systemctl stop $tomcat sleep 5s sudo systemctl is-active --quiet $tomcat && failStopTomcat ## Apagar cache e app antiga echo "(6/11) Apagando arquivos antigos da app" sudo rm -rf $dir'/qualityManager-prj.war' sudo rm -rf $dir'/qualityManager-prj' ## Copiando a nova versão echo "(7/11) Copiando a nova versão." sudo cp -rf ./qualityManager-prj.war $dir'/qualityManager-prj.war' echo "(8/11) Cópia da nova versão finalizada" ## Subindo o serviço Tomcat echo "(9/11) Subindo o serviço Tomcat." sudo systemctl start $tomcat sleep 5 sudo systemctl is-active --quiet $tomcat || failStartTomcat ## Aguardar a aplicação subir echo "(10/11) Aguardando a aplicação subir." sleep 60 curl -sSfk $varURL > /dev/null || failUpApp echo "(11/11) Nova versão do MD2 QualityManager implantada com sucesso!" Main } Rollback() { fileDBBkp=$(ls -t | grep bkp_DB_QM | head -n1) #echo $fileDBBkp fileWarBkp=$(ls -t | grep qualityManager-prj_ | head -n1) #echo $fileWarBkp echo "O rollback serão para os arquivos de DB $fileDBBkp e do app $fileWarBkp." read -p "Tem certeza disso? (S/N) " -n 1 -r echo if [[ $REPLY =~ ^[YySs]$ ]] then ## Parando serviço Tomcat echo "(1/6) Parando o serviço Tomcat." sudo systemctl stop $tomcat sleep 5s sudo systemctl is-active --quiet $tomcat && failStopTomcat ## Limpando conexão Postgres echo "(2/6) Limpando conexão com banco de dados Postgres" sudo systemctl restart postgresql.service sleep 5s ## Voltando o backup do banco de dados. echo "(3/6) Efetuando restore do banco de dados." dropdb qualitymanager createdb qualitymanager gunzip -c $fileDBBkp | psql qualitymanager ## Subindo o serviço Tomcat echo "(4/6) Subindo o serviço Tomcat." sudo systemctl start $tomcat sleep 5 sudo systemctl is-active --quiet $tomcat || failStartTomcat ## Aguardar a aplicação subir echo "(5/6) Aguardando a aplicação subir." sleep 60 curl -sSfk $varURL > /dev/null || failUpApp echo "(6/6) Rollback do MD2 QualityManager realizado com sucesso!" ## Fim do IF de confirmação fi Main } failStopTomcat() { echo "Falha ao parar o Tomcat!" Main } failStartTomcat() { echo "Falha ao iniciar o Tomcat!" Main } failUpApp() { echo "Falha ao subir o QualityManager!" Main } Main