### 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 task._role._metadata is None or task._role._metadata and not task._role._metadata.allow_duplicates:
                            display.debug("'%s' skipped because role has already run" % task)
                            continue
                    display.debug("getting variables")
                    task_vars = self._variable_manager.get_vars(play=iterator._play, host=host, task=task,
                                                                _hosts=self._hosts_cache, _hosts_all=self._hosts_cache_all)
                    self.add_tqm_variables(task_vars, play=iterator._play)
                    templar = Templar(loader=self._loader, variables=task_vars)
                    display.debug("done getting variables")
                    
                    
                    
                    task.action = templar.template(task.action)
                    try:
                        action = action_loader.get(task.action, class_only=True, collection_list=task.collections)
                    except KeyError:
                        
                        
                        action = None
                    if task.action in C._ACTION_META:
                        
                        
                        results.extend(self._execute_meta(task, play_context, iterator, host))
                        if task.args.get('_raw_params', None) not in ('noop', 'reset_connection', 'end_host', 'role_complete'):
                            run_once = True
                        if (task.any_errors_fatal or run_once) and not task.ignore_errors:
                            any_errors_fatal = True
                    else: