From 01e922aa693fe60bc7045933ffd9e6189fbc4265 Mon Sep 17 00:00:00 2001 From: Aleksej Romanov Date: Thu, 4 Oct 2012 03:11:14 +0700 Subject: [PATCH 1/2] Indicate errors with exit code. --- bin/ansible | 5 +++++ bin/ansible-playbook | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/bin/ansible b/bin/ansible index 2117abd1d07..906bfe5bbcf 100755 --- a/bin/ansible +++ b/bin/ansible @@ -127,6 +127,11 @@ if __name__ == '__main__': (options, args) = cli.parse() try: (runner, results) = cli.run(options, args) + for result in results['contacted'].values(): + if 'failed' in result or result.get('rc', 0) != 0: + sys.exit(1) + if results['dark']: + sys.exit(1) except errors.AnsibleError, e: # Generic handler for ansible specific errors print "ERROR: %s" % str(e) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index 2332e08567b..954d2c32419 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -140,6 +140,10 @@ def main(args): colorize('failed', t['failures'], 'red')) print "\n" + for h in hosts: + stats = pb.stats.summarize(h) + if stats['failures'] != 0 or stats['unreachable'] != 0: + sys.exit(1) except errors.AnsibleError, e: print >>sys.stderr, "ERROR: %s" % e From 05464816c2ee777f5d7e4eec5c3199733b1b0f10 Mon Sep 17 00:00:00 2001 From: Aleksej Romanov Date: Thu, 4 Oct 2012 17:43:25 +0700 Subject: [PATCH 2/2] Different return codes for different errors. --- bin/ansible | 4 ++-- bin/ansible-playbook | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/ansible b/bin/ansible index 906bfe5bbcf..0b0b536679c 100755 --- a/bin/ansible +++ b/bin/ansible @@ -129,9 +129,9 @@ if __name__ == '__main__': (runner, results) = cli.run(options, args) for result in results['contacted'].values(): if 'failed' in result or result.get('rc', 0) != 0: - sys.exit(1) + sys.exit(2) if results['dark']: - sys.exit(1) + sys.exit(2) except errors.AnsibleError, e: # Generic handler for ansible specific errors print "ERROR: %s" % str(e) diff --git a/bin/ansible-playbook b/bin/ansible-playbook index 954d2c32419..64d5ee66e50 100755 --- a/bin/ansible-playbook +++ b/bin/ansible-playbook @@ -143,7 +143,7 @@ def main(args): for h in hosts: stats = pb.stats.summarize(h) if stats['failures'] != 0 or stats['unreachable'] != 0: - sys.exit(1) + return 2 except errors.AnsibleError, e: print >>sys.stderr, "ERROR: %s" % e