1

我正在开发 Django 应用程序,以协助使用 Fabric 部署 Python 应用程序的过程。

我对 Fabric 和 Django 都有一定的了解,但我不确定我应该如何/应该如何使用它们以便能够在服务器上运行部署和其他任务,而不是将配置存储在数据库中。

问题是,我已经将所有需要的服务器凭据存储在数据库中,并且希望能够使用它们而不是在 fabfile.py 中声明特定的主机(或者可能以某种方式参数化它们,以调用 ie. sth like "fab server1_from_database deploy") . 我需要能够从 Django 应用程序本身添加/编辑/删除主机,而无需编辑 fabfile.py。

有没有可能实现这一目标?

感谢您的帮助,我完全被困在这里...

4

1 回答 1

2

这并不难做到。在您的 fabfile 中,env使用来自数据库的凭据初始化对象:

from fabric.api import *

credentials = load_credentials_from_your_db()
for (hostname, username, password) in credentials:
    host_string = username + '@' + hostname
    env.hosts.append(host_string)
    env.passwords[host_string] = password

它未经测试,但文档说它应该可以工作。

于 2012-09-02T15:07:32.997 回答