Skip to content

Collection of Ansible roles for automating RHEL in-place upgrades using Leapp.

License

Notifications You must be signed in to change notification settings

redhat-cop/infra.leapp

Repository files navigation

Ansible Leapp Collection

CI Lint OpenSSF Best Practices

Overview

This collection provides Ansible roles you can use to perform RHEL in-place upgrades using the Leapp framework. Successfully executing upgrades at scale across a large RHEL estate demands a customized end-to-end automation approach tailored to meet the requirements of your enterprise environment. Use these roles as the foundation of your RHEL in-place upgrade automation solution.

Roles

These are the roles included in the collection. Follow the links below to see the detailed documentation and example playbooks for each role.

  • analysis - executes the Leapp pre-upgrade phase
  • common - used for local logging, mutex locking, and common vars
  • parse_leapp_report - reads pre-upgrade results and checks for inhibitors
  • upgrade - executes the Leapp OS upgrade
  • remediate - assists in the remediation of a system (RHEL 8 only)

Supported RHEL versions

The collection supports RHEL in-place upgrades for the following RHEL versions:

  • RHEL 6 to RHEL 7 (RUT)
  • RHEL 7 to RHEL 8 (Leapp)
  • RHEL 8 to RHEL 9 (Leapp)

The collection may be used for the RHEL upgrade paths and minor versions supported by the indicated upgrade utilities (Leapp or RUT). Refer the to Red Hat knowledge solution article Supported in-place upgrade paths for Red Hat Enterprise Linux for the latest support details.

The roles in this collection have been successfully used in a number of different environments including on-prem bare metal servers and VMs pulling RHEL packages from Red Hat CDN repos, Satellite content views, or mirrored repos internal to disconnected networks. Upgrading RHEL on Amazon EC2 instances pulling from bring-your-own-subscription CDN repos or pay-as-you-go RHUI repos have also been tested. Upgrading RHEL on other public clouds should be possible as well after setting the documented role variables as required.

Not in scope

Third-party products and packages are not upgraded by the upgrade role. To achieve a complete end-to-end server upgrade, you may need to implement custom automation beyond the scope of this collection to perform tasks required for the upgrade or removal/reinstall of any impacted third-party tools and agents, for example Veritas Cluster, SAP HANA, etc. Likewise, the role does not upgrade packages installed from non-RHEL repositories such as Red Hat Software Collections, EPEL, RPM Fusion, etc.

Having said that, many application workloads will benefit from RHEL Application Compatibility support such that they will still function correctly after a RHEL in-place upgrade if simply left untouched. Of course, the only way to know for sure is to run a test upgrade and then assess if there is any unexpected impact to your app. Pro tip: Test in your lower environments before moving on to production.

Example playbooks

Example playbooks can be found here.

Installing the collection from Ansible Galaxy

Before using this collection, you need to install it with the Ansible Galaxy command-line tool:

ansible-galaxy collection install infra.leapp

You can also include it in a requirements.yml file and install it with ansible-galaxy collection install -r requirements.yml, using the format:

---
collections:
  - name: infra.leapp

Note that if you install the collection from Ansible Galaxy, it will not be upgraded automatically when you upgrade the ansible package. To upgrade the collection to the latest available version, run the following command:

ansible-galaxy collection install infra.leapp --upgrade

You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 1.0.0:

ansible-galaxy collection install infra.leapp:==1.0.0

See Using Ansible collections for more details.

Contributing

We are a fledgling community and welcome any new contributors. Get started by opening an issue or pull request. Refer to our contribution guide for more information.

Reporting issues

Please open a new issue for any bugs or security vulnerabilities you may encounter. We also invite you to open an issue if you have ideas on how we can improve the solution or want to make a suggestion for enhancement.

More information

This Ansible collection is just one building block of our larger initiative to make RHEL in-place upgrade automation that works at enterprise scale. Learn more about our end-to-end approach for automating RHEL in-place upgrades at this blog post.

Release notes

See the changelog.

Licensing

MIT

See LICENSE to see the full text.