Fabric忽略@hosts装饰

时间:2014-08-20 13:32:50

标签: python deployment fabric

我已编写了部署脚本,并且我使用@hosts装饰器告诉函数使用哪个主机:

@hosts('rdp_p11@localhost')
def put_p11(f, path):
    put(f, path)

@hosts('rdp_p12@localhost')
def put_p12(f, path):
    put(f, path)

出于某种原因,我收到以下消息:
No hosts found. Please specify (single) host string for connection:

我正在fabfile.py

中的其他功能运行这些功能

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:2)

正如Fabric的文档Library Use所述:

  

运行,sudo和其他操作只在连接时查看一个位置:env.host_string。设置主机的所有其他机制在运行时由fab工具解释,并且在作为库运行时无关紧要。

由于您在python中手动调用这些函数,fab不会处理这些函数中的设置,即使您正在使用它来启动主函数。

您可以使用上下文管理器轻松操作env

from fabric.api import settings
with settings(host_string="myhost"):
    your_function()