django和chef中的postgres连接详细信息

django和chef中的postgres连接详细信息,django,postgresql,chef-infra,Django,Postgresql,Chef Infra,我有一个django应用程序,它使用postgres DB 我有一个设置postgres DB的厨师食谱,包括为django应用程序设置postgres用户名/密码 然后,DATABASES settings.py值将使用此用户名/密码 目前,我必须在attributes.rb和settings.py中都有postgres的详细信息。 我怎么能把它们放在一个地方 我目前考虑的备选方案: 由厨师模板生成的settings.py(或其一部分)。这样的话,细节只需要在厨师食谱中。 这样做的缺点是dja

我有一个django应用程序,它使用postgres DB

我有一个设置postgres DB的厨师食谱,包括为django应用程序设置postgres用户名/密码

然后,DATABASES settings.py值将使用此用户名/密码

目前,我必须在
attributes.rb
settings.py
中都有postgres的详细信息。 我怎么能把它们放在一个地方

我目前考虑的备选方案:

  • 由厨师模板生成的
    settings.py
    (或其一部分)。这样的话,细节只需要在厨师食谱中。 这样做的缺点是django应用程序是不完整的,除非它是通过chef部署的。(这可能不是什么大问题,因为即使是本地开发人员也使用vagrant+chef)

  • 在文件系统上有一个已知文件,该文件
    settings.py
    检查并从中加载一些值。此文件由chef生成。 这只比第一个解决方案好一点点。它还需要settings.py中的一些样板代码来加载和解析文件

  • 将详细信息保存在
    settings.py
    中,并让厨师长(以某种方式)提取它们。 这种方法是有问题的,因为它混淆了厨师食谱中的顺序(我必须检查我的django应用程序,提取值,使用值设置postgres,然后启动django)。 这本身可能还不算太糟糕,但真正的问题是,当/如果我想转移到一个密码不在源代码控制文件中,而是在chef's数据包中的系统

  • 我在谷歌上搜索了不少,但除了对
    settings.py
    的布局进行各种讨论以及对如何使用django和chef进行一般性讨论之外,我找不到一个好的解决方案。 肯定有其他人使用chef在postgres上部署了django应用程序,并且以前遇到过这种情况?

    你应该使用一个。当您在那里存储密码时,它应该是。然后,您可以从这两个配方(postgres和python)中读取数据


    将密码存储在属性中也不是一个好主意,因为它们太暴露了。

    我看不到任何从python访问数据包项目的简单方法(除了将数据包导出到文件系统上的文件,然后让
    settings.py
    读取它)。这就是你的意思吗?配方应该读取数据包,然后通过传递读取值的模板创建
    settings.py