澳门京葡网站 4

工具函数解析澳门京葡网站

工具函数解析

那多少个函数归于意况希图类,其实在写相仿的剧本时,检查环境相比较首要,那样可避防卫有个别条件不有所的境况报错,第四个函数prepare_dir函数,检验目录的,具体代码如下:

 

prepare_dirs()
{
    #创建必要的目录,此处会输出到安装过程中
    ECHO_DEBUG "Creating necessary directories ..."


    #PKG_DIR, PKG_MISC_DIR, 前文已经定义过了,FOR循环读取,存在跳过,如果不存在,就直接建立。
    for i in ${PKG_DIR} ${PKG_MISC_DIR}
    do
        [ -d "${i}" ] || mkdir -p "${i}"
    done
}

实行这么些函数后,就能够把要求的目录全体创立好了。接下来解析fetch_misc(State of Qatar函数,代码如下:

 

fetch_misc()
{
    #进入到这个目录,准备下载安装文件
    cd ${PKG_MISC_DIR}

    #计算安装总数
    misc_total=$(( $(echo ${MISCLIST} | wc -w | awk '{print $1}') ))
    #定义计数器
    misc_count=1
   #安装提醒,获取源文件中
    ECHO_INFO "Fetching source tarballs ..."
   #for循环读取标记列表,获得下载地址,并下载到本地
    for i in ${MISCLIST}; do
        url="${IREDMAIL_MIRROR}/yum/misc/${i}"
        ECHO_INFO "+ ${misc_count} of ${misc_total}: ${url}"

        ${FETCH_CMD} "${url}"

        misc_count=$((misc_count + 1))
    done
}

 

 

实际上那么些剧本的意义正是从上边那个地方里下载对应版本的安装文件

澳门京葡网站 1

这多少个函数归于境况筹算类,其实在写相仿的本羊时,检查遇到相比较根本,那样可以免御有个别条件不持有的场合报错,第二个…

 

理念构造情势
1、纯手工scp
2、纯手工业登陆git pull 、svn update
3、纯手工xftp往上拉
4、开荒给打三个压缩包,rz上去。解压

 

历史观构造短处:
1、全程运行插手,占用一大波年华
2、上线速度慢。
3、以为失误多。管理混乱
4、回滚慢,不及时

 

新类型上线,规划排在第一位
貌似银行都不提供测量检验接口。譬如有的电子商务集团测量检验的话,平常把商品调和成1分,只可以特定账号能看见。

景况的设计
1、开采情状-开采者本地有友好的条件,然后运转须要设置的开销情况,放的是大家共用的劳务。如开荒数据库mysql,别的:redis、Memcached。
2、测量检验景况:功用测量试验情况和性质测验意况
3、预坐蓐意况:日常能够用生产条件中的有个别节点负担
4、分娩条件:直接对客商提供劳务的景况

预临蓐境遇爆发的缘由:
1、数据库超级小器晚成致:测量检验意况和生产条件数据库鲜明不等同的。
2、使用生产条件的联调接口。举例,支付接口

 

预生产情状–临盆条件–灰度揭橥

 

灰度公布:

Ali云付加物上线,都以一个区贰个区上的。断定不是须臾都上的

qq弹窗:恭喜你获得某某版本资格,请下载新本子享用,你正是小白鼠,这一个也是黄金年代种灰度公布

 

规划

业原来就有几个足以上线的代码在代码仓库。大家什么样两全豆蔻年华套临盆自动化陈设系统。

1、规划

2、实现

3、总计和扩张。PDCA

4、在生养条件应用

 

自动化计划系统的设计

 

需求: 

1个集群有11个节点。豆蔻梢头键安插那十二个节点。

2、生龙活虎键回滚到自由版本

3、一键回滚到上个版本

 

部署:

1、代码放在哪里:svn,git
2、获取什么版本代码?
svn+git间接拉去某些分支
svn:钦赐版本号
git:指定tag
3、差距解决:
(1)、各类节点直接差距:
(2)、代码饭馆和实在的差异。配置文件是不是在代码客栈中
(3)、配置文件未必相像:crontab.xml预分娩节点
4、怎么着立异。java tomcat。须要重启。
5、测试。
6、串行和交互作用 分组布置
7什么进行。(1)shell试行。(2)web分界面

 

有关配置文件寄放:

结构文件放代码仓库里,岂不是全部费用都能连数据库了。

故此配置文件不可能放git里。

有的人把布置文件放有些分支里。让部分人无语见到

笔者以为能够独自有个放配置文件的git

 

Tencent蓝鲸:作者帮你做个阳台,你写个本子,笔者帮您宣布到某些机器上,你通过平台帮您试行

局地公司今后的运行,不管任何发表,都是抓好分界面,让项目主任去通过分界面管理

 

至于差距文件:

或是有个别节点有极度的差别性文件

 

 

自动化安插流程设计

澳门京葡网站 2

 

 

自动化铺排实战-shell函数

 碰到筹算

系统版本

1
2
3
4
5
[root@linux-node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@linux-node1 ~]# uname -rm
3.10.0-229.el7.x86_64 x86_64
[root@linux-node1 ~]#

主机名和IP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
node1
[root@linux-node1 ~]# hostname
linux-node1.nmap.com
[root@linux-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.nmap.com
192.168.56.12 linux-node2 linux-node2.nmap.com
[root@linux-node1 ~]#
 
node2
[root@linux-node2 ~]# hostname
linux-node2.nmap.com
[root@linux-node2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.11 linux-node1 linux-node1.nmap.com
192.168.56.12 linux-node2 linux-node2.nmap.com
[root@linux-node2 ~]#

    

两台web服务器,node1和node2作为四个web服务器,同有的时候间node1也作为安排分发服务器,去处理2个node节点上的web包

 

三个节点加多普通客商www,作为web服务器管理顾客。

1
2
3
4
5
6
7
8
9
[root@linux-node1 scripts]# useradd -u 1001 www
[root@linux-node1 scripts]# id www
uid=1001(www) gid=1001(www) groups=1001(www)
[root@linux-node1 scripts]#
 
[root@linux-node2 ~]# useradd -u 1001 www
[root@linux-node2 ~]# id www
uid=1001(www) gid=1001(www) groups=1001(www)
[root@linux-node2 ~]#

 

配置www客户登陆别的机器不用密码。密钥认证。未来www客户作为管理此外机器的客户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@linux-node1 .ssh]# su - www
[www@linux-node1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/www/.ssh/id_rsa):
Created directory '/home/www/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/www/.ssh/id_rsa.
Your public key has been saved in /home/www/.ssh/id_rsa.pub.
The key fingerprint is:
70:37:ff:d0:17:e0:74:1d:c9:04:28:bb:de:ec:1f:7f www@linux-node1.nmap.com
The key's randomart image is:
+--[ RSA 2048]----+
|            .++++|
|         . .o oo.|
|      . . =  . . |
|       o o o .  .|
|        S . o . .|
|         .   o . |
|        . o  ..  |
|         . o  o E|
|          .... ..|
+-----------------+
[www@linux-node1 ~]$

 

查看公钥

1
2
3
4
5
6
7
8
9
10
11
[www@linux-node1 ~]$ cd .ssh/
[www@linux-node1 .ssh]$ ll
total 8
-rw------- 1 www www 1679 Apr  5 03:41 id_rsa
-rw-r--r-- 1 www www  406 Apr  5 03:41 id_rsa.pub
[www@linux-node1 .ssh]$ cat id_rsa.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDcZh8EEk2/rS6B/tLHnRpZGrGIJYFHg7zRFvuT3N9jvOFhYJdWv+8WSQuT0pvxNM4eR0N5Ma9wVvKPo/lVjCaFK+M0dENJVhi6m9OKMtoo2u
jvvuyinNPP4pyoK6ggG5jOlEkHoLcbWCRG/j3pN1rZYV+1twET9xi2IA4UQkgPvKKYWjq7NUR0v5BWsgEQt7VvjcLWTlltTVeGb3FDVKIjDnioIBmLmVwJS64N+GGgAj5YQ+bKHTwY
anEMD39JGKxo0RXTZB5sa734yfNjc3hTZXB4RCcGdzgcMJs/Rt5VeZ277zF86xr4Hd5cioAbV6Y1RvELjmpvrqUUz3tcaKId www@linux-node1.nmap.com
[www@linux-node1 .ssh]$

  

node2也添加node1的公钥

改成600权力工夫平日登陆

1
2
3
4
5
6
7
8
9
[www@linux-node2 ~]$ cd .ssh/
[www@linux-node2 .ssh]$ vim authorized_keys
[www@linux-node2 .ssh]$ cat authorized_keys
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQDcZh8EEk2/rS6B/tLHnRpZGrGIJYFHg7zRFvuT3N9jvOFhYJdWv+8WSQuT0pvxNM4eR0N5Ma9wVvKPo/lVjCaFK+M0dENJVhi6m9OKMtoo2u
jvvuyinNPP4pyoK6ggG5jOlEkHoLcbWCRG/j3pN1rZYV+1twET9xi2IA4UQkgPvKKYWjq7NUR0v5BWsgEQt7VvjcLWTlltTVeGb3FDVKIjDnioIBmLmVwJS64N+GGgAj5YQ+bKHTwY
anEMD39JGKxo0RXTZB5sa734yfNjc3hTZXB4RCcGdzgcMJs/Rt5VeZ277zF86xr4Hd5cioAbV6Y1RvELjmpvrqUUz3tcaKId www@linux-node1.nmap.com
[www@linux-node2 .ssh]$ chmod 600 authorized_keys
[www@linux-node2 .ssh]$

 

签到测量检验–成功

1
2
3
[www@linux-node1 .ssh]$ ssh 192.168.58.12
Last login: Mon Apr 10 00:31:23 2017 from 192.168.58.11
[www@linux-node2 ~]$

 

让node1的www客户ssh本人也没有供给输入密码。

node1增多公钥

本土也放自个儿的密钥,那样能够假装模拟成3台机械。2个ssh免密钥的机器

node1同不日常间作为布置机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[www@linux-node1 .ssh]$ ll
total 12
-rw------- 1 www www 1679 Apr  5 03:41 id_rsa
-rw-r--r-- 1 www www  406 Apr  5 03:41 id_rsa.pub
-rw-r--r-- 1 www www  175 Apr  5 03:43 known_hosts
[www@linux-node1 .ssh]$ vim authorized_keys
[www@linux-node1 .ssh]$ chmod 600 authorized_keys
[www@linux-node1 .ssh]$ ssh 192.168.58.11
The authenticity of host '192.168.58.11 (192.168.58.11)' can't be established.
ECDSA key fingerprint is 8b:4e:2f:cd:37:89:02:60:3c:99:9f:c6:7a:5a:29:14.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.58.11' (ECDSA) to the list of known hosts.
Last login: Wed Apr  5 03:40:47 2017
[www@linux-node1 ~]$ exit
logout
Connection to 192.168.58.11 closed.
[www@linux-node1 .ssh]$ ssh 192.168.58.11
Last login: Wed Apr  5 03:46:21 2017 from 192.168.58.11
[www@linux-node1 ~]$

  

初步写自动化布署脚本

听闻地点的流程图,先把大致框架写出来

先把框架写出来,然后每种函数里写echo

拜访剧本试行流程是不是有题目

 

code_diff 拷贝差距陈设文件

那是面向进度的后生可畏种开荒格局

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[root@linux-node1 ~]# mkdir /scripts -p
[root@linux-node1 ~]# cd /scripts/
[root@linux-node1 scripts]# vim deploy.sh
[root@linux-node1 scripts]# chmod +x deploy.sh
[root@linux-node1 scripts]# ./deploy.sh
Usage: ./deploy.sh [ deploy | rollback ]
[root@linux-node1 scripts]# cat deploy.sh
#!/bin/bash
 
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
 
usage(){
    echo  $"Usage: $0 [ deploy | rollback ]"
}
 
code_get(){
    echo code_get
}
 
code_build(){
    echo code_build
}
 
code_config(){
    echo code_config
}
 
code_tar(){
    echo code_tar
}
 
code_scp(){
    echo code_scp
}
 
cluster_node_remove(){
    echo cluster_node_remove
}
 
code_deploy(){
    echo code_deploy
}
 
config_diff(){
    echo config_diff
}
 
code_test(){
    echo code_test
}
 
cluster_node_in(){
    echo cluster_node_in
}
 
rollback(){
    echo rollback
}
 
main(){
    case $1 in
    deploy)
            code_get;
            code_build;
            code_config;
            code_tar;
            code_scp;
            cluster_node_remove;
            code_deploy;
            config_diff;
            code_test;
            cluster_node_in;
            ;;
    rollback)
            rollback;
            ;;
    *)
            usage;
    esac
 
}
main $1
[root@linux-node1 scripts]#

最末尾还要加个main,不然无法实践

 

剧本再优化下

尽量不要让$1来回传,不然也许会乱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
main(){
    DEPLOY_METHOD=$1
    case $DEPLOY_METHOD in
    deploy)
            code_get;
            code_build;
            code_config;
            code_tar;
            code_scp;
            cluster_node_remove;
            code_deploy;
            config_diff;
            code_test;
            cluster_node_in;
            ;;

  

 

持续全面剧本–增加日志和锁
1、凡是不记录日志的台本正是刷流氓,试行到哪一步战败的呀?
2、脚本是或不是能够四人一起实践?(最佳不要三个人一同施行)差异意几人推行的话可以上锁

 

诚如锁文件放上面目录下

1
2
3
4
[root@linux-node1 ~]# cd /var/run/lock/
[root@linux-node1 lock]# ls
iscsi lockdev lvm ppp subsys
[root@linux-node1 lock]#

咱俩得以独自加多个目录,给它用,因为权限难题,供给授权改换属组,大家使用tmp目录

主函数试行以前,应该先推断锁文件是不是留存,实施的时候也应有调换这个lock文件
既然2个地点用到了它,是或不是能够把它制作成变量

新的本子如下,重要增多了锁的成效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
[root@linux-node1 scripts]# cat deploy.sh
#!/bin/bash
 
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"
 
usage(){
    echo  $"Usage: $0 [ deploy | rollback ]"
}
 
shell_lock(){
    touch ${LOCK_FILE}
}
shell_unlock(){
    rm -f ${LOCK_FILE}
}
 
code_get(){
    echo code_get
    sleep 60;
}
 
code_build(){
    echo code_build
}
 
code_config(){
    echo code_config
}
 
code_tar(){
    echo code_tar
}
 
code_scp(){
    echo code_scp
}
 
cluster_node_remove(){
    echo cluster_node_remove
}
 
code_deploy(){
    echo code_deploy
}
 
config_diff(){
    echo config_diff
}
 
code_test(){
    echo code_test
}
 
cluster_node_in(){
    echo cluster_node_in
}
 
rollback(){
    echo rollback
}
 
main(){
    if [ -f ${LOCK_FILE} ];then
    echo "Deploy is running"  && exit;
    fi
    DEPLOY_METHOD=$1
    case $DEPLOY_METHOD in
    deploy)
            shell_lock;
            code_get;
            code_build;
            code_config;
            code_tar;
            code_scp;
            cluster_node_remove;
            code_deploy;
            config_diff;
            code_test;
            cluster_node_in;
        shell_unlock;
            ;;
    rollback)
        shell_lock;
            rollback;
        shell_unlock;
            ;;
    *)
            usage;
    esac
 
}
main $1
[root@linux-node1 scripts]#

  

先实行下检查语法错误

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@linux-node1 scripts]# ./deploy.sh deploy
code_get
code_build
code_config
code_tar
code_scp
cluster_node_remove
code_deploy
config_diff
code_test
cluster_node_in
[root@linux-node1 scripts]# ./deploy.sh rollback
rollback

  

加个sleep测量检验下锁的职能
给一个函数加下sleep 测验下进行中,别的的人是否能够进行这几个剧本

1
2
3
4
code_get(){
    echo code_get
    sleep 60;
}

  

运行脚本

1
2
[root@linux-node1 scripts]# ./deploy.sh deploy
code_get

新开采三个窗口进行测量试验

平常境况下叁个窗口举行计划,再开四个窗口肯定试行不断

1
2
3
4
5
6
7
[root@linux-node1 scripts]# ./deploy.sh deploy
Deploy is running
[root@linux-node1 scripts]# ./deploy.sh deploy
Deploy is running
[root@linux-node1 scripts]# ./deploy.sh rollback
Deploy is running
[root@linux-node1 scripts]#

  

 

日增日志成效

骨子里就是echo意气风发行到日志文件中,每一个函数写加echo 写到日志里,那样比较low
能否写个日志函数,加时间戳。现在天志函数能够复制到其余脚本里

1
2
3
4
5
[www@linux-node1 scripts]$ date "+%Y-%m-%d"
2017-04-23
[www@linux-node1 scripts]$ date "+%H-%M-%S"
22-10-34
[www@linux-node1 scripts]$

  

剧本私下认可从上到下执行,遭遇函数先加载,然而不推行

一而再再而三优化下。如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
 
# Date/Time Veriables
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")
 
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"

 

还不可能如此写,不然事后的时光都以千篇风流倜傥律的
能够改成那样,它不会实行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
 
# Date/Time Veriables
CDATE='date "+%Y-%m-%d"'
CTIME='date "+%H-%M-%S"'
 
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"

包裹的时候,也用到时间戳命名了。还得用贰个稳住不变的时日用来打包
因为解压的时候,scp的时候用必得到消息道明确的包名字。
此处运用了2个时刻,log-date是让它不推行的,cdate是让它实践的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
# Date/Time Veriables
LOG_DATE='date "+%Y-%m-%d"'
LOG_TIME='date "+%H-%M-%S"'
 
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")
 
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/deploy"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"

 

协和先测验下

1
2
3
4
5
6
7
[root@linux-node1 ~]# LOG_DATE='date "+%Y-%m-%d"'
[root@linux-node1 ~]# LOG_TIME='date "+%H-%M-%S"'
[root@linux-node1 ~]# echo $LOG_DATE
date "+%Y-%m-%d"
[root@linux-node1 ~]# echo $LOG_TIME
date "+%H-%M-%S"
[root@linux-node1 ~]#

  

eval的用法

1
2
3
4
5
[root@linux-node1 ~]# eval $LOG_TIME
22-21-05
[root@linux-node1 ~]# eval $LOG_DATE
2017-04-23
[root@linux-node1 ~]#

 

怎能够让它在乎气风发行呢。临时没找到办法(倒是能够独自定义一个年华变量)

1
2
3
4
[root@linux-node1 ~]# eval $LOG_DATE && eval $LOG_TIME
2017-04-23
22-22-48
[root@linux-node1 ~]#   

独自定义一个时刻变量(这里用不到,不过可以完成)

1
2
3
4
5
6
[root@linux-node1 ~]# D_T='date "+%Y-%m-%d-%H-%M-%S"'
[root@linux-node1 ~]# echo $D_T
date "+%Y-%m-%d-%H-%M-%S"
[root@linux-node1 ~]# eval $D_T
2017-04-26-19-33-01
[root@linux-node1 ~]#

工具函数解析澳门京葡网站。  

编辑记录日志函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
usage(){
    echo  $"Usage: $0 [ deploy | rollback ]"
}
 
writelog(){
        LOGINFO=$1
        echo "${CDATE} ${CTIME}: ${SHELL_NAME} : ${LOGINFO}" >> ${SHELL_LOG}
}
 
shell_lock(){
        touch ${LOCK_FILE}
}
 
shell_unlock(){
        rm -f ${LOCK_FILE}
}

  

这样code_get函数就记录日志了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
shell_lock(){
        touch ${LOCK_FILE}
}
 
shell_unlock(){
        rm -f ${LOCK_FILE}
}
 
code_get(){
    writelog code_get;
}
 
code_build(){
    echo code_build
}

  

标准点,加上双引号,分号可要可不要,写上不会报错

1
2
3
4
5
6
7
8
9
10
11
shell_unlock(){
        rm -f ${LOCK_FILE}
}
 
code_get(){
   writelog "code_get";
}
 
code_build(){
    echo code_build
}

  

拿到代码

把代码放何地?

怎么创立那么些目录,写着写着您就精通了

1
2
3
4
5
6
7
8
9
10
11
12
[root@linux-node1 scripts]# mkdir /deploy/config -p
[root@linux-node1 scripts]# mkdir /deploy/tmp -p
[root@linux-node1 scripts]# mkdir /deploy/tar -p
[root@linux-node1 scripts]# mkdir /deploy/code -p
[root@linux-node1 scripts]# cd /deploy/
[root@linux-node1 deploy]# ll
total 0
drwxr-xr-x 2 root root 6 Apr 23 22:37 code
drwxr-xr-x 2 root root 6 Apr 23 22:37 config
drwxr-xr-x 2 root root 6 Apr 23 22:37 tar
drwxr-xr-x 2 root root 6 Apr 23 22:37 tmp
[root@linux-node1 deploy]#

  

 

最终目录建构成这种

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@linux-node1 deploy]# cd code/
[root@linux-node1 code]# mkdir web-demo -p
[root@linux-node1 code]# cd ..
[root@linux-node1 deploy]# tree
.
├── code
│   └── web-demo
├── config
├── tar
└── tmp
 
5 directories, 0 files
[root@linux-node1 deploy]#

  

校正剧本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Shell Env
SHELL_NAME="deploy.sh"
SHELL_DIR="/home/www"
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
 
#Code Env
CODE_DIR="/deploy/code/web-demo"
CONFIG_DIR="/deploy/config"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"
 
usage(){
    echo  $"Usage: $0 [ deploy | rollback ]"
}

  

部分无需编写翻译,拉下代码之后,能够先把安插文件放进去

1
2
3
4
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && git pull
}

  

安排文件不要放这么些目录下,这些目录只用来更新—git
pull.你倒霉判别配置文件是仓库里面包车型大巴,还是你非常下载下来的(最棒试行State of Qatar
布置的时候,只让这里目录实行git pull

上边那一个目录用于整合配置文件。

1
TMP_DIR="/deploy/tmp"

  

接二连三优化获替代码的函数

1
2
3
4
5
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && git pull
    cp -r ${CODE_DIR} ${TMP_DIR}/
}

  

配置操作的函数时候,感觉不确切,应该分别连串,标准化。比如web-demo可见为多个种类包名字

1
2
3
4
5
6
#Code Env
CODE_DIR="/deploy/code/web-demo"
CONFIG_DIR="/deploy/config/web-demo"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"

  

目录新建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@linux-node1 scripts]# cd /deploy/
[root@linux-node1 deploy]# cd config/
[root@linux-node1 config]# mkdir web-demo
[root@linux-node1 config]# cd ..
[root@linux-node1 deploy]# tree
.
├── code
│   └── web-demo
├── config
│   └── web-demo
├── tar
└── tmp
 
6 directories, 0 files
[root@linux-node1 deploy]#

  

依傍下,在中间写上hehe

1
2
3
4
5
6
[root@linux-node1 deploy]# cd config/
[root@linux-node1 config]# cd web-demo/
[root@linux-node1 web-demo]# vim config.ini
[root@linux-node1 web-demo]# cat config.ini
hehe
[root@linux-node1 web-demo]#

  

因为web-demo项目现身多次,把它弄成变量

1
2
3
4
5
6
7
#Code Env
PRO_NAME="web-demo"
CODE_DIR="/deploy/code/web-demo"
CONFIG_DIR="/deploy/config/web-demo"
TMP_DIR="/deploy/tmp"
TAR_DIR="/deploy/tar"
LOCK_FILE="/tmp/deploy.lock"

  

调动下脚本,优化code_config函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && git pull
    cp -r ${CODE_DIR} ${TMP_DIR}/
}
 
code_build(){
    echo code_build
}
 
code_config(){
    echo code_config
    /bin/cp -r $CONFIG_DIR/* $TMP_DIR/$PRO_NAME
}

  

正规下,给变量加大括号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && git pull
    cp -r ${CODE_DIR} ${TMP_DIR}/
}
 
code_build(){
    echo code_build
}
 
code_config(){
    echo code_config
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
}

只顾是/bin/cp ,那样原来有布置文件,这里能够一直交流了
假若开垦把陈设文件打包进去了。连接的是测量试验的库,即便你安顿临盆条件了,连接测量试验的库。出了难点,什么人背黑锅
运维是最后豆蔻梢头道防线。开荒和测验没遇到。你背黑锅

 

该给包重命名了

1
2
3
4
5
code_config(){
    echo code_config
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"-"${CDATE}-${CTIME}"
}

  

继续优化

1
2
3
4
5
6
code_config(){
    echo code_config
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"-"${CDATE}-${CTIME}"
    cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
}

  

增添版本号,先随意定义个本子

1
2
3
4
5
6
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && git pull
    cp -r ${CODE_DIR} ${TMP_DIR}/
    API_VER="123"
}

  

前段时间未曾git pull 假装以echo 替代git pull

1
2
3
4
5
6
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && echo "git pull"
    cp -r ${CODE_DIR} ${TMP_DIR}/
    API_VER="123"
}

  

属组授权

1
2
[root@linux-node1 scripts]# chown -R www:www /deploy/
[root@linux-node1 scripts]#

  

剧情为hehe,生成代码(页面)

1
2
3
4
5
[root@linux-node1 scripts]# cd /deploy/code/web-demo/
[root@linux-node1 web-demo]# echo hehe>>index.html
[root@linux-node1 web-demo]# cat index.html
hehe
[root@linux-node1 web-demo]#

  

文件和目录结构如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@linux-node1 deploy]# tree
.
├── code
│   └── web-demo
│       └── index.html
├── config
│   └── web-demo
│       └── config.ini
├── tar
└── tmp
 
6 directories, 2 files
[root@linux-node1 deploy]#

  

以www顾客测验脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@linux-node1 deploy]# cd /scripts/
[root@linux-node1 scripts]# chown -R www:www /scripts/deploy.sh
[root@linux-node1 scripts]# ll
total 12
-rw-r--r-- 1 root root  234 Apr  3 23:51 cobbler_list.py
-rw-r--r-- 1 root root 1533 Apr  4 00:01 cobbler_system_api.py
-rwxr-xr-x 1 www  www  1929 Apr 23 23:04 deploy.sh
[root@linux-node1 scripts]# su - www
Last login: Sun Apr 23 22:06:44 CST 2017 on pts/0
[www@linux-node1 scripts]$ ./deploy.sh  deploy
git pull
code_build
code_config
code_tar
code_scp
cluster_node_remove
code_deploy
config_diff
code_test
cluster_node_in
[www@linux-node1 scripts]$

  

测量试验结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[www@linux-node1 scripts]$ tree /deploy/
/deploy/
├── code
│   └── web-demo
│       └── index.html
├── config
│   └── web-demo
│       └── config.ini
├── tar
└── tmp
    ├── web-demo_123-2017-04-23-23-12-15
    │   ├── config.ini
    │   └── index.html
    └── web-demo_123-2017-04-23-23-13-20
        ├── config.ini
        └── index.html
 
8 directories, 6 files
[www@linux-node1 scripts]$

  

本子和时间之内部管理体改成下划线

1
2
3
4
5
6
code_config(){
    echo code_config
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"_"${CDATE}-${CTIME}"
    cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
}

  

双重执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_config
code_tar
code_scp
cluster_node_remove
code_deploy
config_diff
code_test
cluster_node_in
[www@linux-node1 scripts]$ tree /deploy/
/deploy/
├── code
│   └── web-demo
│       └── index.html
├── config
│   └── web-demo
│       └── config.ini
├── tar
└── tmp
    ├── web-demo_123-2017-04-23-23-12-15
    │   ├── config.ini
    │   └── index.html
    ├── web-demo_123-2017-04-23-23-13-20
    │   ├── config.ini
    │   └── index.html
    └── web-demo_123_2017-04-23-23-17-20
        ├── config.ini
        └── index.html
 
9 directories, 8 files
[www@linux-node1 scripts]$

  

 

能够看出tmp目录须要准时清理

给上边2个函数加写日志效用

1
2
3
4
5
6
7
8
9
10
code_config(){
    writelog "code_config"
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"_"${CDATE}-${CTIME}"
    cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
}
 
code_tar(){
    writelog "code_tar"
}

  

装进,记录日志

1
2
3
4
5
code_tar(){
    writelog "code_tar"
    cd ${TMP_DIR} && tar cfz ${PKG_NAME}.tar.gz ${PKG_NAME}
    writelog "${PKG_NAME}.tar.gz"
}

  

重新测量检验脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
cluster_node_remove
code_deploy
config_diff
code_test
cluster_node_in
[www@linux-node1 scripts]$ tree /deploy/
/deploy/
├── code
│   └── web-demo
│       └── index.html
├── config
│   └── web-demo
│       └── config.ini
├── tar
└── tmp
    ├── web-demo_123-2017-04-23-23-12-15
    │   ├── config.ini
    │   └── index.html
    ├── web-demo_123-2017-04-23-23-13-20
    │   ├── config.ini
    │   └── index.html
    ├── web-demo_123_2017-04-23-23-17-20
    │   ├── config.ini
    │   └── index.html
    ├── web-demo_123_2017-04-23-23-22-09
    │   ├── config.ini
    │   └── index.html
    └── web-demo_123_2017-04-23-23-22-09.tar.gz
 
10 directories, 11 files
[www@linux-node1 scripts]$

  

 

 

预备拷贝到指标服务器

前4步都甘休,开始第五步–拷贝到指标服务器

澳门京葡网站 3

 

 遍历节点

1
2
3
4
5
[www@linux-node1 scripts]$ node_list="192.168.58.11 192.168.58.12"
[www@linux-node1 scripts]$ for node in $node_list;do echo $node;done
192.168.58.11
192.168.58.12
[www@linux-node1 scripts]$

  

本子里丰裕node_list

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
 
#Node List
NODE_LIST="192.168.58.11 192.168.58.12"
 
# Date/Time Veriables
LOG_DATE='date "+%Y-%m-%d"'
LOG_TIME='date "+%H-%M-%S"'
 
CDATE=$(date "+%Y-%m-%d")
CTIME=$(date "+%H-%M-%S")

  

 分发到目的节点

1
2
3
4
5
6
code_scp(){
    echo code_scp
    for node in $NODE_LIST;do
      scp ${TMP_DIR}/${PKG_NAME}.tar.gz   $node:/opt/webroot/
      done
}

  

2台机械建构webroot

1
2
3
4
5
6
[root@linux-node1 scripts]# mkdir /opt/webroot -p
[root@linux-node1 scripts]# chown -R www:www /opt/webroot
[root@linux-node1 scripts]#
[root@linux-node2 ~]# mkdir /opt/webroot -p
[root@linux-node2 ~]# chown -R www:www /opt/webroot
[root@linux-node2 ~]#

  

 完备拷贝函数

1
2
3
4
5
6
code_scp(){
    echo code_scp
    for node in $NODE_LIST;do
      scp ${TMP_DIR}/${PKG_NAME}.tar.gz $node:/opt/webroot/
      done
}

  

 

再一次安顿测验下

1
2
3
4
5
6
7
8
9
10
11
12
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
web-demo_123_2017-04-23-23-33-50.tar.gz                100%  204     0.2KB/s   00:00   
web-demo_123_2017-04-23-23-33-50.tar.gz                100%  204     0.2KB/s   00:00   
cluster_node_remove
code_deploy
config_diff
code_test
cluster_node_in
[www@linux-node1 scripts]$

  

检查

1
2
3
4
5
6
7
8
9
10
11
12
[www@linux-node1 scripts]$ tree /opt/webroot/
/opt/webroot/
└── web-demo_123_2017-04-23-23-33-50.tar.gz
 
0 directories, 1 file
[www@linux-node1 scripts]$
[root@linux-node2 ~]# tree /opt/webroot/
/opt/webroot/
└── web-demo_123_2017-04-23-23-33-50.tar.gz
 
0 directories, 1 file
[root@linux-node2 ~]#

  

 该第6步了,写个日志替代

澳门京葡网站 4

1
2
3
cluster_node_remove(){
writelog "cluster_node_remove"
}

 

解抓实现,拷贝差别文件。你要把差距文件单独放二个索引下。不要和安顿文件放一块

修正下边,上边是同等配置目录文件

1
2
3
4
5
6
code_config(){
    writelog "code_config"
    /bin/cp -r ${CONFIG_DIR}/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"_"${CDATE}-${CTIME}"
    cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
}

改成如下

1
2
3
4
5
6
code_config(){
    writelog "code_config"
    /bin/cp -r ${CONFIG_DIR}/base/* ${TMP_DIR}/"${PRO_NAME}"
    PKG_NAME="${PRO_NAME}"_"${API_VER}"_"${CDATE}-${CTIME}"
    cd ${TMP_DIR} && mv ${PRO_NAME} ${PKG_NAME}
}

  

始建立造文件目录,base存放形似的布置,other寄放差距配置

1
2
3
4
5
6
7
8
9
[www@linux-node1 scripts]$ cd /deploy/config/web-demo/
[www@linux-node1 web-demo]$ mkdir base
[www@linux-node1 web-demo]$ mkdir other
[www@linux-node1 web-demo]$ ll
total 4
drwxrwxr-x 2 www www 6 Apr 23 23:38 base
-rw-r--r-- 1 www www 5 Apr 23 22:46 config.ini
drwxrwxr-x 2 www www 6 Apr 23 23:38 other
[www@linux-node1 web-demo]$

 

调度下布置文件所在目录

1
2
3
4
5
6
7
[www@linux-node1 web-demo]$ mv config.ini base/
[www@linux-node1 web-demo]$ cd other/
[www@linux-node1 other]$ echo 192.168.58.12-config >>192.168.58.12.crontab.xml
[www@linux-node1 other]$ ll
total 4
-rw-rw-r-- 1 www www 21 Apr 23 23:39 192.168.58.12.crontab.xml
[www@linux-node1 other]$

  

拷贝差距文件到对象服务器的指标目录

1
2
3
4
5
6
7
8
9
code_deploy(){
    echo code_deploy
    cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz
}
 
config_diff(){
    echo config_diff
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/opt/webroot/${PKG_NAME}
}

  

再一次测量检验

1
2
3
4
5
6
7
8
9
10
11
12
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
web-demo_123_2017-04-23-23-43-48.tar.gz                       100%  204     0.2KB/s   00:00   
web-demo_123_2017-04-23-23-43-48.tar.gz                       100%  204     0.2KB/s   00:00   
code_deploy
config_diff
192.168.58.12.crontab.xml                                     100%   21     0.0KB/s   00:00   
code_test
cluster_node_in
[www@linux-node1 scripts]$

  

地点还大概有不足的地点,scp到对象服务器并解压,应该运用ssh远程施行、。上面脚本远程node2上解压是战败的
本子再度退换下,把安顿的函数和差异配置合并到一块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/opt/webroot/${PKG_NAME}/crontab.xml
}
 
code_test(){
    echo code_test
}

  

创建webroot

1
2
3
4
5
6
7
8
[root@linux-node1 ~]# mkdir /webroot
[root@linux-node1 ~]# chown -R www:www /webroot
[root@linux-node1 ~]#
 
 
[root@linux-node2 ~]# mkdir /webroot
[root@linux-node2 ~]# chown -R www:www /webroot
[root@linux-node2 ~]#

  

再一次对安插函数优化,增添应用软链接参数(那一个是秒级回滚的主要)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/opt/webroot/${PKG_NAME}/crontab.xml
    ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo
}
 
code_test(){
    echo code_test
}

  

再也对台本优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/opt/webroot/${PKG_NAME}/crontab.xml
    rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo
}
 
code_test(){
    echo code_test
}

  

自动化布置的精粹,成立软链接

对剧本优化,每种服务器要实践同风度翩翩的操作,因而身处循环里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
      rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/opt/webroot/${PKG_NAME}/crontab.xml
}
 
code_test(){
    echo code_test
}

  

拷贝差异文件应该成立软链接之后拷贝,其实正是渠道写的少点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
      rm -f /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/webroot/web-demo/crontab.xml
}
 
code_test(){
    echo code_test
}

 

首先次没软链接,会报错。必要先手动创制个软连接,或然先成立web-demo目录

其实本身觉的通通能够在地点脚本里出席mkdir /webroot/web-demo -p
那样永恒不会错

1
2
3
4
5
[www@linux-node1 scripts]$ cd /webroot/
[www@linux-node1 webroot]$ mkdir web-demo -p
[www@linux-node1 webroot]$
[root@linux-node2 webroot]# mkdir web-demo -p
[root@linux-node2 webroot]#

  

重复施行安排脚本。node1实现了

接轨优化脚本,rm -rf 这里要写为-rf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cluster_node_remove(){
    writelog "cluster_node_remove"
}
 
code_deploy(){
    echo code_deploy
    for node in $NODE_LIST;do
      ssh $node "cd /opt/webroot/ && tar xfz ${PKG_NAME}.tar.gz"
      ssh $node "rm -rf /webroot/web-demo && ln -s /opt/webroot/${PKG_NAME} /webroot/web-demo"
    done
    scp ${CONFIG_DIR}/other/192.168.58.12.crontab.xml 192.168.58.12:/webroot/web-demo/crontab.xml
}
 
code_test(){
    echo code_test
}

  

测量检验脚本

1
2
3
4
5
6
7
8
9
10
11
12
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
web-demo_123_2017-04-24-00-01-24.tar.gz                       100%  204     0.2KB/s   00:00   
web-demo_123_2017-04-24-00-01-24.tar.gz                       100%  204     0.2KB/s   00:00   
code_deploy
192.168.58.12.crontab.xml                                     100%   21     0.0KB/s   00:00   
./deploy.sh: line 113: config_diff: command not found
code_test
cluster_node_in
[www@linux-node1 scripts]$

主函数里,删除这一个 config_diff

 

后续测量试验和反省

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
测试
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
web-demo_123_2017-04-24-00-02-44.tar.gz                       100%  205     0.2KB/s   00:00   
web-demo_123_2017-04-24-00-02-44.tar.gz                       100%  205     0.2KB/s   00:00   
code_deploy
192.168.58.12.crontab.xml                                     100%   21     0.0KB/s   00:00   
code_test
cluster_node_in
[www@linux-node1 scripts]$
检查
[www@linux-node1 scripts]$ ll /webroot/
total 0
lrwxrwxrwx 1 www www 45 Apr 24 00:02 web-demo -> /opt/webroot/web-demo_123_2017-04-24-00-02-44
[www@linux-node1 scripts]$
 
[root@linux-node2 webroot]# ll /webroot/
total 0
lrwxrwxrwx 1 www www 45 Apr 24 00:02 web-demo -> /opt/webroot/web-demo_123_2017-04-24-00-02-44
[root@linux-node2 webroot]#

  

仿照版本更新,把版本写成456

1
2
3
4
5
6
code_get(){
    writelog "code_get";
    cd $CODE_DIR  && echo "git pull"
    cp -r ${CODE_DIR} ${TMP_DIR}/
    API_VER="456"
}

  

世袭测量检验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[www@linux-node1 scripts]$ ./deploy.sh deploy
git pull
code_build
code_scp
web-demo_456_2017-04-24-00-04-05.tar.gz                       100%  204     0.2KB/s   00:00   
web-demo_456_2017-04-24-00-04-05.tar.gz                       100%  204     0.2KB/s   00:00   
code_deploy
192.168.58.12.crontab.xml                                     100%   21     0.0KB/s   00:00   
code_test
cluster_node_in
[www@linux-node1 scripts]$ ll /webroot/
total 0
lrwxrwxrwx 1 www www 45 Apr 24 00:04 web-demo -> /opt/webroot/web-demo_456_2017-04-24-00-04-05
[www@linux-node1 scripts]$

检查

链接 到了新的本子

发表评论

电子邮件地址不会被公开。 必填项已用*标注