|
From: | Carlos García |
Subject: | Re: [Fab-user] Finding out which hosts are alive |
Date: | Thu, 17 Sep 2015 08:44:09 +0200 |
fab PickHosts DoTheUpdates
Be aware that PickHost will be executed every time you run fab, as it executes PickHost() when importing. Anyway, there are workarounds; append this:# Fabric modulesfrom fabric.api import env,run,local,hosts, task, settings, hide, parallel@paralleldef PickHosts():host_list = ['host1', 'host2']hosts_alive = []with (settings(hide('everything'), warn_only = True)):for host in host_list:PickAttempt = local('ping -c 1 {host}'.format(host = host), capture = True)if PickAttempt.succeeded:hosts_alive.append(host)return hosts_alive@task@hosts(PickHosts())def DoTheUpdates():run('echo')
if __name__ == '__main__':def PickHosts():return []
--hide hides *all* warnings, not just host-unreachable warnings, correct? That is certainly not what I want.To recap: I want to do an initial silent check for the host list to see which are not up, and then only run the main procedures on the hosts known to be up. Is this possible with Fabric?On Wed, Sep 16, 2015 at 9:33 AM, Carlos García <address@hidden> wrote:Hi Paul,if you want to hide this kind of output, you can use --hideCheck this out if you want to hide other kinds of output messages [http://docs.fabfile.org/en/1.10/usage/output_controls.html]fab DoTheUpdates --skip-bad-hosts --hide=warnings -H <comma-separated list of hosts>Regards2015-09-16 18:21 GMT+02:00 Paul Hoffman <address@hidden>:--skip-bad-hosts (or env.skip_bad_hosts) doesn't seem to work for this. That is, using either (or both), DoTheUpdates says:That doesn't seem like "skipping". What else do I need to do here to make bad hosts skipped silently?
Warning: Timed out trying to connect to host2 (tried 1 time)
Underlying exception:
timed outOn Wed, Sep 16, 2015 at 12:52 AM, Carlos García <address@hidden> wrote:I think --skip-bad-hosts would do the work.Try:fab DoTheUpdates --skip-bad-hosts -H <comma-separated list of hosts>Regards2015-09-16 1:52 GMT+02:00 Paul Hoffman <address@hidden>:_______________________________________________--Paul HoffmanHow can I get the above code to work? Or if this is too much of a kludge, what is the proper way to have DoTheUpdates try a bunch of hosts but gracefully stop each time it can't log into one?Greetings. I want a script to do an update to all of the hosts that are alive, but not spend time on ones that aren't. I tried the following as a way of filling env.hosts:
@hosts("address@hidden", "address@hidden")
def PickHosts():
PickAttempt = run("echo")
if PickAttempt.succeeded:
(env.hosts).append(env.host_string)
print("Adding {}".format(env.host_string))
PickHosts()
def DoTheUpdates(): ...However, running this with a command line of "fab DoTheUpdates", prompts:
No hosts found. Please specify (single) host string for connection:
Fab-user mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fab-user
[Prev in Thread] | Current Thread | [Next in Thread] |