2017-03-17 106 views
0

我目前正在为supervisord管理的我的gunicorn/django应用程序编写我的结构部署脚本。当gunicorn运行时,我需要在应用程序的环境中使用某些密码。保持密码的代码,但gunicorn可自动重新启动?

看起来,做事的标准方式是将环境变量添加到/etc/supervisord/app.conf的[program:app],但这意味着我的回购库中会有明文密码,除非我保留该应用程序。回购之外的.conf(这看起来并不干净)。

我不能散列密码,因为它们被应用程序用来访问第三方服务。即使我在app.conf之外保存了app.conf,我仍然在app.conf中有明文密码,这似乎并不理想。

有没有什么办法让supervisord做它的事情(重新启动gunicorn自己)没有存储明文密码?

编辑:我不可避免地需要密码或supervisord解锁密码的方式,这两种都可以被攻击者使用,所以我想我会使用类似AWS密钥管理服务的东西,所以至少还有一个额外的一步到达他们。

回答

0

我没有使用supervisord,但我假设你只是运行一个bash脚本来重新启动服务器。

在项目文件夹中创建一个名为.env的文件(该名称并不重要,但它是约定)。请务必将此文件添加到您的.gitignore

在ENV文件中,设置任何配置瓦尔:

#!/bin/bash 

export ENV_VAR="value" 

然后使用ENV文件,使用source .env。这会将任何导出的变量应用于您的环境。