我正在使用面料,并且有很多我需要处理的主机。
如果任何主机出现故障,我将继续执行:
env.warn_only = True
但是我想在最后找到失败的主机列表。怎么样?我尝试了下面的内容,但无论是成功还是失败都没有任何结果。
error_list= []
success_list = []
@parallel
def my_run():
try:
sudo('sh test.sh')
success_list.append(env.host)
except:
error_this.append(env.host)
error_list= []
success_list = []
答案 0 :(得分:0)
这是我使用的代码:
@parallel
@roles(env.roles)
def dummy_workhorse():
return run('hostname')
@task
@runs_once
@with_settings(hide('everything'), skip_bad_hosts=True)
@needs_host
def check_hosts():
down_hosts = []
for host, result in execute(dummy_workhorse).iteritems():
if not isinstance(result, str):
down_hosts.append(host)
if down_hosts:
print('Following hosts are down:')
for host in down_hosts:
print(host)
else:
print('All hosts are up and running!')
答案 1 :(得分:0)
尝试使用' env.host_string' 代替' env.host' 参考:http://docs.fabfile.org/en/1.8/usage/env.html#host-string
error_list= []
success_list = []
@parallel
def my_run():
try:
sudo('sh test.sh')
success_list.append(env.host_string)
except:
error_list.append(env.host_string)
error_list= []
success_list = []