Recently I need to install a package called Lmod on a Red Hat 8 server. Lmod is available from RHEL 8 EPEL8 repository, however it has a dependency called lua-filesystem which is only available from codeready-builder repository. On my RHEL 8 server, the codeready-builder repository is not enabled by default.

Here is how I’ve got Lmod installed manually:

# subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
# dnf install Lmod

Looking at the above commands, I needed to enable the codeready-builder-for-rhel-8-x86_64-rpms first before installing Lmod. The thing is, I’m going to forget that Lmod requires lua-filesystem which is not available from the same repository as Lmod unless I write it down somewhere. Or better yet, let’s automate it with Ansible!

Tonight, I just learn that there is a community Ansible module which provides the exact feature that I’m looking for - it’s called community.general.rhsm_repository.

Here is a working example I used in my Ansible playbook:

- name: Enable codeready-builder repository
  community.general.rhsm_repository:
    name: codeready-builder-for-rhel-8-x86_64-rpms
  when: ansible_os_family == 'RedHat'
  tags:
    - lmod
  
- name: Install Lmod package
  package:
    name: 
      - lua-filesystem      # this is not required
      - Lmod
    state: present
  when: ansible_os_family == 'RedHat'
  tags:
    - lmod

Well, there is nothing fancy, but it worked.

Learn more about this awesome Ansible module at: community.general.rhsm_repository.

If you want to add a repo is not managed by RHEL subscription manager, you can read this article available at Red Hat Enable Sysadmin instead: Add a repo and install a package the Ansible way.