RESOURCES / BLOGS /

RHEL 7 to RHEL 9 Migration Strategy and Risk Checklist

Plan your RHEL 7 to 9 migration: Leapp needs a two-hop 7→8→9 upgrade or a greenfield rebuild. Get the risk checklist and book a migration assessment.
LET’S CONNECT

Have a Technology Challenge? Let’s Solve It.

Tell us what you want to improve, build, integrate or automate. Our experts will review your requirements and connect you with the right specialist.

Table of Contents

What You Will Know After Reading This

  • Why RHEL 7 end of support (maintenance ended 30 June 2024) leaves only a paid, shrinking ELS window, and what that costs you in audit exposure.
  • Why Leapp cannot jump from 7 to 9, and how the two-hop path (7.9 → 8.10 → 9.x) actually runs.
  • Which OpenSSL 3.0 and crypto-policy defaults will break legacy TLS clients, SHA-1 signatures, and short RSA keys.
  • How the iptables-to-nftables shift and Python 2.7 removal surface in production.
  • A qualification matrix for choosing in-place upgrade or greenfield rebuild, plus a 5-phase risk checklist.

Table of Contents

Why a RHEL 7 to 9 Migration Is Not a Simple “Yum Update”

A rhel 7 to 9 migration crosses two major releases, two kernel ABIs (3.10 to 4.18 to 5.14), and three crypto generations, so treating it like a patch cycle invites boot failures and broken integrations.

On RHEL 7, yum update stays inside one kernel ABI and library baseline. RHEL 9 changes almost everything underneath your applications. Python 2.7 is gone. /usr/bin/python no longer exists by default. OpenSSL jumps from 1.0.2k to 3.0. The packet filter becomes nftables. ntpd is replaced by chrony, docker by podman, and legacy network-scripts by NetworkManager.

Skip the planning and you find out the hard way: a third-party kernel module fails on first boot, a Python 2 daemon dies silently, or a TLS 1.0 payment gateway stops connecting at 2 a.m.

Facing Legacy RHEL 7 End of Support Deadlines? Stop guessing your upgrade path. Request a RHEL migration assessment to evaluate your kernel modules and custom binaries with Ekfrazo’s senior engineers.

RHEL Migration Strategy: Comparison Matrix and Scenario Math

A sound rhel migration strategy picks between a two-hop Leapp in-place upgrade (7→8→9) and a greenfield parallel build, based on configuration drift, application runtimes, and the downtime your business can absorb.

Migration Approach Engineering Effort Downtime Window Best For
In-Place 2-Hop (Leapp 7→8→9) Medium. Two inhibitor-remediation cycles, two reboots, two validation passes 2 to 6 hours per host, split across two windows Standard RPM workloads, low drift, VMs with good snapshots
Greenfield Parallel (new RHEL 9 + cutover) High upfront. Rebuild via Ansible/Image Builder, data sync, app re-test Minutes to 1 hour at DNS/load-balancer cutover Heavy cruft, hardware refresh, Python 2 apps, regulated estates
Convert2RHEL then Leapp Medium-high. Convert CentOS/Oracle Linux 7 first, then run both hops Same as in-place, plus one conversion window CentOS 7 estates that need a supported path
Stay on RHEL 7 ELS (defer) Low now, rising later None today Short bridge only, with a funded exit date

Scenario: the true cost of “just staying on ELS”

Take a mid-size estate of 200 RHEL 7 servers. RHEL 7 standard maintenance ended on 30 June 2024. ELS add-on coverage runs to 30 June 2028, but it covers only selected Critical and Important fixes for a defined package set. Newer TLS libraries, Python runtimes, and container tooling stay frozen.

Now the compliance math. If a PCI DSS or ISO/IEC 27001 auditor flags those hosts as outside mainstream support, each one becomes a documented exception. At 2 engineering hours per host per quarter for tracking, scanning, and sign-off, that is 1,600 hours a year defending old servers, before ELS fees. And every quarter you defer compresses the final cutover, because 2028 does not move.

The Two-Hop Upgrade Workflow

+------------------+     +-------------------------+     +--------------------+
|  RHEL 7.9 Source | --> |  Leapp Pre-Upgrade Check| --> | RHEL 8.10 Interim  |
|  (fully patched) |     |  leapp preupgrade       |     | validate + harden  |
+------------------+     |  fix inhibitors         |     +---------+----------+
                         +-------------------------+               |
                                                                   v
+------------------+     +-------------------------+     +--------------------+
|  RHEL 9 Target   | <-- |  Leapp Second Hop       | <-- | Leapp Pre-Upgrade  |
|  SELinux enforce |     |  leapp upgrade (8 -> 9) |     | Check (8.10 -> 9)  |
|  crypto: DEFAULT |     |  reboot + verify        |     | fix new inhibitors |
+------------------+     +-------------------------+     +--------------------+

Treat RHEL 8.10 as a real checkpoint: run your test suite there before the second hop.

The Ekfrazo 5-Stage RHEL Migration and Risk Checklist

The Ekfrazo checklist splits a red hat enterprise linux upgrade into five gated phases: inventory, two-hop execution, crypto transition, firewall modernization, and validation, each with its own exit criteria.

Phase 1: Pre-Upgrade Inventory and Deprecated Package Audit (Leapp Pre-Upgrade)

  • Confirm entitlement with subscription-manager status and lock the host to RHEL 7.9 with all errata applied.
  • Register with insights-client and run the pre-upgrade advisor across the fleet to catch inhibitors at scale.
  • Run leapp preupgrade and read /var/log/leapp/leapp-report.txt. Resolve every inhibitor and record answers in /var/log/leapp/answerfile.
  • Map RPM dependency trees (repoquery --whatrequires) to flag EPEL, vendor, or hand-built RPMs with no RHEL 8 equivalent.
  • CentOS or Oracle Linux 7 hosts go through convert2rhel first.

Phase 2: Two-Hop Upgrade Strategy (RHEL 7 → RHEL 8 → RHEL 9)

  • Snapshot or back up (ReaR, VM snapshot, or storage clone) before each hop.
  • Hop 1: leapp upgrade to RHEL 8.10, reboot, validate services.
  • Hop 2: re-run leapp preupgrade on 8.10 (new inhibitors appear here), then upgrade to a supported RHEL 9 minor listed in Red Hat’s current upgrade-path matrix.
  • Rebuild or replace Python 2.7 code. RHEL 9 ships Python 3.9 as the platform runtime, with newer 3.x streams available.

Phase 3: Cryptographic Transition (OpenSSL 1.0.2 to OpenSSL 3.0 Cipher Suites)

  • RHEL 9 runs OpenSSL 3.0 under system-wide crypto policies. DEFAULT disables TLS 1.0/1.1 and SHA-1 signatures.
  • Inventory every certificate, keystore, and partner endpoint. Reissue RSA keys under 2048 bits and any SHA-1-signed certs.
  • Use update-crypto-policies --show and test against DEFAULT. Only use a scoped subpolicy (for example DEFAULT:SHA1) as a time-boxed exception, never LEGACY fleet-wide.

Phase 4: Network and Firewall Modernization (iptables to nftables)

  • Export existing rules (iptables-save) and translate with iptables-restore-translate.
  • Move policy into firewalld zones (nftables backend) or native nft rulesets managed in Git.
  • Re-test anything writing raw iptables rules (fail2ban, older Kubernetes agents, scripts).
  • Convert ifcfg network scripts to NetworkManager keyfiles.

Phase 5: Post-Upgrade Validation, SELinux Enforcement, and Hardening

  • Confirm getenforce returns Enforcing. Leapp may relabel or set permissive during upgrade.
  • Remove leftover el7/el8 packages (rpm -qa | grep -E 'el7|el8') and stale kernels.
  • Apply a CIS or DISA STIG profile with OpenSCAP, and re-run insights-client for drift.
  • For broader controls, align with our Enterprise Linux infrastructure hardening practice.

Where Linux Migrations Fail: Hidden Kernel and Crypto Traps

Most failed RHEL upgrades trace back to four traps: non-kABI kernel modules, legacy TLS dependencies, hard-coded Python 2 paths, and firewall tooling that still assumes iptables.

  1. Kernel modules without kABI compliance. Storage, backup, and EDR agents often ship kmods built for kernel 3.10 that will not load on 4.18 or 5.14. Result: missing disks, failed boot, or a dark security console.
  2. Legacy TLS mismatches. The mainframe connector or partner endpoint that only speaks TLS 1.0 fails closed with handshake errors.
  3. Python 2 shebangs. Cron jobs with #!/usr/bin/python stop running with no alert. Nobody notices until a report goes missing.
  4. Silent firewall drift. Rules applied by scripts using iptables -A may load into the compat layer but not match what firewalld reports, creating gaps auditors find before you do.

For a wider view of these patterns, see our guide on Red Hat modernization risk management.

3 Questions Infrastructure Leads Must Ask Before Approving a RHEL Upgrade Plan

  1. Which third-party kernel modules and agents have vendor-certified builds for RHEL 8 and RHEL 9?
  2. Which external systems still negotiate TLS 1.0/1.1 or present SHA-1 certificates, and who owns fixing them?
  3. What is our tested rollback time per hop, and has anyone actually restored from it?

Qualification Matrix: In-Place Upgrade vs. Greenfield Migration

Choose in-place Leapp when hosts are clean, RPM-managed, and low on custom kernel code. Choose greenfield when drift, dead runtimes, or new hardware make a rebuild cheaper than remediation.

In-Place Upgrade (Leapp) If:

  • All software comes from RHEL or vendor repos with RHEL 8 and 9 builds.
  • Few or no custom kernel wrappers, out-of-tree drivers, or patched system libraries.
  • The host is a VM with fast snapshot and restore.

Greenfield Migration If:

  • Years of hand-edited configs and manual installs mean nobody trusts what is on the box.
  • Core apps depend on Python 2.7, old Java builds, or libraries with no RHEL 9 package.
  • A hardware refresh, cloud move, or datacenter exit is already planned.

How Ekfrazo Delivers Secure Enterprise Linux Modernization

Ekfrazo runs RHEL migrations as governed programs that connect platform upgrades to customer (CX), employee (EX), and operational (OX) outcomes, with ISO/IEC-aligned change control at every gate.

Migration waves are sequenced around customer-facing services, engineer tooling, and the SLAs you report on. We use Ansible for repeatable builds, Insights for fleet-wide inhibitor analysis, and evidence packs auditors accept. Learn more about our Red Hat consulting and migration services.

Ready to Retire RHEL 7 Without the Outage?

Get a fleet-level inhibitor report, kABI and crypto risk scoring, and a costed in-place vs. greenfield plan from Ekfrazo’s Red Hat architects.

Request a RHEL migration assessment →

Frequently Asked Questions

Can I upgrade directly from RHEL 7 to RHEL 9?

No. Leapp supports in-place upgrades only between adjacent major releases, so a RHEL 7 to 9 migration needs two hops (7.9 → 8.10 → 9.x) or a greenfield rebuild on RHEL 9.

When is RHEL 7 end of support?

RHEL 7 standard maintenance ended on 30 June 2024. Paid Extended Life Support continues until 30 June 2028 but covers only selected critical and important fixes, not new features or runtimes.

What is the best RHEL migration strategy for large estates?

Most large estates use a hybrid. Clean, RPM-managed VMs go through two-hop Leapp upgrades, while drift-heavy or Python 2 hosts are rebuilt on RHEL 9 with Ansible and cut over in parallel.

What breaks most often after moving to RHEL 9?

The usual failures are out-of-tree kernel modules, TLS 1.0/1.1 or SHA-1 dependencies blocked by OpenSSL 3.0 crypto policies, Python 2 scripts, and firewall scripts written for legacy iptables.

How long does a RHEL 7 to 9 migration take?

A single host takes 2 to 6 hours of upgrade time across two windows. A 200-server estate typically needs 3 to 6 months, including assessment, pilot waves, application testing, and phased rollout.

Table of Contents
FREE TECHNOLOGY ASSESSMENT

Not Sure Where to Start?

Get an expert review of your current technology landscape and a clear view of where to improve integration, automation, architecture and performance.

No-obligation discussion · Tailored recommendations

LET’S TALK

Have a Technology Challenge? Let’s Solve It.

Whether you are modernising legacy systems, integrating platforms or planning your next AI initiative, our specialists can help you plan the next step with confidence.