2011-07-29 189 views
11

我有兴趣从Capistrano切换到厨师,但我有几个问题把所有的部分放在一起。厨师部署?

我已经关注了http://wiki.opscode.com/display/chef/Quick+Start,并且能够使用knife启动EC2实例。至于代码部署,看起来好像我想要做http://wiki.opscode.com/display/chef/Deploy+Resource中的事情,唯一的问题是,在那个页面上的任何地方都没有提及代码块应该部署在什么目录/文件中。

我遇到的另一个问题是了解如何在服务器设置后部署代码更改。也许我只是习惯了我当前的工作流程(git push && cap deploy),但我能说的最好的是,在我提交我的更改后,我应该ssh进入服务器并运行sudo chef-client?有些事情感觉不对。没有相应的帽子,即chef deploy

最后(也许这有点困难),我正在寻找部署多轨应用程序到一台服务器。在每个应用程序的回购库中保留一些chef配置文件来描述其部署的细节似乎是谨慎的,但我不确定如何与厨师回购/托管服务器进行交互。每个应用程序都是一个角色吗?从我对事物工作方式的理解中,我也对“厨师 - 客户端”试图在运行时部署所有应用程序的想法感到有些不安。随着git push && cap deploy我确定我正在部署。而其他一些应用程序回购可能不处于可部署状态。有没有办法在这个设置中部署一个应用程序?

+0

只是出于好奇工作,为什么你想切换到部署与厨师?我总是觉得不对,因为某些原因.. – noli

+0

也许我应该改写我的问题介绍,“我有兴趣了解是否应该切换到厨师”......我目前使用[橡胶](https: //github.com/wr0ngway/rubber/wiki)用于我的rails部署。它运行得很好,但它不支持同一实例上的多个应用程序(这正在迅速成为我的需求)。我也有我部署的非rails项目......所以我对可以配置服务器,引导它并部署各种项目的单一工具/工作流的想法非常感兴趣。 – james

回答

8

因此,knife实际上能够执行capistrano-esque任务 - 特别是跨越多个服务器运行命令。

将您的应用部署到所有的应用程序服务器,假设你跟着Opscode公司Rails应用程序菜谱路径,你可以只做到以下几点:

knife ssh role:t<appserver-role> chef-client -xroot -P<pass> 

这将在所有的运行厨师客户为根你的应用服务器。它使用厨师搜索API来查找具有该角色的所有节点并在其上运行该命令。

它非常强大。

+2

如果我理解正确,这将运行搜索返回的节点上的所有食谱?这意味着,对于[部署资源](http://wiki.opscode.com/display/chef/Deploy+Resource),我想执行的任何操作(部署特定版本,回滚等)意味着修改部署配方中的操作和修订属性,将配方推送给厨师服务器,然后发出上述命令? – james

3

关于使用ssh按需部署的建议绝对正确。如果我可以进一步详细说明如何使用Chef作为部署解决方案(特别是与Capistrano工具相比)。 Chef被设计成配置管理和系统集成的工具,这意味着系统上运行的所有东西都应该是幂等的。

当Chef运行发生时,使用Chef部署关于重新运行所有内容时有时会出现混淆。记住Capistrano的工作是告诉系统“做到这一点”,厨师通过告诉系统“做到这一点”来工作,那么通常应该在属性和数据包中定义数据库应该使用的应用程序版本和模式。当Chef运行时,如果应用程序已经部署并且数据库已经具有适当的模式,则不应该发生任何事情,只有当系统尚未处于期望的状态时才应该采取行动。这就是为什么即使在部署多个应用程序时重新运行所有内容也不应该成为问题。

5

我写了以下文章,介绍如何使用厨师部署Ruby on Rails。

http://tech.hulu.com/blog/2012/07/06/automating-system-provisioning-and-application-deployment-with-chef/

嗯...这篇文章不仅仅是Rails的,但本例的狮子份额约为部署Rails的。

还有一个名为“应用程序”食谱的社区食谱,可用于部署Ruby on Rails。与该食谱相比,本文中的示例应该对新人更容易理解。然而,一旦你习惯使用文章中的例子来做它,你应该看看应用程序菜谱,看看它是否对你更有意义。

+0

链接不存在。 – kvivek

2

根据我的经验,最好保留capistrano,因为它具有一些RoR功能,您将不得不复制厨师。厨师是一个非常灵活的工具,你可以做很多工作,因此它可以替代许多其他工具。我个人发现有针对性的工具更有用。

独角兽的Capistrano插件,S3与其他资产同步(如https://github.com/bokmann/dunce-cap)总是非常有用。

至于部署和Rails应用管理红宝石更简单的方法,我也可以建议http://www.cloud66.com

声明:我云66