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 · 6903 次点击
    这是一个创建于 3113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设有 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  
       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  
       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  
       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 楼果然是。
    GeekGao
        28
    GeekGao  
       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   ·   实用小工具   ·   3368 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:05 · PVG 20:05 · LAX 04:05 · JFK 07:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.