首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
V2EX  ›  云计算

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

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

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

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

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

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

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

    或者使用 saltstack , puppet , chef 等工具。
        7
    tagtag   2016-05-18 13:29:57 +08:00
    docker 可以解决,就是生产环境谁来承担技术风险
        8
    jamiesun   2016-05-18 15:17:14 +08:00
    fabric 比较简单直接
        9
    donghouhe   2016-05-18 15:28:52 +08:00
    跟帖的毫无疑问都是运维狗,哈哈哈
        10
    donghouhe   2016-05-18 15:29:00 +08:00
    我也是
        11
    zhouyg   2016-05-18 15:33:28 +08:00
    @tagtag docker 居然有风险?
        12
    marrysail   2016-05-18 15:34:24 +08:00
    问个问题, docker 部署后,出现 N 多 none 的 image ,怎么破? 只能删除 container 重新 run ?
        13
    sakeven   2016-05-18 15:54:41 +08:00
    @marrysail none 的 image 删掉就行,不需要删 container 啊。
        14
    yuxing1171   2016-05-18 16:15:55 +08:00
    我一直用 git + rsync , 感觉好落后。
        15
    Kilerd   2016-05-18 16:18:30 +08:00 via Android
    docker 或者 fabric
        16
    yseternal   2016-05-18 19:19:11 +08:00
    我们是在 teamcity 上自动构建,也就是在一台服务器上 git clone ,然后 npm install ,接着构建,生成的东西全部打个包,接着用 fabric 脚本发送到 n 个服务器解压
        17
    atnoot   2016-05-18 19:25:37 +08:00
    git 就可以了 npm 安装可以在初始化做 npm 文件都放到 git 里 ssh + git clone 一下就可以
        18
    ichou   2016-05-18 19:26:50 +08:00
    cap
        19
    YUX   2016-05-18 19:26:58 +08:00
    我用 Docker
        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
        21
    m31271n   2016-05-18 19:36:41 +08:00
    但总体来说, Docker 是最靠谱的。
        22
    fatpa   2016-05-18 19:46:11 +08:00
    先生您听说过 fabric 和 docker 么
        23
    mytsing520   2016-05-18 21:22:38 +08:00
    docker
        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}')
        25
    sky170   2016-05-18 22:16:58 +08:00
    docker
        26
    huigeer   2016-05-18 23:25:31 +08:00 via iPhone
    表示用阿里云的镜像部署系统环境,用代码发布机 rsync 循环发送到目标服务器
        27
    lonelygo   2016-05-18 23:39:35 +08:00
    @cmaster 看了题目就想到 Docker ,结果 1 楼果然是。
        28
    GeekGao   2016-05-18 23:44:40 +08:00
    rsync 增量传吧,有能力的话用 docker 也挺好
        29
    bear330   2016-05-19 00:32:33 +08:00
    docker 一點也不靠譜, bug 奇多, 一天到晚在掉坑
    不過好處確實很明顯, 很難說準花在坑裡的時間和用了它省下來的時間算起來划不划算
    fabric 以樓主的場景來說簡單多了, 不必折騰
        30
    DravenJohnson   2016-05-19 00:49:44 +08:00
    Ansible
        31
    xiamx   2016-05-19 06:19:28 +08:00
    ansible? puppet? chef?
    mesos/marathon?
        32
    janxin   2016-05-19 07:35:26 +08:00 via iPhone
    部署工具,要不然管理上百台机器的运维不得累死了
        33
    mumonitor   2016-05-19 07:47:20 +08:00
    最低级别: pssh
    中等级别: puppet 、 ansible 、 salt 等配置工具

    docker 其实有点偏题了,改动大了去了。服务注册、服务发现、网络、系统都需要跟上才行;
        34
    xencdn   2016-05-19 08:48:19 +08:00
    rsync 是个神奇的软件
        35
    Dannytmp   2016-05-19 09:09:50 +08:00
    运维狗的职业生涯不知能持续多久啊
        36
    ajasonwang   2016-05-19 11:41:17 +08:00   ♥ 1
    我司购买的是 IBM UrbanCode Deploy 做部署,比 jenkins 的直观优势就是并行发布多台机器
        37
    devqin   2016-05-19 22:48:47 +08:00
    战略性 mark
        38
    hanxiV2EX   2016-05-20 07:41:06 +08:00 via iPhone
    建议写好解压安装启动的 bash 脚本,然后再写个循环 ssh 的脚本远程控制。
        39
    zhouyg   2016-05-20 14:19:50 +08:00
    @hanxiV2EX 这个用 pssh 的思路吧,用脚本批量拷过去
        40
    hanxiV2EX   2016-05-20 21:32:44 +08:00 via iPhone
    @zhouyg 没用过 pssh, 我直接用的 ssh
        41
    dudesun   2016-05-25 11:08:55 +08:00
    git+jenkins+saltstack
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   944 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    ♥ Do have faith in what you're doing.