Fabric env.hosts并以相同的方法运行=>找不到主机

时间:2012-07-22 18:20:33

标签: python deployment fabric

为什么:

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')

确实

在文档中没有找到任何相关内容。

1 个答案:

答案 0 :(得分:7)

在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'])