ruby-on-rails - Chef 部署?

标签 ruby-on-rails git amazon-ec2 chef-infra

我有兴趣从 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/

相关文章:

ruby-on-rails - 我如何在 Rails 查找中进行左连接

ruby-on-rails - Ruby on Rails : Model Association with multiple foreign keys

Mysql复制某些列

android - android内核和vanilla linux内核之间的补丁差异

git - .gitignore 无法忽略以前未缓存的文件

git - 如何比较 Git 中的变更集?

r - 我不断收到此错误 “docker: invalid reference format: repository name must be lowercase.”

ruby-on-rails - 为什么在始终设置 Time.zone 的情况下,在 Rails 中使用 Time.current 而不是 Time.zone.now?

amazon-web-services - AWS 访问 key 与 key 对

java - War 在本地独立 tomcat 7(无 eclipse)上运行良好,上传到 ec2 时不起作用