### Summary

SInce updating to `core 2.11.3` some `ansible_os_family` variables on some servers are being returned as Debian instead of Redhat (Amazon Linux2).



### Issue Type

Bug Report

### Component Name

yum

### Ansible Version

```console
$ ansible --version
ansible [core 2.11.3] 
  config file = /home/russell/repos/ansible/ansible.cfg
  configured module search path = ['/home/russell/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/russell/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.6 (default, Jun 30 2021, 10:22:16) [GCC 11.1.0]
  jinja version = 3.0.1
  libyaml = True

(Colleague running 2.11.3 version, I am still on 2.9.10 to make testing easier)
```


### Configuration

```console
$ ansible-config dump --only-changed
ANSIBLE_NOCOWS(/home/russell/repos/ansible/ansible.cfg) = False
DEFAULT_ROLES_PATH(/home/russell/repos/ansible/ansible.cfg) = ['/home/russell/repos/ansible/roles', '/home/russell/ansible/roles']
DEFAULT_STRATEGY(/home/russell/repos/ansible/ansible.cfg) = linear
DEFAULT_TIMEOUT(/home/russell/repos/ansible/ansible.cfg) = 30
DEFAULT_VAULT_PASSWORD_FILE(/home/russell/repos/ansible/ansible.cfg) = /home/russell/.vault_pass.txt
HOST_KEY_CHECKING(/home/russell/repos/ansible/ansible.cfg) = False

(Colleague running 2.11.3 version, I am still on 2.9.10 to make testing easier)
```


### OS / Environment

```
$ uname -r
4.14.104-95.84.amzn2.x86_64
```

### Steps to Reproduce

When running a playbook that uses `ansible_pkg_mgr` on ansible version `2.9.10` to a Amazon Linux2 host, `yum` is returned.

When running the same playbook on `core: 2.11.3` to a Amazon Linux2 host `apt` is returned.

Task in question:

```
- name: ensure sudo package is installed
  action:
    module: '{{ ansible_pkg_mgr }}'
    name: '{{ admin_users_sudo_package }}'
    state: present
  when: admin_users_sudo_package is defined```
```

Ran on 2.9.10:

```
TASK [ae.users : debug ansible family] *****************************************************************
ok: [ip-10-80-0-135.us-east-2.compute.internal] => {
    "msg": "family: RedHat"
}
ok: [ip-10-80-0-164.us-east-2.compute.internal] => {
    "msg": "family: RedHat"
}
ok: [ip-10-80-0-71.us-east-2.compute.internal] => {
    "msg": "family: Debian"
}
ok: [ip-10-80-0-211.us-east-2.compute.internal] => {
    "msg": "family: RedHat"
}

TASK [ae.users : ensure sudo package is installed] *****************************************************
ok: [ip-10-80-0-135.us-east-2.compute.internal]
ok: [ip-10-80-0-211.us-east-2.compute.internal]
ok: [ip-10-80-0-164.us-east-2.compute.internal]
ok: [ip-10-80-0-71.us-east-2.compute.internal]

```

Ran on 2.11.3

```
TASK [ae.users : ensure sudo package is installed] ********************************************************************************
ok: [ip-10-18-0-76.us-west-2.compute.internal]
ok: [ip-10-18-0-171.us-west-2.compute.internal]
[WARNING]: Updating cache and auto-installing missing dependency: python-apt
fatal: [ec2-44-225-183-160.us-west-2.compute.amazonaws.com]: FAILED! => {"changed": false, "cmd": "apt-get update", "msg": "[Errno 2] No such file or directory", "rc": 2, "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
```

Host in question:

```
root@x-useast2-es-3[x-useast2]:~$ uname
Linux

root@x-useast2-es-3[x-useast2]:~$ uname -r
4.14.104-95.84.amzn2.x86_64
```

### Expected Results

I expect yum to returned on yum based hosts, not apt.

### Actual Results

```console
[WARNING]: Updating cache and auto-installing missing dependency: python-apt
fatal: [ec2-44-225-183-160.us-west-2.compute.amazonaws.com]: FAILED! => {"changed": false, "cmd": "apt-get update", "msg": "[Errno 2] No such file or directory", "rc": 2, "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
if self._step and choose_step:
                            if self._take_step(task):
                                choose_step = False
                            else:
                                skip_rest = True
                                break
                        run_once = templar.template(task.run_once) or action and getattr(action, 'BYPASS_HOST_LOOP', False)
                        if (task.any_errors_fatal or run_once) and not task.ignore_errors:
                            any_errors_fatal = True
                        if not callback_sent:
                            display.debug("sending task start callback, copying the task so we can template it temporarily")
                            saved_name = task.name
                            display.debug("done copying, going to template now")
                            try:
                                task.name = to_text(templar.template(task.name, fail_on_undefined=False), nonstring='empty')
                                display.debug("done templating")
                            except Exception:
                                
                                
                                display.debug("templating failed for some reason")
                            display.debug("here goes the callback...")
                            self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False)
                            task.name = saved_name
                            callback_sent = True
                            display.debug("sending task start callback")
                        self._blocked_hosts[host.get_name()] = True
                        self._queue_task(host, task, task_vars, play_context)
                        del task_vars
                    
                    if run_once: