diff --git a/changelogs/fragments/12014-pam_limits-backup.yml b/changelogs/fragments/12014-pam_limits-backup.yml new file mode 100644 index 0000000000..61e0f6d0cb --- /dev/null +++ b/changelogs/fragments/12014-pam_limits-backup.yml @@ -0,0 +1,2 @@ +bugfixes: + - "pam_limits - only create backup file when the target file is actually modified (https://github.com/ansible-collections/community.general/issues/12011, https://github.com/ansible-collections/community.general/pull/12014)." diff --git a/plugins/modules/pam_limits.py b/plugins/modules/pam_limits.py index f367cffd65..49396192d3 100644 --- a/plugins/modules/pam_limits.py +++ b/plugins/modules/pam_limits.py @@ -235,10 +235,7 @@ def main(): _assert_is_valid_value(module, limit_item, value) - # Backup - if backup: - backup_file = module.backup_local(limits_conf) - + backup_file = None space_pattern = re.compile(r"\s+") if does_not_exist: @@ -356,6 +353,9 @@ def main(): with open(limits_conf, "a"): pass + if backup and changed and not does_not_exist: + backup_file = module.backup_local(limits_conf) + # Move tempfile to newfile module.atomic_move(os.path.abspath(nf.name), os.path.abspath(limits_conf)) @@ -370,7 +370,7 @@ def main(): diff=dict(before=b"".join(lines), after=content_new), ) - if backup: + if backup_file: res_args["backup_file"] = backup_file module.exit_json(**res_args)