python - 使用fabric来操作数据库连接

标签 python deployment fabric

我刚刚开始使用 Fabric 来更好地控制测试和部署环境的特定设置,并且我正在尝试了解交换配置的最佳方法。

假设我的应用程序中有一个模块,它默认定义了一个简单的数据库连接和一些用于身份验证的常量:

host = 'db.host.com'
user = 'someuser'
passw = 'somepass'
db = 'somedb'

class DB():
  def __init__(self,host=host,user=user,passw=passw,db=db,cursor='DictCursor'):
    #make a database connection here and all that jazz

在找到fabric之前,我会使用socket库中的getfqdn()函数来检查系统被推送到的主机的域名,然后条件化身份验证凭据。

if getfqdn() == 'test.somedomain.com':
  host = 'db.host.com'
  user = 'someuser'
  passw = 'somepass'
  db = 'somedb'
elif getfqdn() == 'test.someotherdomain.com':
  host = 'db.other.com'
  user = 'otherguy'
  passw = 'otherpass'
  db = 'somedb'

出于显而易见的原因,这确实不是那么好。我想知道的是在 Fabric 中调整此类内容的最明智的方法是什么,以便当项目被推送到某个测试/部署服务器时,这些值会在推送后发生更改。

通过查看文档,我可以想到一些方法。我是否应该有一个仅定义 Fabric 可以根据部署内容使用 shell 命令输出的常量的文件,然后定义数据库处理程序的文件可以导入它们?像这样从 fabfile 中运行 openwrite 有意义吗?我假设我还必须 .gitignore 这些类型的文件,这样它们就不会提交到存储库中,而只依赖 Fabric 来部署它们。

我计划采用最适合我当前使用 getfqdn 交换或手动调整的所有配置设置建议的方法。谢谢!

最佳答案

您可以在 env.host 上完成所有这些操作,然后使用类似 the contrib template function 的内容。渲染conf文件并将其上推。但在这些情况下模板是最好的(参见:puppet 和其他配置管理器)

关于python - 使用fabric来操作数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321811/

相关文章:

python - 使用cv2.videowrite()创建的视频无法播放?

python - 如何在 Django 中访问外键的其他属性?

python - Mac OSX 10.5.8 上适用于 Django 的 mod_wsgi

python - 使用结构的 VPS 设置

python - 多处理池工作线程中的线程标识符

python - Django - 当用户提交表单时,会创建表,但表之间的连接不是

django - Django 的最佳 Fabric 脚本

ruby-on-rails-3 - 以不同用户身份运行部署任务

python - 在 cronjob 上运行结构脚本

repository - Aptitude:显示包来自哪个仓库,列出仓库的内容