### 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
- Optionally set the user's home directory.
        type: path
    skeleton:
        description:
            - Optionally set a home skeleton directory.
            - Requires O(create_home) option!
        type: str
        version_added: "2.0"
    password:
        description:
            - If provided, set the user's password to the provided encrypted hash (Linux) or plain text password (macOS).
            - B(Linux/Unix/POSIX:) Enter the hashed password as the value.
            - See L(FAQ entry,https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-generate-encrypted-passwords-for-the-user-module)
              for details on various ways to generate the hash of a password.
            - To create an account with a locked/disabled password on Linux systems, set this to V('!') or V('*').
            - To create an account with a locked/disabled password on OpenBSD, set this to V('*************').
            - B(OS X/macOS:) Enter the cleartext password as the value. Be sure to take relevant security precautions.
            - On macOS, the password specified in the C(password) option will always be set, regardless of whether the user account already exists or not.
            - When the password is passed as an argument, the C(user) module will always return changed to C(true) for macOS systems.
              Since macOS no longer provides access to the hashed passwords directly.
        type: str
    state:
        description:
            - Whether the account should exist or not, taking action if the state is different from what is stated.
            - See this L(FAQ entry,https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#running-on-macos-as-a-target)
              for additional requirements when removing users on macOS systems.
        type: str
        choices: [ absent, present ]
        default: present
    create_home: