自动化部署shell

yum install curl policycoreutils openssh-server openssh-clients postfix

[root@linux-node2 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix
[root@linux-node2 ~]# systemctl start postfix


curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| sudo bash

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh| bash

yum install -y gitlab-ce


[root@linux-node2 ~]# vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@linux-node2 ~]# yum makecache
[root@linux-node2 ~]# yum install gitlab-ce


/etc/gitlab
[root@node2 gitlab]# egrep -v "^$|^#" gitlab.rb
external_url 'http://192.168.3.4.com'

gitlab-ctl reconfigure

gitlab-ctl status



关闭gitlab:[root@linux-node2 ~]# gitlab-ctl stop
启动gitlab:[root@linux-node2 ~]# gitlab-ctl start
重启gitlab:[root@linux-node2 ~]# gitlab-ctl restart





最终脚本

#!/bin/bash

# Dir List
# mkdir -p /deploy/code/web-demo
# mkdir -p /deploy/config/web-demo/base
# mkdir -p /deploy/config/web-demo/other
# mkdir -p /deploy/tar
# mkdir -p /deploy/tmp
# mkdir -p /opt/webroot
# mkdir -p /webroot
# chown -R www.www /deploy
# chown -R www.www /opt/webroot
# chown -R www.www /webroot

# Node List
PRE_LIST="192.168.3.3"
GROUP2_LIST="192.168.3.4"
NODE_LIST="192.168.3.3 192.168.3.4"
ROLLBACK_LIST="192.168.3.3 192.168.3.4"

# Date/Time Veriables
LOG_CTIME=$(date "+%H-%M-%S")
LOG_CDATE=$(date "+%Y-%m-%d")
CTIME="date +%Y-%m-%d"
CDATE="date +%H-%M-%S"


# Shell Env

PRO_NAME="web-demo"
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www/"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
LOCK_FILE="/tmp/deploy.lock"


# Code Env

CODE_DIR="/deploy/code/web-demo"
CONFIG_DIR="/deploy/config/web-demo"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"

url_test(){
    URL=$1
    curl -s --head $1 |grep '200 OK'
    if [ $? -ne 0 ]; then
        shell_unlock;
        writelog "test error" &&exit;
    fi
}


usage(){
    echo $"Usage $0 { deploy | rollback [ list | version ] }"
}

writelog(){
    LOGINFO=$1
    echo "`${CDATE}` `${CTIME}`: ${SHELL_NAME} : ${LOGINFO} " >> ${SHELL_LOG}
}

shell_lock(){
    touch ${LOCK_FILE}
}

shell_unlock(){
    rm -f ${LOCK_FILE}
}

code_get(){
    echo code_get
    writelog "code_get"
    cd ${CODE_DIR} && git pull
    cp -rp ${CODE_DIR} ${TMP_DIR}/
    API_VERL=`git show|grep commit|cut -d ' ' -f2`
    API_VER=${API_VERL:0:6}

}

code_build(){
    echo code_build
}

code_config(){
    echo code_config
    writelog "code_config"
    /bin/cp -rp ${CONFIG_DIR}/base/*  ${TMP_DIR}/${PRO_NAME}
    PKG_NAME="${PRO_NAME}"_"${API_VER}"-"`$CDATE`-`${CTIME}`"
    cd ${TMP_DIR}  && mv ${PRO_NAME} ${PKG_NAME}

}

code_tar(){
    echo code_tar
    writelog "code_tar"
    cd ${TMP_DIR} && tar czf ${PKG_NAME}.tar.gz ${PKG_NAME}
    writelog "${PKG_NAME}.tar.gz"
}

code_scp(){
    echo code_scp
    writelog "code_scp"
    for node in $PRE_LIST ;do
        scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
    done
    for node in $GROUP2_LIST ;do
        scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
    done
}

cluster_node_remove(){
    writelog "cluster_node_remove"
    echo cluster_node_remove
}

pre_deploy(){
    writelog "remove from cluster pre"
    echo code_deploy
    for node in $PRE_LIST ;do
        ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
        ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
    done
}

pre_test(){
    url_test "http://${PRE_LIST}/index.html"
    echo "add to cluster pre"
}

group2_deploy(){
    writelog "remove from cluster 2"
    for node in $GROUP2_LIST ;do
        ssh $node "cd /opt/webroot && tar zxf ${PKG_NAME}.tar.gz"
        ssh $node "rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
    done
    scp ${CONFIG_DIR}/other/192.168.3.4.crontab.xml 192.168.3.4:/webroot/web-demo/crontab.xml
}

group2_test(){
    for node in $GROUP2_LIST ;do
        url_test "http://${node}/index.html"
    done
    echo "add to cluster group2"
}

config_diff(){
    echo config_diff

}


code_test(){
    echo code_test
}

cluster_node_in(){
    echo cluster_node_in
}

rollback_fun(){
    [ -z $1 ] && echo "input rollback version" &&return
    for node in $ROLLBACK_LIST ;do
        ssh $node "[ -d /opt/webroot/$1 ] && rm -f /webroot/web-demo && ln -s /opt/webroot/$1 /webroot/web-demo"
    done

}

rollback (){
    case $1 in
        list)
            ls -l /opt/webroot/*.tar.gz
            ;;
        *)
            rollback_fun $1
    esac

}

main(){
    if [ -f $LOCK_FILE ]; then
        echo "Deploy is running" && exit;
    fi
    shell_lock
    DEPLOY_METHOD=$1
    ROLLBACK_VER=$2
    case $DEPLOY_METHOD in
        deploy)
            code_get;
            code_build;
            code_config;
            code_tar;
            code_scp;
            pre_deploy;
            pre_test;
            group2_deploy;
            group2_test;
            config_diff;
            code_test;
            cluster_node_in;
            ;;
        rollback)
            rollback $ROLLBACK_VER
            ;;

        *)
            usage;
    esac
    shell_unlock
}

main $1 $2
原文地址:https://www.cnblogs.com/WisWang/p/6537290.html