목적
1. 첫 번째(이하 배포서버) 서버에 배포를 한 후 순차적으로 늘어나는 서버에들에 대해서는 자동 배포
2. 자동 배포하였을 시에 ip 기반으로 순차적으로 늘어 난다는 가정
3. 배포 완료 후 재기동 까지 해야 정상 처리
아래에 스크립트를 보면 복잡해 보이지만 그렇지 않다. (단순 tomcat deploy)
단순히 배포 서버에 디플로이가 정상이 되면 그 이후부터는 ping테스트하여 복제되는 서버에 대해서는 자동으로 배포 후 끝나는 것이 목표 였다.
주석을 쉬운 영어로 표기 했으니 이정도면 이해가 어렵진 않을 것 같다.
#/bin/bash
DATE=`date +%Y%m%d%H%M%S`
sub1=192; sub2=168; sub3=15; sub4=100
USER=wasuser
PASSWD=wasuser
WARNAME="test.war"
APPDIR="/opt/was/app"
SERVER_BASE="/opt/was/servers/tomcat8_21"
SSHOPTION="-oStrictHostKeyChecking=no"
SOURCE=$sub1.$sub2.$sub3.$sub4;
TARGET=$SOURCE
echo "#############################################################";
echo "# INFO result [0] = SUCCESS or result [NOT 0] = FAIL ";
echo "# 0-0 $SOURCE SERVER APPLICATION GET THIS SERVER";
sshpass -p $PASSWD scp $USER@$SOURCE:/tmp/$WARNAME /tmp/$WARNAME ;
echo "# 0-0 Result: $?";
echo ""
echo "#############################################################";
echo "# CHECK WITH PING TO TARGET SERVER ";
echo "#############################################################";
while true
do
cnt=1;
sub4=`expr $sub4 + 100`;
TARGET=$sub1.$sub2.$sub3.$sub4;
ping -c 1 -w 1 $TARGET >/dev/null 2>&1;
if [ $? -ne 0 ]; then
echo "#############################################################";
echo "# NO LONGER TARGET: $TARGET ";
echo "#############################################################";
sleep 1;
break;
else
echo "# TARGET [$cnt]: $TARGET ";
echo "";
echo "# TASKS Start ";
echo "# 1-1 TARGET $TARGET [$cnt] APPLICATION BACKUP[move] ";
sshpass -p $PASSWD ssh $SSHOPTION $USER@$TARGET mv $APPDIR/test.war $APPDIR/test.war.$DATE;
echo "# 1-2 Result: $?";
echo ""
echo "# 2-1 THIS SERVER to $TARGET [$cnt] SERVER APPLICATION COPY ";
sshpass -p $PASSWD scp /tmp/$WARNAME $USER@$TARGET:$APPDIR/$WARNAME;
echo "# 2-2 Result: $?";
echo ""
echo "# 3-1 $TARGET [$cnt] SERVER Shutdown ";
sshpass -p $PASSWD ssh -t $SSHOPTION $USER@$TARGET "cd $SERVER_BASE/bin; sudo -u $USER ./kill.sh";
echo "# Result: $?";
echo ""
echo "# 4-1 $TARGET [$cnt] SERVER Startup ";
sshpass -p $PASSWD ssh -t $SSHOPTION $USER@$TARGET "cd $SERVER_BASE/bin; sudo -u $USER ./start.sh notail";
echo "# Result: $?";
echo ""
echo "# TASKS END";
sleep 1;
cnt=$((cnt + 1));
fi
echo "-------------------------------------------------------------";
sleep 1;
done
댓글 없음:
댓글 쓰기