Skip to main content

图书馆使用

Fabric的主要用例是通过fabfiles和 fab 工具,这反映在大多数文档中。但是,Fabric的内部编写的方式,以便轻松使用没有 fab 或fabfiles - 本文将告诉你如何。

真的只有几个注意事项,一个人必须记住,与编写一个fabfile和使用 fab 运行它:连接如何真正做出,以及如何断开发生。

连接

我们已经记录了Fabric真正连接到它的主机之前,但它目前有点被埋在整个 执行文档 的中间。具体来说,你会跳过到 连接 部分,并快速阅读它。 (你应该真的给整个文档一次,但它不是绝对需要。)

正如该部分提到的,关键是简单地说,runsudo 和其他操作只在一个地方连接时:env.host_string。用于设置主机的所有其他机制在运行时由 fab 工具解释,并且当作为库运行时无关紧要。

也就是说,大多数情况下,你想要结婚给定的任务 X 和给定的主机列表 Y 可以,作为Fabric 1.3,通过 execute(X, hosts=Y) 处理与 execute 功能。有关详细信息,请参阅 execute 的文档 - 手动主机字符串操作很少需要。

断开连接

fab 为您做的另一个主要事情是在会话结束时与所有主机断开连接;否则,Python将永远坐在那里等待那些网络资源被释放。

Fabric 0.9.4和更新的有一个功能,你可以轻松地做到这一点:disconnect_all。简单地确保你的代码在终止时调用它(通常在外部 try: finally 语句的 finally 子句中 - 避免代码中的错误阻止断开发生!)和事情应该工作得很好。

如果你在Fabric 0.9.3或更早版本,你可以这样做(disconnect_all 只是添加一点漂亮的输出到这个逻辑):

from fabric.state import connections

for key in connections.keys():
    connections[key].close()
    del connections[key]

最后注意

本文档是一个初稿,可能不完全覆盖 fab 使用和图书馆使用之间的每一个区别。然而,上述应突出最大的绊脚石。当有疑问时,请注意,在Fabric源代码中,fabric/main.py 包含由 fab 完成的大量额外工作,并且可以作为有用的参考。