是否有一种简单的方法可以将代码并行推送到50个websevers **?

时间:2014-02-01 06:40:03

标签: git deployment web-deployment

说我有一个不错的git服务器(源代码回购)。我想将代码推送到50个websevers,我可以按顺序执行以下

#!/bin/bash
for i in {1..50}
do 
    ssh root@websever$i '(cd /var/www/project; git pull)'
done

问题: 有没有一种简单的方法可以将代码推送到50个并行的websevers ?感谢。

3 个答案:

答案 0 :(得分:2)

这个similar question可能是相关的(建议使用Bash子shell或GNU并行实用程序)。

我假设您想要使用git“安装”代码以实现50个盒子,并且您可能必须在重新启动Web服务器的情况下单独“部署”该代码。

我要提出的建议是,现在看起来可能不像项目的类型,但如果这个项目增长,那么构建“发布工件”(例如版本化的tar-ball或zip文件)将会变得更有利。而不是一直从分支头上拉。优点是您可以创建表示发布工件的二进制文件,如果出现问题,您可以轻松地回滚更改。

(旁白:您可能想要使用

ssh root@webserver$i "(cd /var/www/project; git pull)" 

作为一个班轮。)

答案 1 :(得分:1)

你可以制作2个剧本

dogitjob.sh:

#!/bin/bash
ssh root@webserver$1 "(cd /var/www/project; git pull)" 

main.sh

#!/bin/bash
for i in {1..50}
do 
    bash dogitjob.sh $i &
done

这些是非常基本的脚本,仅用于展示想法

aloso有一些像dsh或pssh这样的工具,它们被描述为here

答案 2 :(得分:1)

如果要尽可能快地跨多个服务器部署软件的更改和升级,则应该查看BitTorrent以将文件分发到大量服务器。

您可以阅读Twitter对distributed, large-scale code deployment和结帐Murder的方法的简要概述

相关问题