diff --git a/lib/ansible/module_common.py b/lib/ansible/module_common.py index f0d8c826a49..72aa97099e5 100644 --- a/lib/ansible/module_common.py +++ b/lib/ansible/module_common.py @@ -596,19 +596,19 @@ class AnsibleModule(object): def atomic_replace(self, src, dest): '''atomically replace dest with src, copying attributes from dest''' - st = os.stat(dest) - os.chmod(src, st.st_mode & 07777) - try: - os.chown(src, st.st_uid, st.st_gid) - except OSError, e: - if e.errno != errno.EPERM: - raise - if self.selinux_enabled(): - context = self.selinux_context(dest) - self.set_context_if_different(src, context, False) + if os.path.exists(dest): + st = os.stat(dest) + os.chmod(src, st.st_mode & 07777) + try: + os.chown(src, st.st_uid, st.st_gid) + except OSError, e: + if e.errno != errno.EPERM: + raise + if self.selinux_enabled(): + context = self.selinux_context(dest) + self.set_context_if_different(src, context, False) os.rename(src, dest) - # == END DYNAMICALLY INSERTED CODE === """