【问题标题】:Do people commit their capistrano deploy.rb and recipes to their private scm?人们是否将他们的 capistrano deploy.rb 和食谱提交给他们的私人 scm?
【发布时间】:2012-11-14 10:42:10
【问题描述】:

很抱歉这个相当愚蠢的问题,但是人们会将他们的 Capistrano 文件(Capfile、deploy.rb、multisite > config/deploy/*)提交到他们的私人 scm 存储库吗?

是否有人们遵循的最佳实践或标准?你关注什么?

谢谢。

【问题讨论】:

  • 是的,我愿意。为什么要提交它们?
  • @Sergio:因为 deploy.rb 包含两件事:特定于应用程序的常规部署设置和特定于目标实例的设置。
  • 感谢两位的回复。我真的很感激。

标签: ruby-on-rails git version-control ruby-on-rails-3.2 capistrano


【解决方案1】:

最佳做法是“是”,提交您的 deploy.rb,但不要提交任何包含密码、api_keys 或其他私有数据的文件——而是将这些文件制作成模板,例如在database.yml 提交带有数据库名称、端口、用户名的文件,但类似

password: <db_password>

创建模板文件。

显然,如果您的项目位于 GitHub 之类的公共存储库中,那就对了。但是,如果您的 SCM 是私有的,正如您所说,您应该像对待任何其他安全资源一样对待它。密码和密钥比“任何其他安全资源”更重要——它们应该是高度安全的。

对于完全自配置的系统,创建 capistrano(或者可能是 rake)任务来读取具有各种密码或密钥的仔细控制的本地文件(可能是 YAML),一旦提交的文件被部署,将密码写入模板.

如果密码或配置文件的格式没有太大变化,您可以使用 cap:setup 任务,然后手动添加密码,将它们留在 app/shared/config 目录中,并让 capistrano 在部署时的源代码树。

在部署方面,只有高权限用户才能执行此操作(尤其是在生产环境中)。这种做法允许您使密码和其他敏感数据仅对已​​被授予访问给定服务器的用户可见。

Ryan Bates 在此类策略上做了一些很好的 RailsCasts,请查看 some of these episodes。请注意,许多 RailsCast 不再免费,但每月只需 9 美元,这非常值得!

【讨论】:

  • 您好,Tom,感谢您抽出宝贵时间详细撰写您的回复。它内容丰富且简洁。
猜你喜欢
  • 2014-05-01
  • 2021-07-03
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2012-08-21
  • 2023-03-30
相关资源
最近更新 更多