![是否有一种常规的方法来管理 Ruby on Rails 服务器依赖项?](https://linux22.com/image/557934/%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E7%A7%8D%E5%B8%B8%E8%A7%84%E7%9A%84%E6%96%B9%E6%B3%95%E6%9D%A5%E7%AE%A1%E7%90%86%20Ruby%20on%20Rails%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BE%9D%E8%B5%96%E9%A1%B9%EF%BC%9F.png)
我们使用 Chef 来设置我们的服务器,但我正在寻找一种方法将我们的服务器依赖关系合并到源代码控制中的单个配置文件中。
我们使用 capistrano 进行部署,使用自定义构建脚本进行持续集成,现在我们需要进行 Nagios 轮询来检查所有依赖项是否存在(安装了 rvm、安装了正确的 ruby 版本、安装了 gems 等)
这意味着我们将在 3 个地方重复依赖项配置,我想重构它。我希望能够使用来自部署脚本和构建脚本的相同代码来处理软件包的安装和环境设置。我们考虑在构建脚本中使用我们的 capistrano 脚本,但这似乎太复杂了。我还在寻找可以检查环境并检查其是否满足应用程序要求的代码。
我认为配置应该是应用程序根目录中的 .environment.yml 之类的东西。脚本可能是“./script/environment setup”和“./script/environment check”之类的东西。
我把这个问题作为一个问题发布是因为我不想重新发明轮子。我想问一下是否已经有一个约定,或者是否有人有更好的建议。
答案1
对于你提到的事情,在我的仓库中维护一个配置,我使用 puppethttp://puppetlabs.com/非常理想,因为 puppet 的配置与 capistrano 不同,在 capistrano 中你可以指定如何在 puppet 中做什么,然后 puppet 就会完成工作。
答案2
您可以(也可能应该)include
在 Ruby 应用程序中使用配方语句。
如果您正在谈论强制性宝石,您可以在应用程序中包含一个 gemfile。
Chef(可能还有 Puppet)的一个问题是,做事有很多种“正确”的方式,很难知道哪种方式最适合你的情况。