如何快速部署代码到多个机器? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
zhouyg
V2EX    云计算

如何快速部署代码到多个机器?

  •  
  •   zhouyg 2016-05-18 11:57:29 +08:00 7328 次点击
    这是一个创建于 3443 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设有 10 台机器,我要先安装 nodejs 和一些 npm 依赖包,以及我的工程代码

    怎么每次更新代码和更新 npm 依赖包都可以同步进行。

    总不能一个一个机器装过去吧。

    41 条回复    2016-05-25 11:08:55 +08:00
    cmaster
        1
    cmaster  
       2016-05-18 12:08:58 +08:00
    听说过 docker 吗
    qooweds
        2
    qooweds  
       2016-05-18 12:09:18 +08:00
    文件可以 rsync 过去,命令可以 ssh 过去
    写个循环就行了
    zaishanfeng
        3
    zaishanfeng  
       2016-05-18 12:13:40 +08:00 via Android
    部署脚本啊
    ShiHou
        4
    ShiHou  
       2016-05-18 12:17:35 +08:00
    docker
    SpicyCat
        5
    SpicyCat  
       2016-05-18 12:19:36 +08:00
    docker
    ansible
    自己写脚本,用 CI 部署。

    其实上述三者可以配合使用
    sivacohan
        6
    sivacohan  
    PRO
       2016-05-18 12:22:43 +08:00
    fabric 把你的步骤写里面就完了。

    或者使用 saltstack , puppet , chef 等工具。
    tagtag
        7
    tagtag  
       2016-05-18 13:29:57 +08:00
    docker 可以解决,就是生产环境谁来承担技术风险
    jamiesun
        8
    jamiesun  
       2016-05-18 15:17:14 +08:00
    fabric 比较简单直接
    donghouhe
        9
    donghouhe  
       2016-05-18 15:28:52 +08:00
    跟帖的毫无疑问都是运维狗,哈哈哈
    donghouhe
        10
    donghouhe  
       2016-05-18 15:29:00 +08:00
    我也是
    zhouyg
        11
    zhouyg  
    OP
       2016-05-18 15:33:28 +08:00
    @tagtag docker 居然有风险?
    marrysail
        12
    marrysail  
       2016-05-18 15:34:24 +08:00
    问个问题, docker 部署后,出现 N 多 none 的 image ,怎么破? 只能删除 container 重新 run ?
    sakeven
        13
    sakeven  
       2016-05-18 15:54:41 +08:00
    @marrysail none 的 image 删掉就行,不需要删 container 啊。
    yuxing1171
        14
    yuxing1171  
       2016-05-18 16:15:55 +08:00
    我一直用 git + rsync , 感觉好落后。
    Kilerd
        15
    Kilerd  
       2016-05-18 16:18:30 +08:00 via Android
    docker 或者 fabric
    yseternal
        16
    yseternal  
       2016-05-18 19:19:11 +08:00
    我们是在 teamcity 上自动构建,也就是在一台服务器上 git clone ,然后 npm install ,接着构建,生成的东西全部打个包,接着用 fabric 脚本发送到 n 个服务器解压
    atnoot
        17
    atnoot  
       2016-05-18 19:25:37 +08:00
    git 就可以了 npm 安装可以在初始化做 npm 文件都放到 git 里 ssh + git clone 一下就可以
    ichou
        18
    ichou  
       2016-05-18 19:26:50 +08:00
    cap
    YUX
        19
    YUX  
    PRO
       2016-05-18 19:26:58 +08:00
    我用 Docker
    m31271n
        20
    m31271n  
       2016-05-18 19:35:28 +08:00
    * Ansible (Python)
    * Fabric (Python)
    * Flightplan (Node.js)
    * Puppet , Chef ( Ruby)

    他们说的 Docker 也可以,看你有 10 台机器,肯定是公司的业务。这些东西你不能放到 Docker Hub 公有仓库上:
    * 要么花钱买仓库
    * 要么自己费事搭私有的 Registry
    m31271n
        21
    m31271n  
       2016-05-18 19:36:41 +08:00
    但总体来说, Docker 是最靠谱的。
    fatpa
        22
    fatpa  
       2016-05-18 19:46:11 +08:00
    先生您听说过 fabric 和 docker 么
    mytsing520
        23
    mytsing520  
    PRO
       2016-05-18 21:22:38 +08:00
    docker
    Damnever
        24
    Damnever  
       2016-05-18 21:30:08 +08:00   1
    @marrysail 这条命令应该行,玩过几次 docker

    docker rmi $(docker images | awk '{if (NR > 1 && $2 == "<none>") print $3}')
    sky170
        25
    sky170  
       2016-05-18 22:16:58 +08:00
    docker
    huigeer
        26
    huigeer  
       2016-05-18 23:25:31 +08:00 via iPhone
    表示用阿里云的镜像部署系统环境,用代码发布机 rsync 循环发送到目标服务器
    lonelygo
        27
    lonelygo  
       2016-05-18 23:39:35 +08:00
    @cmaster 看了题目就想到 Docker ,结果 1 楼果然是。
    R4rvZ6agNVWr56V0
        28
    R4rvZ6agNVWr56V0  
       2016-05-18 23:44:40 +08:00
    rsync 增量传吧,有能力的话用 docker 也挺好
    bear330
        29
    bear330  
       2016-05-19 00:32:33 +08:00
    docker 一也不靠, bug 奇多, 一天到晚在掉坑
    不好很明, 很花在坑的和用了它省下的算起划不划算
    fabric 以主的景多了, 不必折
    DravenJohnson
        30
    DravenJohnson  
       2016-05-19 00:49:44 +08:00
    Ansible
    xiamx
        31
    xiamx  
       2016-05-19 06:19:28 +08:00
    ansible? puppet? chef?
    mesos/marathon?
    janxin
        32
    janxin  
       2016-05-19 07:35:26 +08:00 via iPhone
    部署工具,要不然管理上百台机器的运维不得累死了
    mumonitor
        33
    mumonitor  
       2016-05-19 07:47:20 +08:00
    最低级别: pssh
    中等级别: puppet 、 ansible 、 salt 等配置工具

    docker 其实有点偏题了,改动大了去了。服务注册、服务发现、网络、系统都需要跟上才行;
    xencdn
        34
    xencdn  
       2016-05-19 08:48:19 +08:00
    rsync 是个神奇的软件
    Dannytmp
        35
    Dannytmp  
       2016-05-19 09:09:50 +08:00
    运维狗的职业生涯不知能持续多久啊
    ajasonwang
        36
    ajasonwang  
       2016-05-19 11:41:17 +08:00   1
    我司购买的是 IBM UrbanCode Deploy 做部署,比 jenkins 的直观优势就是并行发布多台机器
    devqin
        37
    devqin  
       2016-05-19 22:48:47 +08:00
    战略性 mark
    hanxiV2EX
        38
    hanxiV2EX  
       2016-05-20 07:41:06 +08:00 via iPhone
    建议写好解压安装启动的 bash 脚本,然后再写个循环 ssh 的脚本远程控制。
    zhouyg
        39
    zhouyg  
    OP
       2016-05-20 14:19:50 +08:00
    @hanxiV2EX 这个用 pssh 的思路吧,用脚本批量拷过去
    hanxiV2EX
        40
    hanxiV2EX  
       2016-05-20 21:32:44 +08:00 via iPhone
    @zhouyg 没用过 pssh, 我直接用的 ssh
    dudesun
        41
    dudesun  
       2016-05-25 11:08:55 +08:00
    git+jenkins+saltstack
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     918 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 90ms UTC 21:15 PVG 05:15 LAX 14:15 JFK 17:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86