对于这个相当愚蠢的问题感到抱歉,但人们会将他们的Capistrano文件(Capfile,deploy.rb,multisite> config / deploy / *)提交到他们的私人scm回购中吗?
人们遵循最佳做法或标准吗?你关注什么?
谢谢。
答案 0 :(得分:4)
最佳做法是“是”,提交您的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。请注意,许多RailsCasts不再免费,但每月9美元,这非常值得!