diff --git a/plugins/modules/sysctl.py b/plugins/modules/sysctl.py index 723d315..c016d09 100644 --- a/plugins/modules/sysctl.py +++ b/plugins/modules/sysctl.py @@ -386,27 +386,15 @@ class SysctlModule(object): # Completely rewrite the sysctl file def write_sysctl(self): # open a tmp file - if self.system_Wide: - sysctl_files_dir = '/etc/sysctl.d/' - fd, tmp_path = tempfile.mkstemp('.conf', '.ansible_m_sysctl_', sysctl_files_dir) - os.close(fd=fd) - else: - fd, tmp_path = tempfile.mkstemp(dir=os.path.dirname(self.sysctl_file)) - os.close(fd) - + fd, tmp_path = tempfile.mkstemp('.conf', '.ansible_m_sysctl_', os.path.dirname(os.path.realpath(self.sysctl_file))) + f = open(tmp_path, "w") try: - with open(tmp_path, 'w') as write_file: - for line in self.fixed_lines: - write_file.write("%s\n" % line) - os.rename(tmp_path, self.sysctl_file) + for l in self.fixed_lines: + f.write(l.strip() + "\n") except IOError as e: - self.module.fail_json(msg="Failed to write %s: %s" % (to_native(tmp_path), to_native(e))) - finally: - try: - os.remove(tmp_path) - except OSError: - pass - + self.module.fail_json(msg="Failed to write to file %s: %s" % (tmp_path, to_native(e))) + f.flush() + f.close() # replace the real one self.module.atomic_move(tmp_path, os.path.realpath(self.sysctl_file))