2015-06-21 25 views
2

我正在尝试一个yesod应用程序,我最终会放在github或类似的应用程序上。在一个yesod应用程序中存储API密钥和其他'秘密'的位置

我将使用的oauth2与谷歌,这意味着我必须提供一个电子邮件地址和秘密令牌。我显然不希望在github上。

什么是将这些存储在yesod脚手架应用程序中的好地方?我希望将它存储在单独的config/secret.yml中,例如,我可以将它放入git/mercurial的忽略文件中,并且永远不会提交它。

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

所以我的问题是,在一个yesod脚手架的应用程序。我可以在哪里存储密钥,我可以很容易地将它从版本控制系统中排除?

回答

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. 当你运行应用程序,通过在命令行参数给出的配置文件的位置

+0

感谢您发表评论!我将如何去制作一个额外的设置文件,以覆盖生产? – Xeli

+0

我编辑了一些信息 –

+0

我使用了一个稍微不同的方法,我编辑了Application.sh中的loadAppSettings调用到[“/config/secret.yml”,configSettingsYml]。我不确定它是否会在编译时以这种方式加载,但它现在就像我想要的那样工作。谢谢 – Xeli

相关问题