##### SUMMARY

I tried automating stuff on RHEL 8.3 Edge OS. It is the kind of like Fedora CoreOS or Fedora-IoT. It is to use rpm-ostree as package manager, not dnf or yum like regular RHEL.

However it identifies: ```"ansible_pkg_mgr": "dnf"```

Where as it should be ```atomic_container``` like in Fedora CoreOS deriatives.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME

ansible_facts.pkg_mgr

##### ANSIBLE VERSION

This is the latest ansible on my rhel 8.3 host:

```paste below
 ansible --version                                  
ansible 2.9.16
  config file = /home/itengval/src/ansible-test/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /bin/ansible
  python version = 3.6.8 (default, Aug 18 2020, 08:33:21) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
```

##### CONFIGURATION

```paste below
ANSIBLE_PIPELINING(/home/itengval/src/ansible-test/ansible.cfg) = True
DEFAULT_CALLBACK_WHITELIST(/home/itengval/src/ansible-test/ansible.cfg) = ['timer']
DEFAULT_ROLES_PATH(/home/itengval/src/ansible-test/ansible.cfg) = ['/home/itengval/src/ansible-test/roles']
HOST_KEY_CHECKING(/home/itengval/src/ansible-test/ansible.cfg) = False
```

##### OS / ENVIRONMENT

Target os is a RHEL 8.3 Edge VM I created, with minimal set of packages:
```
name = "cockpit-podman"
name = "podman"
name = "openssh-server"
name = "cockpit"
name = "cockpit-packagekit"
name = "cockpit-pcp"
name = "cockpit-system"
name = "cockpit-storaged"
```


##### STEPS TO REPRODUCE

<!--- Paste example playbooks or commands between quotes below -->
```yaml
    - name: ensure firewalld is installed
      tags: firewall
      package: name=firewalld state=present
      when: ansible_pkg_mgr != "atomic_container"
 
    - name: ensure firewalld is installed (on fedora-iot)
      tags: firewall
      command: >-
        rpm-ostree install --idempotent --unchanged-exit-77
        --allow-inactive firewalld
      register: ostree
      failed_when: not ( ostree.rc == 77 or ostree.rc == 0 )
      changed_when: ostree.rc != 77
      when: ansible_pkg_mgr == "atomic_container"
```

##### EXPECTED RESULTS

It should  go like this:
```
TASK [ikke_t.podman_container_systemd : ensure firewalld is installed (on fedora-iot)] **********************
changed: [edge]
```

##### ACTUAL RESULTS


```paste below
TASK [ikke_t.podman_container_systemd : ensure firewalld is installed] **************************************
fatal: [edge]: FAILED! => {"changed": false, "cmd": "dnf install -y python3-dnf", "msg": "[Errno 2] No such file or directory: b'dnf': b'dnf'", "rc": 2}

```

It works if I start the playbook with fixed package manager:

```
ansible-playbook -i edge, -u cloud-user -b -e container_state=running -e ansible_pkg_mgr=atomic_container run-container-grafana-podman.yml
```


gather_subset = ['all']
        mock_module = self._mock_module(gather_subset=gather_subset)
        collectors = self._collectors(mock_module)
        fact_collector = \
            ansible_collector.AnsibleFactCollector(collectors=collectors,
                                                   namespace=ns)
        res = fact_collector.collect(module=mock_module)
        self.assertIsInstance(res, dict)
        
        
        self.assertGreater(len(res), 20)
    def test_empty_all_collector_classes(self):
        mock_module = self._mock_module()
        all_collector_classes = []
        collectors = self._collectors(mock_module,
                                      all_collector_classes=all_collector_classes)
        fact_collector = \
            ansible_collector.AnsibleFactCollector(collectors=collectors,
                                                   namespace=ns)
        res = fact_collector.collect()
        self.assertIsInstance(res, dict)
        
        self.assertLess(len(res), 3)
class TestCollectedFacts(unittest.TestCase):