如何在我的Python Fabric`fabfile.py`中的函数中正确设置`env.hosts`?

如何在我的Python Fabric`fabfile.py`中的函数中正确设置`env.hosts`?,第1张

如何在我的Python Fabric`fabfile.py`中的函数中正确设置`env.hosts`?

@Chris,您看到此行为的原因是因为主机列表 调用task函数 之前
构造的。因此,即使您要

env.hosts
在函数内部进行更改,也要使它生效没有为时已晚。

而命令

fab setenv:foo mycmd:bar
会产生您所期望的结果:

$ fab setenv:foo mycmd:bar[myhost] Executing task 'mycmd'['myhost'][myhost] run: ls

这与接受的答案相同,但是由于

setenv
定义了方式,因此需要一个参数。

另一个例子:

from fabric.api import env, run, local, cdenv.hosts = ['other_host']def setenv(foo):    env.hosts = ['myhost']def mycmd(foo):    setenv(foo)    print('env.hosts inside mycmd: %s' % env.hosts)    run('ls')

输出为:

$ fab mycmd:bar[other_host] Executing task 'mycmd'env.hosts inside mycmd: ['myhost'][other_host] run: lsFatal error: Name lookup failed for other_hostUnderlying exception:    (8, 'nodename nor servname provided, or not known')Aborting.

如您所见,

['other_host', ]
架构开始执行时,主机列表已经设置为
mycmd



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存