我在Github上有一个Web应用程序,其服务器配置了Hosted Chef服务器和Cloudformation。在没有运气的情况下搜索网络过去几个小时之后,有人可以通过使用Chef来了解如何使用针对多个服务器(全部冗余)的应用程序执行git pull。基本上,应用程序主分支被拉入每个服务器,其中服务器的数量由厨师服务器知道。
任何指导都将受到高度赞赏。
答案 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)
我不清楚你想做什么,所以我会回答两个问题:
多个遥控器
如果您需要将代码拉/推到多个存储库,则只需将多个 remotes
添加到您的git存储库。
为了将更改从git hub更改为多个服务器,请阅读github webhooks 以及如何 configure your server 来支持它。您将使用 ngrok
希望它能解决你的问题。
答案 2 :(得分:1)
我在想你可以使用chef deploy资源。关于部署资源的唯一棘手的部分是对git进行身份验证所需的ssh包装器。
然后我会这样做:
knife ssh 'name:somepattern' 'chef-client'