【问题标题】:Fabric ignores @hosts decorationFabric 忽略 @hosts 装饰
【发布时间】:2014-08-20 13:32:50
【问题描述】:

我已经编写了一个部署脚本,我正在使用 @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 中的另一个函数运行这些函数

有什么想法吗?谢谢

【问题讨论】:

    标签: python deployment fabric


    【解决方案1】:

    正如 Fabric 的文档 Library Use 所述:

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

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

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

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

    【讨论】:

    • 所以我应该将主机设置为 env.host_string?
    • @DavidTzoor 我不确定你所说的全局变量是什么意思。如果你的意思是with settings(host_string=MYHOST) 其中MYHOST 是一个python 全局,是的。否则,您可能应该问另一个问题
    • 您能详细说明为什么这对我有用吗?
    • @DavidTzoor 你的意思是机制? settings 是一个操作 env 的上下文管理器。 Here's the relevant documentation
    猜你喜欢
    • 2013-09-26
    • 2012-03-30
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多