diff --git a/changelogs/fragments/basic-no-state-absent-when-path-or-dest.yaml b/changelogs/fragments/basic-no-state-absent-when-path-or-dest.yaml new file mode 100644 index 0000000000..110f7fb3ab --- /dev/null +++ b/changelogs/fragments/basic-no-state-absent-when-path-or-dest.yaml @@ -0,0 +1,2 @@ +bugfixes: + - 'do not return ``state: absent`` when the module returns either ``path`` or ``dest`` but the file does not exists (https://github.com/ansible/ansible/issues/35382)' diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py index eb7c77f50b..9901f77196 100644 --- a/lib/ansible/module_utils/basic.py +++ b/lib/ansible/module_utils/basic.py @@ -1559,8 +1559,6 @@ class AnsibleModule(object): if HAVE_SELINUX and self.selinux_enabled(): kwargs['secontext'] = ':'.join(self.selinux_context(path)) kwargs['size'] = st[stat.ST_SIZE] - else: - kwargs['state'] = 'absent' return kwargs def _check_locale(self): diff --git a/lib/ansible/modules/files/file.py b/lib/ansible/modules/files/file.py index ca12a7ec9a..1d7d38cfa9 100644 --- a/lib/ansible/modules/files/file.py +++ b/lib/ansible/modules/files/file.py @@ -470,9 +470,9 @@ def ensure_absent(path): 'path': path}) diff = initial_diff(path, 'absent', prev_state) - result.update({'path': path, 'changed': True, 'diff': diff}) + result.update({'path': path, 'changed': True, 'diff': diff, 'state': 'absent'}) else: - result.update({'path': path, 'changed': False}) + result.update({'path': path, 'changed': False, 'state': 'absent'}) return result