我将从Capistrano转到Chef,部署Rails应用程序(使用修订),而关于最佳实践(或通用实践)的问题在我看来并不清楚。我在谷歌上发现的不多。
使用Capistrano和"push“模型,在跨多个服务器部署应用程序时,很容易识别部署失败的时间,并同时在所有服务器上回滚部署。Capistrano还在每个应用服务器上设置了一个维护页面,除非我已经成功地部署到所有服务器或回滚部署,否则不会将该维护页面删除。
使用Chef和“拉”模型,每个服务器可能在一个稍微不同的时间获取其更新。我可能会在数据库服务器更新应用程序代码和运行数据库迁移时比应用服务器早几分钟。因此,我确实没有一种很好的方法来识别故障,并确保构建回滚到最后一个成功部署的版本(在所有服务器上)。
我知道我在这里有一些选择:
我可以开始构建其中的任何一个,但在我投入大量时间进行构建之前,我希望了解一下在实地进行大规模部署的方法是什么。你做了什么?
发布于 2013-01-09 05:56:18
Pull适合于解决组态漂移问题。对于按需部署(以及潜在的回滚),push更好。看看这些(我还没用过):
https://github.com/etsy/deployinator
http://www.rackspace.com/blog/rackspace-open-sources-dreadnot/
发布于 2013-03-01 20:02:56
我通过厨师的deploy_revision策略部署了ROR应用程序,并取得了一些成功。要克服拉策略的定时控制限制,最简单的方法是编写一个可以归结为:
或者,如果您很懒,只需运行chef-client,而不必担心守护进程。
然后使用knife-ssh在适用的节点上执行这些命令。最终的结果是,所有与部署相关的配置都由厨师管理,但您可以根据需要启动部署。
为了获得额外的积分,将所有这些都打包到Jenkins任务中。您需要将jenks配置为主厨客户端,并在应用程序的项目中进行“部署到暂存”任务。现在,您可以单击以运行该任务,您的非主厨的队友可以轻松部署。为了获得更多的奖励,在成功的构建之后,设置jenkins来自动部署!
https://stackoverflow.com/questions/14217134
复制相似问题