diff --git a/lib/ansible/executor/playbook_executor.py b/lib/ansible/executor/playbook_executor.py index 29ac3e9b7cb..041f51bf707 100644 --- a/lib/ansible/executor/playbook_executor.py +++ b/lib/ansible/executor/playbook_executor.py @@ -128,6 +128,7 @@ class PlaybookExecutor: else: self._tqm._unreachable_hosts.update(self._unreachable_hosts) + break_play = False # we are actually running plays for batch in self._get_serialized_batches(new_play): if len(batch) == 0: @@ -147,8 +148,10 @@ class PlaybookExecutor: failed_hosts_count = len(self._tqm._failed_hosts) + len(self._tqm._unreachable_hosts) if new_play.max_fail_percentage is not None and \ int((new_play.max_fail_percentage)/100.0 * len(batch)) > int((len(batch) - failed_hosts_count) / len(batch) * 100.0): + break_play = True break elif len(batch) == failed_hosts_count: + break_play = True break # save the unreachable hosts from this batch @@ -159,6 +162,9 @@ class PlaybookExecutor: if result not in (0, 3): break + if break_play: + break + i = i + 1 # per play if entry: