我正在研究使用Fabric的Django应用程序协助Python应用程序的部署过程。
我对Fabric和Django都有适当的了解,但是我不知道我怎么能/应该使用它们以便能够在服务器上运行部署和其他任务,而不是将配置存储在数据库中。
问题是,我已经需要存储在数据库中的服务器凭证,并且希望能够使用它们而不是在fabfile.py中声明特定主机(或者可能以某种方式参数化它们,以便调用ie。像“fab server1_from_database”部署”)。我需要能够从Django应用程序本身添加/编辑/删除主机,而无需编辑fabfile.py。
是否有可能实现这一目标?
感谢您的帮助,我完全被困在这里......
答案 0 :(得分: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
这是未经测试的,但文档说它应该有效。