Git拉上多台服务器

时间:2015-02-05 07:01:14

标签: git github chef githooks

我在Github上有一个Web应用程序,其服务器配置了Hosted Chef服务器和Cloudformation。在没有运气的情况下搜索网络过去几个小时之后,有人可以通过使用Chef来了解如何使用针对多个服务器(全部冗余)的应用程序执行git pull。基本上,应用程序主分支被拉入每个服务器,其中服务器的数量由厨师服务器知道。

任何指导都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

如果你想"手动"拉变化,您可能需要编写knife ssh命令。您可以像使用它一样使用它:

$ knife ssh SEARCH_QUERY SSH_COMMAND (options)

或在你的情况下:

$ knife ssh "role:web" "cd my_app && git pull"

如果您想定期执行此操作,则需要创建将成为节点运行列表一部分的cookbook,然后在每个节点上触发chef客户端:

$ knife ssh "role:web" "sudo chef-client"

或通过将chef-client作为守护程序自动执行。

$ sudo chef-client -d --interval SECONDS

答案 1 :(得分:1)

我不清楚你想做什么,所以我会回答两个问题:

  1. 将多个服务器推送到git hub
  2. 后,将其更改
  3. 从git hub提取不同服务器的更改

    1. 多个遥控器

      如果您需要将代码拉/推到多个存储库,则只需将多个 remotes 添加到您的git存储库。

    2. 为了将更改从git hub更改为多个服务器,请阅读github webhooks 以及如何 configure your server 来支持它。您将使用 ngrok

    3. 希望它能解决你的问题。

答案 2 :(得分:1)

我在想你可以使用chef deploy资源。关于部署资源的唯一棘手的部分是对git进行身份验证所需的ssh包装器。

然后我会这样做:

knife ssh 'name:somepattern' 'chef-client'