如何处理env变量的数量

时间:2014-05-22 01:18:14

标签: linux deployment environment-variables ansible env

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

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

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

  • 采用相同方法但/etc/environment

  • 使用类似envdir的内容,再次使用ansible填充文件。

另一个问题是存储价值的地方,我在考虑redis,但我愿意接受建议。 Ansible有一个“Vault”,我还没有看到它可能是一个选项。

这些值类似于API密钥和数据库URL。

我真的只是想知道其他人使用什么方法。我对所有建议持开放态度。

1 个答案:

答案 0 :(得分:3)

我认为这个问题会征求很多意见,可能还会提出很多相互矛盾的意见,但就这些问题说的是我的一些观点:

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