django和chef中的postgres连接详细信息
我有一个django应用程序,它使用postgres DB 我有一个设置postgres DB的厨师食谱,包括为django应用程序设置postgres用户名/密码 然后,DATABASES settings.py值将使用此用户名/密码 目前,我必须在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
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
。