在yesod应用程序中存储API密钥和其他“秘密”的位置

时间:2015-06-21 12:53:47

标签: haskell yesod api-key

我正在尝试一个yesod应用程序,我最终会把它放在github上或类似的。

我将在谷歌使用oauth2,这意味着我必须提供电子邮件和秘密令牌。我显然不想要github。

在yesod脚手架应用程序中存储这些内容的好地方是什么?我希望将它存储在单独的config / secret.yml中,所以我可以把它放到git / mercurial的ignore文件中,永远不会提交它。

但我无法找到如何包含这样的文件。或者,如果这样的文件已经由yesod提供。 config / settings.yml似乎有可能,但是我想在github中有条目。

所以我的问题是,在一个yesod搭建的应用程序中。我可以在哪里存储密钥,我可以轻松地将其从版本控制系统中排除?

1 个答案:

答案 0 :(得分:2)

有很多种方法,主要取决于你喜欢的devops /托管的味道。一种选择是在配置文件中放置一个虚拟值,并在运行时使用环境变量覆盖它(参见:https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables)。您还可以使用额外的生产设置文件来覆盖默认配置文件中的值,这是测试套件的工作方式。一种完全不同的方法是在生产中使用像Vault这样的系统,并查询它以获得安全凭证。

编辑要说明其中一种方法:

  1. 使用您要赢取的设置创建一个新的YAML文件,例如在config/production.yml

    copyright: This is a copyright notice for production
    
  2. 运行应用程序时,传入命令行参数,提供配置文件的位置