This policy is inventory related to redhat hosts.

common bodies

inventory_redhat

Prototype: inventory_redhat

Description: Red Hat inventory bundle

This common bundle is for Red Hat Linux inventory work.

Implementation:

bundle common inventory_redhat
{
  classes:
      "redhat_pure" or => { strcmp( "$(sys.os_release[ID])" , "rhel" ),  # Red Hat > 7 have /etc/os-release and the ID field is set to rhel
                            strcmp( "any", and( "redhat.!(centos|oracle|fedora|rocky|almalinux)", # Red Hat < 7 does not have /etc/os-release, and is pure if we don't find another known derivative
                                 not( isvariable( "sys.os_release" ))))},
        comment => "pure Red Hat",
        meta => { "inventory", "attribute_name=none" };

      "redhat_derived" expression => "redhat.!redhat_pure",
      comment => "derived from Red Hat",
      meta => { "inventory", "attribute_name=none" };

      "inventory_redhat_have_python_symlink" expression => fileexists("$(sys.bindir)/cfengine-selected-python");

    inventory_redhat_have_python_symlink::
      "cfe_yum_package_module_supported" -> { "CFE-2602", "CFE-3512" }
        comment => "Here we see if the version of python found is acceptable for
                    the yum package module. We use this guard to prevent errors
                    related to missing python modules.",
        expression => returnszero("$(sys.bindir)/cfengine-selected-python -V 2>&1 | grep ^Python | cut -d' ' -f 2 | ( IFS=. read v1 v2 v3 ; [ $v1 -ge 3 ] || [ $v1 -eq 2 -a $v2 -ge 4 ] )",
                                  useshell);
}