### Summary

When I try to ensure, that users are removed from a system, the task succeeds the first time and the next time, it fails as it can not remove the non-existing user from the `/etc/passwd` file.

This issue could be potentially solved by adding the argument `local: true` at the task, but this results in a huge warning message for every user, which should get removed and does already not exist anymore: https://github.com/ansible/ansible/blob/ad9867ca5eb8ba27f827d5d5a7999cfb96ae0986/lib/ansible/modules/user.py#L1055-L1059

So either this behaviour is buggy when using `local: false` or the warning from `local: true` should get removed (or only printed when debug is enabled).

### Issue Type

Bug Report

### Component Name

ansible.builtin.user

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.3]
  config file = /home/skraetzig/Git/infrastructure/ansible.cfg
  configured module search path = ['/home/skraetzig/Git/infrastructure/ansible/library']
  ansible python module location = /usr/local/lib/python3.9/dist-packages/ansible
  ansible collection location = /usr/share/ansible/third-party/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
ANSIBLE_FORCE_COLOR(env: ANSIBLE_FORCE_COLOR) = True
ANSIBLE_NOCOWS(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
ANSIBLE_PIPELINING(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
ANY_ERRORS_FATAL(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
COLLECTIONS_PATHS(/home/skraetzig/Git/infrastructure/ansible.cfg) = ['/usr/share/ansible/third-party/collections']
CONFIG_FILE() = /home/skraetzig/Git/infrastructure/ansible.cfg
DEFAULT_FILTER_PLUGIN_PATH(/home/skraetzig/Git/infrastructure/ansible.cfg) = ['/home/skraetzig/Git/infrastructure/ansible/filter_plugins']
DEFAULT_FORKS(/home/skraetzig/Git/infrastructure/ansible.cfg) = 50
DEFAULT_LOCAL_TMP(env: ANSIBLE_LOCAL_TEMP) = /tmp/ansible-local-35zs1vlt9t
DEFAULT_MODULE_PATH(/home/skraetzig/Git/infrastructure/ansible.cfg) = ['/home/skraetzig/Git/infrastructure/ansible/library']
DEFAULT_REMOTE_USER(/home/skraetzig/Git/infrastructure/ansible.cfg) = deploy
DEFAULT_ROLES_PATH(/home/skraetzig/Git/infrastructure/ansible.cfg) = ['/home/skraetzig/Git/infrastructure/ansible/roles', '/home/skraetzig/Git/infrastructure/ansible/actions', '/hom>
DIFF_ALWAYS(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
DISPLAY_SKIPPED_HOSTS(env: ANSIBLE_DISPLAY_SKIPPED_HOSTS) = True
INTERPRETER_PYTHON(/home/skraetzig/Git/infrastructure/ansible.cfg) = /usr/bin/python3
MAX_FILE_SIZE_FOR_DIFF(/home/skraetzig/Git/infrastructure/ansible.cfg) = 1044480
RETRY_FILES_ENABLED(/home/skraetzig/Git/infrastructure/ansible.cfg) = False

CALLBACK:
========

default:
_______
display_ok_hosts(env: ANSIBLE_DISPLAY_OK_HOSTS) = True
display_skipped_hosts(env: ANSIBLE_DISPLAY_SKIPPED_HOSTS) = True

CONNECTION:
==========

local:
_____
pipelining(/home/skraetzig/Git/infrastructure/ansible.cfg) = True

paramiko_ssh:
____________
remote_user(/home/skraetzig/Git/infrastructure/ansible.cfg) = deploy
ssh_args(env: ANSIBLE_SSH_ARGS) = -C -o ControlMaster=auto -o ControlPersist=60s

psrp:
____
pipelining(/home/skraetzig/Git/infrastructure/ansible.cfg) = True

ssh:
___
pipelining(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
remote_user(/home/skraetzig/Git/infrastructure/ansible.cfg) = deploy
ssh_args(env: ANSIBLE_SSH_ARGS) = -C -o ControlMaster=auto -o ControlPersist=60s

winrm:
_____
pipelining(/home/skraetzig/Git/infrastructure/ansible.cfg) = True
```


### OS / Environment

Debian 10 (Buster) and 11 (Bullseye)

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: remove users
  ansible.builtin.user:
    name: "{{ item }}"
    state: absent
    remove: true
  with_items:
    - user1
    - user2
    - user3
```


### Expected Results

The listed users `user1`, `user2`, `user3` get successfully removed from the system, if they exist and if not, the task should be successfull without any warning.

### Actual Results

The first rollout works as expected. The users get successfully removed.

All other rollouts afterwards are then failing:

```console
TASK [users : remove users] ****************************************************
failed: [debian] (item=user1) => {"ansible_loop_var": "item", "changed": false, "item": "user1", "msg": "userdel: cannot remove entry 'user1' from /etc/passwd\n", "name": "user1", "rc": 1}
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
fields[3] = str(int(minweeks) * 7)
                            if maxweeks:
                                fields[4] = str(int(maxweeks) * 7)
                            if warnweeks:
                                fields[5] = str(int(warnweeks) * 7)
                            line = ':'.join(fields)
                            lines.append('%s\n' % line)
                    with open(self.SHADOWFILE, 'w+') as f:
                        f.writelines(lines)
                    rc = 0
                except Exception as err:
                    self.module.fail_json(msg="failed to update users password: %s" % to_native(err))
        return (rc, out, err)
    def user_info(self):
        info = super(SunOS, self).user_info()
        if info:
            info += self._user_attr_info()
        return info
    def _user_attr_info(self):
        info = [''] * 3
        with open(self.USER_ATTR, 'r') as file_handler:
            for line in file_handler:
                lines = line.strip().split('::::')
                if lines[0] == self.name:
                    tmp = dict(x.split('=') for x in lines[1].split(';'))
                    info[0] = tmp.get('profiles', '')
                    info[1] = tmp.get('auths', '')
                    info[2] = tmp.get('roles', '')
        return info
class DarwinUser(User):