diff --git a/changelogs/fragments/bad_empty_play.yml b/changelogs/fragments/bad_empty_play.yml new file mode 100644 index 0000000000..a0a4b4893f --- /dev/null +++ b/changelogs/fragments/bad_empty_play.yml @@ -0,0 +1,2 @@ +bugfixes: + - re allow empty plays for now, but add deprecation msg. diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index 0321615505..74257c061b 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -69,12 +69,14 @@ class Playbook: raise AnsibleParserError("Could not read playbook (%s) due to encoding issues: %s" % (file_name, to_native(e))) # check for errors and restore the basedir in case this error is caught and handled - if not ds: + if ds is None: self._loader.set_basedir(cur_basedir) raise AnsibleParserError("Empty playbook, nothing to do", obj=ds) elif not isinstance(ds, list): self._loader.set_basedir(cur_basedir) raise AnsibleParserError("A playbook must be a list of plays, got a %s instead" % type(ds), obj=ds) + elif not ds: + display.deprecated("Empty plays will currently be skipped, in the future they will cause a syntax error", version='2.12') # Parse the playbook entries. For plays, we simply parse them # using the Play() object, and includes are parsed using the