在串行模式下,当我的某个主机检测到错误时,我想在所有其他主机上取消该任务,但不想退出整个代码。
怎么做?
代码示例:
target_hosts = [host1, host2, host3]
execute(function, hosts=target_hosts)
print "Hello world"
如果host2
发生错误,我不希望function
继续host3
,但仍希望打印Hello world
。
答案 0 :(得分:0)
如果不知道你在function
内想要做什么,找到正确的方法有点困难。据我所知,Fabric execute
并没有提供任何错误处理,所以你必须自己做。试试这样的事情
#!/usr/bin/env python
from fabric.api import run, execute, settings
def fce():
with settings(warn_only=True):
if run('echoo $HOSTNAME').failed: # this will fail
return False
return True
target_hosts = [host1, host2]
for host in target_hosts:
out = execute(fce, host=host)
if not out[host]:
break
print "Hello world"