抱歉这个相当愚蠢的问题,但是人们是否将他们的 Capistrano 文件(Capfile、deploy.rb、multisite > config/deploy/*)提交到他们的私人 scm 存储库?
是否有人们遵循的最佳实践或标准?你遵循什么?
谢谢你。
抱歉这个相当愚蠢的问题,但是人们是否将他们的 Capistrano 文件(Capfile、deploy.rb、multisite > config/deploy/*)提交到他们的私人 scm 存储库?
是否有人们遵循的最佳实践或标准?你遵循什么?
谢谢你。
最佳实践是“是”,提交您的 deploy.rb,但不要提交任何包含密码、api_keys 或其他私有数据的文件——而是制作这些文件模板,例如在database.yml
提交带有数据库名称、端口、用户名的文件,但类似
password: <db_password>
创建模板文件。
显然,如果您的项目位于 GitHub 之类的公共存储库中,那就对了。但是,如果您的 SCM 是私有的,正如您所说,您应该像对待任何其他安全资源一样对待它。密码和密钥比“任何其他安全资源”更重要——它们应该是高度安全的。
对于一个完全自配置的系统,创建 capistrano(或者可能是 rake)任务来读取具有各种密码或密钥的仔细控制的本地文件(可能是 YAML),一旦提交的文件被部署,将密码写入模板。
如果密码或配置文件的格式没有太大变化,您可以使用 cap:setup 任务,然后手动添加密码,将它们保留在 app/shared/config 目录中,并让 capistrano 在源代码树中创建符号链接部署。
在部署方面,只有高权限用户才能执行此操作(尤其是在生产环境中)。这种做法允许您使密码和其他敏感数据仅对已被授予访问给定服务器的用户可见。
Ryan Bates 在类似这样的策略上做了一些很好的 RailsCasts,看看其中的一些情节。请注意,许多 RailsCast 不再免费,但每月只需 9 美元,这非常值得!