我有兴趣从 Capistrano 切换到 Chef,但在将所有部分组合在一起时遇到了一些问题。
我关注了http://wiki.opscode.com/display/chef/Quick+Start并且能够使用 knife
启动 EC2 实例。至于代码部署,看起来我想做 http://wiki.opscode.com/display/chef/Deploy+Resource 中的内容。 ,唯一的问题是,该页面上没有任何地方提到部署 /to/path
代码块应该放在哪个目录/文件中。
我遇到的另一个问题是了解如何在设置服务器后部署代码更改。也许我只是习惯了我当前的工作流程 (git push && cap deploy
),但我能说的最好的是,在我提交更改后,我应该通过 ssh 进入服务器并运行 须藤 Chef 客户端
?感觉有些不对劲。是否没有等效的上限,即 chef deploy
?
最后(也许这有点困难),我希望将多个 Rails 应用程序部署到单个服务器。在每个应用程序的存储库中保留某种 Chef 配置文件来描述其部署的细节似乎是明智的,但我不确定这将如何与 Chef 存储库/托管服务器交互。每个应用程序都是一个角色吗?根据我对事物工作方式的理解,我也对“Chef 客户端”会在运行时尝试部署所有应用程序的想法感到有些不安。使用 git push && cap deploy
我可以确定我正在部署的内容。而其他一些应用程序存储库可能不处于可部署状态。有没有办法在此设置中仅部署一个应用程序?
最佳答案
所以 knife 实际上能够执行类似 capistrano 的任务 - 具体来说,跨多个服务器运行命令。
要将您的应用程序部署到所有应用程序服务器,假设您遵循操作码 Rails 应用程序说明书路径,您只需执行以下操作:
knife ssh role:t<appserver-role> chef-client -xroot -P<pass>
这将在您所有的应用服务器上以 root 身份运行 chef-client。它使用 Chef 搜索 API 查找具有该角色的所有节点并在它们上运行该命令。
它非常强大。
关于ruby-on-rails - Chef 部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871124/