我可以在一个项目目录中有多个 Python fabfiles 吗?

Can I have multiple Python fabfiles in one project directory?

我有一个项目,在我的机器上有一个本地副本,在服务器 服务器 1 上有一个远程副本。目前,我在更改本地副本时使用 Fabric 来更新远程副本。为此,fab 文件位于项目的根目录中(例如 project/fabfile.py)。

我想在这个项目中使用 Fabric 用于第二个目的。该项目中的一个函数需要连接到不同的服务器,Server 2。我可以在包含相关代码的项目的子目录中创建第二个 fab 文件吗(例如,project/subdir/fabfile.py)?

我是 Fabric 的新手,所以我只想确保我使用 Fabric 的方式不会导致两个 fab 文件相互干扰。

此外,因为我是 Fabric 的新手,所以我可能无法恰当地描述这种情况。如果您需要了解任何其他信息,请告诉我。

我不是 100% 确定你想达到什么目的,但这是我的想法。

您通常不需要将 fabfile 上传到远程服务器。如果您拥有需要部署到的所有机器的密钥,那就更好了。您可以使用 hosts or roles 来操作它们。

如果还可以对具有 -f command line argument 的不同机器使用不同的 fabfile

如果我误解了你,请告诉我。

我了解到对于一个项目来说,一个 fab 文件就足够了。相反,最好有一个单独的 fab 文件来定义多个函数,每个函数使用不同的服务器。 Fabric documentation 提供了几种方法来执行此操作,具体取决于用户的具体需求。

就我而言,我将我的单个 fab 文件修改为如下所示:

@hosts(server1)
def server1_task():
    ...

@hosts(server2)
def server2_task():
    ...

您可以放置​​多个 python 文件用于 fabric 但您只需使用 -f.

调用它

例如:

fab -f fabfile2 server2_task`

这对于存储具有不同用途的 fab 文件可能很有用