【问题标题】:Fabric env.hosts and run in the same method => No hosts foundFabric env.hosts 并以相同的方法运行 => 未找到主机
【发布时间】:2012-07-22 18:20:32
【问题描述】:

为什么:

from fabric.api import env, run

def update():
    env.hosts = ['apycat']
    run('cd /var/www/menu; svn up')

当我fab update时不起作用,而:

from fabric.api import env, run

env.hosts = ['apycat']

def update():
    run('cd /var/www/menu; svn up')

会吗?

在文档中没有找到任何关于此的内容。

【问题讨论】:

标签: python deployment fabric


【解决方案1】:

在 fab 命令已经为 fab 任务创建主机列表之后指定主机列表将不起作用。因此,对于第一个示例,您的更新任务没有设置主机列表,然后允许以下 run() 操作。这个is here 的文档中有一个很好的部分。

但也应该注意,您可以得到一个像第一个用例一样以两种方式之一工作的用例。首先是 settings() 上下文管理器:

def foo():
    with settings(host_string='apycat'):
        run(...)

另一个是使用较新的api函数execute():

def bar():
    run(...)

def foo():
    execute(bar, hosts=['apycat'])

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多