Correctly identify AlmaLinux

What will definitely not work is having separate parsing classes for each individual input (Puppet, Ansible, Katello sync, RHSM). We need a central place, perhaps a directory with separate class per operating system (this cannot be in our Operatingsystem model class because that does not differentiate several Redhat variants). Having those detection rules on a single place would ensure that no matter what tool it matches, the result (OS name, major, minor, description) is the same. One huge hash/array is also an option, although that could be unreadable pretty soon.

Let me do a summary of what we have today and then we can talk about what to improve. This page is a wiki, please contribute. When unsure, use ? character. Looks like it’s a mess and I only compare Foreman/Puppet/Katello (Ansible and others only make this worse):

Current status

Real name Foreman name Foreman description Katello description
CentOS 7.9 RedHat Red Hat 7.9.2009 CentOS-7
CentOS 8.4 RedHat Red Hat 8.4.2105 CentOS_Linux-8
RHEL 7.9 RedHat Red Hat 7.9 RedHat-7.9
RHEL 8.0 RedHat Red Hat 8.0 RedHat-8.0.0
RHEL 8.4 RedHat Red Hat 78.4 RedHat-8.4
CentOS Stream 8 RedHat Red Hat 8.0 CentOS_Stream-8

Remarks

  • Foreman OS name must not contain spaces (as it is used in filenames etc)
  • Foreman description, however, is an independent text field that can contain anything
  • Katello description shows how Katello plugin sets the description field (it also sets Name, Minor and Minor version)
  • I think RedHat-8.0.0 looks like a bug