我有一个使用postgres DB的django应用程序。
我有一个设置postgres数据库的厨师食谱,包括为django应用程序设置postgres用户名/密码。
此用户名/密码随后由DATABASES settings.py值使用。
目前,我必须在attributes.rb
中的settings.py
和中获得postgres详细信息。
我怎样才能在一个地方拥有它们?
我目前考虑的选项:
由厨师模板生成settings.py
(或部分)。这样,细节只需要在厨师食谱中。
这方面的缺点是django应用程序是不完整的,除非它是通过厨师部署的。 (这可能不是那么大的问题,因为即使是当地的开发人员也会与流浪汉+厨师一起完成)。
在settings.py
检查并加载某些值的文件系统上有一个已知文件。此文件由chef生成。
这比第一个解决方案好一点。此外,它还需要settings.py中的一些样板代码来加载和解析文件。
在settings.py
中有详细信息,让厨师提取它们(不知何故)。
这种方法有问题,因为它混淆了厨师食谱中的排序(我必须检查我的django应用程序,提取值,使用值来设置postgres,然后启动django)。
这本身可能不会太糟糕,但真正的问题是,如果我想转移到一个系统,密码不在源控制文件中,而是像厨师的数据包那样。
我用谷歌搜索了一下,但除了关于settings.py
布局的各种讨论以及关于如何使用django和chef的一般性讨论之外,我找不到一个好的解决方案。
当然其他人已经使用厨师使用postgres部署了一个django应用程序并且之前遇到过这个问题吗?
答案 0 :(得分:1)
您应该使用data bag。当您在那里存储密码时,它应该是encrypted data bag。然后你可以在两个食谱(postgres和python)中读取它的数据。
将密码存储在属性中也不是一个好主意 - 因为它们太暴露了。