4

我有一个使用 postgres 数据库的 django 应用程序。

我有一个设置 postgres 数据库的厨师食谱,包括设置 django 应用程序使用的 postgres 用户名/密码。

此用户名/密码随后由 DATABASES settings.py 值使用。

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

我目前考虑的选项:

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

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

  3. 把细节放进去settings.py,让厨师提取它们(不知何故)。这种方法是有问题的,因为它与厨师食谱中的顺序混淆(我必须检查我的 django 应用程序,提取值,使用这些值来设置 postgres,然后启动 django)。这本身可能并不算太糟糕,但真正的问题是当/如果我想迁移到密码不在源代码控制文件中而是在厨师的数据包中的系统时。

我用谷歌搜索了很多,但是除了关于布局的各种讨论settings.py和关于如何使用 django 和 chef 的一般讨论之外,我找不到一个好的解决方案。肯定有人已经使用 chef 部署了一个带有 postgres 的 django 应用程序并且之前遇到过这个?

4

1 回答 1

1

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

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

于 2013-07-27T00:33:09.287 回答