加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在AWS上使用Capistrano的Rails secrets.yml VS

发布时间:2020-12-17 01:56:51 所属栏目:百科 来源:网络整理
导读:关于如何在网上和那里管理API令牌有一些问题,但我看到很多人只是重复他们在其他地方阅读的内容,而且他们往往没有多大意义…… 我想知道你们是如何处理所有这些API令牌等的. 这是我到目前为止使用3种不同的宝石阅读的内容 secrets.yml 与Rails 4.1一起引入,应
关于如何在网上和那里管理API令牌有一些问题,但我看到很多人只是重复他们在其他地方阅读的内容,而且他们往往没有多大意义……

我想知道你们是如何处理所有这些API令牌等的.

这是我到目前为止使用3种不同的宝石阅读的内容

secrets.yml

与Rails 4.1一起引入,应该成为存储秘密的惯例

是(显然不是?)意味着被推到存储库.但是,我经常看到使用环境变量进行生产的示例

development:
  secret_key_base: super_long_secret_key_for_development
  ...

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  ...

此时有人问“我们为什么要使用ENV进行生产?”这是一个合法的问题IMO.但后来有人回答“我们不希望生产令牌在应用程序中被硬编码”(也许只是我,但是哼哼SECRETS.yml,这个名字听起来像是你不想提交的文件吗?),以及最后没有人真正回答这个问题

但我仍然设法找到了这个和那个:

优点:

> Rails惯例.
>使用capistrano-secrets gem和cap [stage]设置轻松部署(它只能部署舞台秘密)
> YML数据结构(array / hash ok)可以使用Ruby代码

缺点:

>需要使用Rails.application.secrets.xxx
> AWS等许多服务仍然从ENV读取以自动设置其宝石/服务
>不是12种因素的方式(或者是吗?)
>相当新,所以还没有真正使用过吗?

Bkeepers dotenv

只需在启动时由Rails读取的根目录定义.env文件

使用capistrano-env和capistrano

投票站

> ENV符合12个规则
> 3.5k星……也许不是没有?

CON外

>无自定义代码,仅限于字符串字符串键/ val

费加罗

某种混合秘密/ ENV.考虑到12factors / Rails / Heroku,但最终似乎并不比其他更好……

从上面和其他我没有写,看起来secretts.yml将是一个伟大的赢家,如果这些秘密被放入ENV而不是(并且我觉得每次写Rails.Application.secrets都很懒).

所以,假设我启动了一个非常新的Rails应用程序,并且还根据您的经验.你会选哪一个 ?

(我的特定堆栈使用AWS Capistrano,没有Heroku)

解决方法

我个人认为“正确”的方法取决于您的环境.

在我的情况下,我有由IT管理的服务器,我无法访问vhost或其他任何东西来轻松设置环境变量.因此,我提交了一个不包含生产节的secrets.yml文件,然后设置Capistrano将此文件添加到shared_files.在每台服务器上,我添加该文件.

如果我可以轻松访问vhost,并且我使用Puppet,Chef,Ansible或类似的方式管理服务器vhost,我会使用环境变量方法,如默认的secrets.yml文件.

您在AWS的案例似乎是后者.最终,任何一种选择都可以.在没有生产节的情况下提交secrets.yml文件几乎没有什么缺点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读