Git 拉取多台服务器

Git pull on multiple servers

我在 Github 上有一个 Web 应用程序,其服务器配备了 Hosted Chef 服务器和 Cloudformation。在网上搜索了最后几个小时但没有成功后,有人可以提供一些见解如何使用 Chef 对指向多个服务器(全部冗余)的应用程序进行 git 拉取。本质上,apps master 分支被拉入每个服务器,其中服务器的数量由 chef server 知道。

任何指导将不胜感激。

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

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

  1. 多个遥控器

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

  2. 为了将更改从 git 集线器拉到多个服务器,请阅读 git集线器 webhooks and how to configure your server to support it. you will to use ngrok

希望能解决您的问题。

如果您想要"manually" 提取更改,您可能需要编写一个knife ssh 命令。您可以像这样使用它:

$ knife ssh SEARCH_QUERY SSH_COMMAND (options)

或者您的情况:

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

如果你想定期这样做,你需要创建食谱,这将成为你的节点 运行 列表的一部分,然后在每个节点上触发厨师客户端:

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

或者由 运行ning chef-client 作为守护进程自动完成。

$ sudo chef-client -d --interval SECONDS

我在想你可以使用 chef deploy 资源。关于部署资源的唯一棘手的部分是向 git.

进行身份验证所需的 ssh 包装器

那我会做:

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