【问题标题】:How to handle population of env variables如何处理环境变量的数量
【发布时间】:2014-07-10 20:56:07
【问题描述】:

虽然我的理解是使用环境变量在不同的部署环境中配置应用程序是最佳实践,但我不知道管理这些环境并在其中填充变量的好方法。

以下是我正在考虑的方法:

  • 将它们填充到我们用来运行应用程序的 Upstart 脚本中。我们使用 Ansible 来配置我们的服务器,这些服务器当前通过静态 upstart 脚本进行复制,但是可以使用环境变量对其进行模板化。

  • 相同的方法,但使用/etc/environment

  • 使用 envdir 之类的东西,然后再次使用 ansible 填充文件。

另一个问题是在哪里存储值,我在想 redis,但愿意接受建议。 Ansible 有一个“Vault”,我还没有查看它可能是一个选项。

这些值是 API 密钥和数据库 url 之类的东西。

我真的只是想知道其他人使用什么方法。我愿意接受所有建议。

【问题讨论】:

    标签: linux deployment environment-variables ansible env


    【解决方案1】:

    我认为这个问题会征求很多意见,并且可能会征求很多相互矛盾的意见,但话虽如此,这里是我的一些意见:

    • /etc/environment 是操作系统的一部分,用于配置交互式用户 shell。请勿将其用于应用程序。
    • 通过 ansible 进行的模板化新贵配置对我来说似乎很合理。如果您打算在其中存储敏感数据,只需确保文件系统权限被适当地锁定为 root 只读即可。
    • 您还可以使用模板化的特定于应用程序的配置文件,例如 /etc/myapp/config,几十年来它在许多程序中运行良好。整个环境变量比配置文件更好的位置实际上更多地来自 PaaS 的角度(我相信 heroku 通过他们的 12 因素应用程序站点推广了这种方法)。因此,如果您的部署是 PaaS 或 PaaS 风格,则环境很方便。但是,如果您通过 Ansible 在您自己的服务器上安装您的应用程序,恕我直言,由于我在我的博客文章 environment variables considered harmful 中概述的原因,直接配置文件更容易排除故障

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 2022-01-10
      • 2017-02-21
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多