はじめに

Red Hat社が AWS 上で配布するコミュニティ AMI を使用し、EC2 上に起動した Red Hat Enterprise Linux 7系を8系または9系までインプレースアップグレードしたい、というのが本記事の趣旨になります。

 

アップグレードパス

アップグレードパスがあらかじめ決められており、7 から 8 を飛び越して 9 に一気に上げることはできず、7.9 から 8.8 へ、8.8 から 9.2 へアップグレードしていきます。

なぜ RHEL 8.9 ではなく 8.8 なのかは、Extended Update Support (EUS) が設けられているバージョン 8.8 から EUS が設けられている 9.2 へ移動できる、ということだと思われます。

 

RHEL 7を 8 にインプレースアップグレード

RHEL のバージョン確認

本検証ではバージョン 7.9 を使用します。

AMI名 AMI ID
RHEL-7.9_HVM-20221027-x86_64-0-Hourly2-GP2 ami-05016d58118cb4881
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)

RHEL 7.9 を最新化

本検証では7系の最終マイナーリリースバージョン 7.9 を使用していますが、稼働しているバージョンが 7.9 未満であれば 7.9 まで更新されます。

# yum -y update
読み込んだプラグイン:amazon-id, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

rhel-7-server-rhui-rh-common-rpms                                                                                                                                                                                    | 3.8 kB  00:00:00
rhel-7-server-rhui-rpms                                                                                                                                                                                              | 3.5 kB  00:00:00
rhui-client-config-server-7                                                                                                                                                                                          | 1.5 kB  00:00:00
(1/7): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/group                                                                                                                                                        |  124 B  00:00:00
(2/7): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/primary_db                                                                                                                                                   | 119 kB  00:00:00
(3/7): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/updateinfo                                                                                                                                                   |  34 kB  00:00:00
(4/7): rhel-7-server-rhui-rpms/7Server/x86_64/updateinfo                                                                                                                                                             | 4.3 MB  00:00:00
(5/7): rhel-7-server-rhui-rpms/7Server/x86_64/group                                                                                                                                                                  | 631 kB  00:00:00
(6/7): rhui-client-config-server-7/x86_64/primary                                                                                                                                                                    | 2.7 kB  00:00:00
(7/7): rhel-7-server-rhui-rpms/7Server/x86_64/primary_db                                                                                                                                                             |  94 MB  00:00:01
rhui-client-config-server-7                                                                                                                                                                                                           15/15
依存性の解決をしています
--> トランザクションの確認を実行しています。

(中略)
                                                                                                                                                               | 2.1 kB  00:00:00
インストール:
  kernel.x86_64 0:3.10.0-1160.108.1.el7

依存性関連をインストールしました:
  linux-firmware.noarch 0:20200421-81.git78c0348.el7_9

更新:
  bind-export-libs.x86_64 32:9.11.4-26.P2.el7_9.15          ca-certificates.noarch 0:2023.2.60_v7.0.306-72.el7_9                   cronie.x86_64 0:1.4.11-25.el7_9                     cronie-anacron.x86_64 0:1.4.11-25.el7_9
  curl.x86_64 0:7.29.0-59.el7_9.2                           diffutils.x86_64 0:3.3-6.el7_9                                         emacs-filesystem.noarch 1:24.3-23.el7_9.1           grub2.x86_64 1:2.02-0.87.el7_9.11
  grub2-common.noarch 1:2.02-0.87.el7_9.11                  grub2-pc.x86_64 1:2.02-0.87.el7_9.11                                   grub2-pc-modules.noarch 1:2.02-0.87.el7_9.11        grub2-tools.x86_64 1:2.02-0.87.el7_9.11
  grub2-tools-extra.x86_64 1:2.02-0.87.el7_9.11             grub2-tools-minimal.x86_64 1:2.02-0.87.el7_9.11                        insights-client.noarch 0:3.1.9-1.el7_9              kernel-tools.x86_64 0:3.10.0-1160.108.1.el7
  kernel-tools-libs.x86_64 0:3.10.0-1160.108.1.el7          krb5-libs.x86_64 0:1.15.1-55.el7_9                                     libcurl.x86_64 0:7.29.0-59.el7_9.2                  libgudev1.x86_64 0:219-78.el7_9.9
  libssh2.x86_64 0:1.8.0-4.el7_9.1                          microcode_ctl.x86_64 2:2.1-73.20.el7_9                                 nspr.x86_64 0:4.35.0-1.el7_9                        nss.x86_64 0:3.90.0-2.el7_9
  nss-pem.x86_64 0:1.0.3-7.el7_9.1                          nss-softokn.x86_64 0:3.90.0-6.el7_9                                    nss-softokn-freebl.x86_64 0:3.90.0-6.el7_9          nss-sysinit.x86_64 0:3.90.0-2.el7_9
  nss-tools.x86_64 0:3.90.0-2.el7_9                         nss-util.x86_64 0:3.90.0-1.el7_9                                       openssh.x86_64 0:7.4p1-23.el7_9                     openssh-clients.x86_64 0:7.4p1-23.el7_9
  openssh-server.x86_64 0:7.4p1-23.el7_9                    openssl.x86_64 1:1.0.2k-26.el7_9                                       openssl-libs.x86_64 1:1.0.2k-26.el7_9               python.x86_64 0:2.7.5-94.el7_9
  python-libs.x86_64 0:2.7.5-94.el7_9                       python-perf.x86_64 0:3.10.0-1160.108.1.el7                             python-syspurpose.x86_64 0:1.24.53-1.el7_9          redhat-release-server.x86_64 0:7.9-9.el7_9
  rh-amazon-rhui-client.noarch 0:4.0.14-1.el7               rhc.x86_64 1:0.2.4-1.el7_9                                             rsync.x86_64 0:3.1.2-12.el7_9                       subscription-manager.x86_64 0:1.24.53-1.el7_9
  subscription-manager-rhsm.x86_64 0:1.24.53-1.el7_9        subscription-manager-rhsm-certificates.x86_64 0:1.24.53-1.el7_9        sudo.x86_64 0:1.8.23-10.el7_9.3                     systemd.x86_64 0:219-78.el7_9.9
  systemd-libs.x86_64 0:219-78.el7_9.9                      systemd-sysv.x86_64 0:219-78.el7_9.9                                   tzdata.noarch 0:2023d-1.el7                         zlib.x86_64 0:1.2.7-21.el7_9

完了しました!

リポジトリの有効化

# yum-config-manager --enable rhui-client-config-server-7
# yum-config-manager --enable rhel-7-server-rhui-extras-rpms

必要な RHUI パッケージのインストール

# yum -y install rh-amazon-rhui-client leapp-rhui-aws
読み込んだプラグイン:amazon-id, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

rhel-7-server-rhui-extras-rpms                                                                                                                                                                                       | 3.4 kB  00:00:00
rhel-7-server-rhui-rh-common-rpms                                                                                                                                                                                    | 3.8 kB  00:00:00
rhel-7-server-rhui-rpms                                                                                                                                                                                              | 3.5 kB  00:00:00
rhui-client-config-server-7                                                                                                                                                                                          | 1.5 kB  00:00:00
(1/3): rhel-7-server-rhui-extras-rpms/x86_64/group                                                                                                                                                                   |  124 B  00:00:00
(2/3): rhel-7-server-rhui-extras-rpms/x86_64/updateinfo                                                                                                                                                              | 259 kB  00:00:00
(3/3): rhel-7-server-rhui-extras-rpms/x86_64/primary_db                                                                                                                                                              | 632 kB  00:00:00
パッケージ rh-amazon-rhui-client-4.0.14-1.el7.noarch はインストール済みか最新バージョンです
依存性の解決をしています

(中略)

インストール:
  leapp-rhui-aws.noarch 0:1.0.7-1.el7

依存性関連をインストールしました:
  dnf.noarch 0:4.0.9.2-2.el7_9                       dnf-data.noarch 0:4.0.9.2-2.el7_9                       json-glib.x86_64 0:1.4.2-2.el7            leapp.noarch 0:0.16.0-1.el7_9              leapp-deps.noarch 0:0.16.0-1.el7_9
  leapp-upgrade-el7toel8.noarch 0:0.19.0-1.el7_9     leapp-upgrade-el7toel8-deps.noarch 0:0.19.0-1.el7_9     libcomps.x86_64 0:0.1.8-14.el7            libdnf.x86_64 0:0.22.5-2.el7_9             libmodulemd.x86_64 0:1.6.3-1.el7
  librepo.x86_64 0:1.8.1-8.el7_9                     libreport-filesystem.x86_64 0:2.1.11-53.el7             librhsm.x86_64 0:0.0.3-3.el7_9            libsolv.x86_64 0:0.6.34-4.el7              python-enum34.noarch 0:1.0.4-1.el7
  python2-dnf.noarch 0:4.0.9.2-2.el7_9               python2-hawkey.x86_64 0:0.22.5-2.el7_9                  python2-leapp.noarch 0:0.16.0-1.el7_9     python2-libcomps.x86_64 0:0.1.8-14.el7     python2-libdnf.x86_64 0:0.22.5-2.el7_9

完了しました!

Leapp ユーティリティーをインストールする

インストール済みであれば、その旨メッセージが表示されるため確認します。

# yum install leapp-upgrade
読み込んだプラグイン:amazon-id, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

パッケージ leapp-upgrade-el7toel8-0.19.0-1.el7_9.noarch はインストール済みか最新バージョンです
何もしません

アップグレード前の事前確認

# leapp preupgrade --no-rhsm --target 8.8

(中略)

Debug output written to /var/log/leapp/leapp-preupgrade.log

============================================================
                      REPORT OVERVIEW
============================================================

Upgrade has been inhibited due to the following problems:
    1. Possible problems with remote login using root account
    2. Newest installed kernel not in use
    3. Missing required answers in the answer file

HIGH and MEDIUM severity reports:
    1. Packages available in excluded repositories will not be installed
    2. Difference in Python versions and support in RHEL 8
    3. GRUB2 core will be automatically updated during the upgrade
    4. Usage of deprecated Model "RequiredTargetUserspacePackages" at /usr/share/leapp-repository/repositories/system_upgrade/common/actors/cloud/checkrhui/actor.py:123

Reports summary:
    Errors:                      0
    Inhibitors:                  3
    HIGH severity reports:       4
    MEDIUM severity reports:     0
    LOW severity reports:        4
    INFO severity reports:       4

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW
============================================================

Answerfile has been generated at /var/log/leapp/answerfile

事前確認結果

レポートとして /var/log/leapp/leapp-report.txt に出力され、inhibitor (阻害要素)となっている項目を対処する必要があります。

Risk Factor: high (inhibitor)
Title: Newest installed kernel not in use
Summary: To ensure a stable upgrade, the machine needs to be booted into the latest installed kernel.
Remediation: [hint] Boot into the most up-to-date kernel installed on the machine before running Leapp again.
Key: ebb478cfa5443f83a8c9a78ba510eb40e6e9d117
----------------------------------------
Risk Factor: high (inhibitor)
Title: Possible problems with remote login using root account
Summary: OpenSSH configuration file does not explicitly state the option PermitRootLogin in sshd_config file, which will default in RHEL8 to "prohibit-password".
Remediation: [hint] If you depend on remote root logins using passwords, consider setting up a different user for remote administration or adding "PermitRootLogin yes" to sshd_config. If this change is ok for you, add explicit "PermitRootLogin prohibit-password" to your sshd_config to ignore this inhibitor
Key: 3d21e8cc9e1c09dc60429de7716165787e99515f
----------------------------------------
Risk Factor: high (inhibitor)
Title: Missing required answers in the answer file
Summary: One or more sections in answerfile are missing user choices: remove_pam_pkcs11_module_check.confirm
For more information consult https://red.ht/leapp-dialogs.
Remediation: [hint] Please register user choices with leapp answer cli command or by manually editing the answerfile.
[command] leapp answer --section remove_pam_pkcs11_module_check.confirm=True
Key: d35f6c6b1b1fa6924ef442e3670d90fa92f0d54b
----------------------------------------

(以下略)

 

阻害要因への対処1

そのままの通りなのですが、安定したアップグレードを確実に行うには、マシンを最新のインストール済みカーネルで起動する必要があります。

Risk Factor: high (inhibitor)
Title: Newest installed kernel not in use
Summary: To ensure a stable upgrade, the machine needs to be booted into the latest installed kernel.
Remediation: [hint] Boot into the most up-to-date kernel installed on the machine before running Leapp again.
Key: ebb478cfa5443f83a8c9a78ba510eb40e6e9d117

以下、対処2 および対処3 を行った後で、OS を再起動します。

# reboot

 

阻害要因への対処2

root ユーザーでの SSH 接続に対する内容です。
sshd_config 内で明示的に root ユーザーの直ログインに関する挙動を記述する必要があります。

Risk Factor: high (inhibitor)
Title: Possible problems with remote login using root account
Summary: OpenSSH configuration file does not explicitly state the option PermitRootLogin in sshd_config file, which will default in RHEL8 to "prohibit-password".
Remediation: [hint] If you depend on remote root logins using passwords, consider setting up a different user for remote administration or adding "PermitRootLogin yes" to sshd_config. If this change is ok for you, add explicit "PermitRootLogin prohibit-password" to your sshd_config to ignore this inhibitor
Key: 3d21e8cc9e1c09dc60429de7716165787e99515f

/etc/ssh/sshd_config の末尾に以下 PermitRootLogin no を追記します。
(元々 sshd_config に項目 PermitRootLogin yes 自体は書いてあり、コメントアウトになっていることもある模様)

# tail -n 1 /etc/ssh/sshd_config
PermitRootLogin no

ちなみにインターネット上ではそのままコメントアウトを外して PermitRootLogin yes にしましょう、という記事を多々目にします。

セキュリティリスクが高まるため、Amazon Linux 2 においてはデフォルト状態で root ユーザーによる直接の SSH 接続はできないようになっています。
今回は RHEL ではありますが、root ユーザーでの直ログインが真に必要でない場合を除いて、安易に yes に設定しないようにしたいですね。

 

阻害要因への対処3

/var/log/leapp/answerfile への回答がないことに対する内容で、confirm = のコメントアウトを外し、True を追記します。

# tail -n 2 /var/log/leapp/answerfile
confirm = True

 

RHEL 8 へのアップグレードを実施

先の阻害要因が解消できたので、leapp upgrade コマンドでアップグレードを実施します。

# leapp upgrade --no-rhsm --target 8.8
==> Processing phase `configuration_phase`

(中略)

Transaction Summary
========================================================================================================================================
Install    223 Packages
Upgrade    257 Packages
Remove      72 Packages
Downgrade    9 Packages

Total size: 665 M
DNF will only download packages, install gpg keys, and check the transaction.
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Complete!
====> * add_upgrade_boot_entry
        Add new boot entry for Leapp provided initramfs.
A reboot is required to continue. Please reboot your system.


Debug output written to /var/log/leapp/leapp-upgrade.log

============================================================
                      REPORT OVERVIEW
============================================================

HIGH and MEDIUM severity reports:
    1. Packages available in excluded repositories will not be installed
    2. Difference in Python versions and support in RHEL 8
    3. GRUB2 core will be automatically updated during the upgrade
    4. Usage of deprecated Model "RequiredTargetUserspacePackages" at /usr/share/leapp-repository/repositories/system_upgrade/common/actors/cloud/checkrhui/actor.py:123
    5. Module pam_pkcs11 will be removed from PAM configuration

Reports summary:
    Errors:                      0
    Inhibitors:                  0
    HIGH severity reports:       4
    MEDIUM severity reports:     1
    LOW severity reports:        5
    INFO severity reports:       4

Before continuing consult the full report:
    A report has been generated at /var/log/leapp/leapp-report.json
    A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                   END OF REPORT OVERVIEW
============================================================

Answerfile has been generated at /var/log/leapp/answerfile

本検証に使用した環境は Red Hat社のコミュニティ AMI から起動した直後、プレーンな状態の EC2 で、約8分間で完了しました。

A reboot is required to continue. Please reboot your system. とのことなので再起動します。

# reboot

なのですが、コマンドで reboot をかけた後どうやらクラッシュしている?のか、単に時間がかかっている?のか、再度 SSH 接続を試みてもタイムアウトで接続することができませんでした。

stop-instances & start-instances をかけることで SSH 接続できるようになりました。

$ aws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxxxxx
$ aws ec2 start-instances --instance-ids i-xxxxxxxxxxxxxxxx

start 時のステータスチェック「初期化しています」が珍しく7分もかかっていたので、SSH 接続がタイムアウトしてしまったように見えました。

 

改めて RHEL のバージョン確認

RHEL 7.9 から 8.8 へアップグレードされたことが確認できました。

# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

 

RHEL 8 を 9 にインプレースアップグレード

RHEL 8.8 を最新化

冒頭のアップグレードパスを確認しながら事前に最新化しておきます。

# dnf -y update
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

メタデータの期限切れの最終確認: 0:00:52 前の 2024年02月09日 08時06分34秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!

リポジトリの有効化

dnf config-manager --set-enabled rhui-client-config-server-8

RHEL 8 から 9 にアップグレードする際に使用する leapp-upgrade-el8toel9 をインストールしますが、
RHEL 7 から 8 にアップグレードする際の leapp-upgrade-el7toel8 が残っており、競合するため削除します。

# grep -n leapp-upgrade-el7toel8 /etc/yum.conf
7:exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp

# sed -i '7d' /etc/yum.conf
# grep -n leapp-upgrade-el7toel8 /etc/yum.conf
# grep leapp /etc/dnf/dnf.conf  -n
7:exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp

# sed -i '7d' /etc/dnf/dnf.conf
# grep leapp /etc/dnf/dnf.conf  -n
# yum -y remove leapp-upgrade-el7toel8
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

依存関係が解決しました。
============================================================================================================================================================================================================================================
 パッケージ                                                         アーキテクチャー                                   バージョン                                                 リポジトリー                                        サイズ
============================================================================================================================================================================================================================================
削除中:
 leapp-upgrade-el7toel8                                             noarch                                             0.19.0-1.el7_9                                             @System                                             9.3 M
依存関係パッケージの削除:
 leapp                                                              noarch                                             0.16.0-1.el7_9                                             @System                                              62 k

トランザクションの概要
============================================================================================================================================================================================================================================
削除  2 パッケージ

解放された容量: 9.4 M
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                                                                    1/1
  削除             : leapp-0.16.0-1.el7_9.noarch                                                                                                                                                                                        1/2
  削除             : leapp-upgrade-el7toel8-0.19.0-1.el7_9.noarch                                                                                                                                                                       2/2
  scriptletの実行中: leapp-upgrade-el7toel8-0.19.0-1.el7_9.noarch                                                                                                                                                                       2/2
  検証             : leapp-0.16.0-1.el7_9.noarch                                                                                                                                                                                        1/2
  検証             : leapp-upgrade-el7toel8-0.19.0-1.el7_9.noarch                                                                                                                                                                       2/2
インストール済みの製品が更新されています。

削除しました:
  leapp-0.16.0-1.el7_9.noarch                                                                                  leapp-upgrade-el7toel8-0.19.0-1.el7_9.noarch

完了しました!
# rpm -q python2-leapp-0.16.0-1.el7_9.noarch
python2-leapp-0.16.0-1.el7_9.noarch

# dnf -y remove python2-leapp-0.16.0-1.el7_9.noarch
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

依存関係が解決しました。
============================================================================================================================================================================================================================================
 パッケージ                                                  アーキテクチャー                                     バージョン                                                    リポジトリー                                          サイズ
============================================================================================================================================================================================================================================
削除中:
 python2-leapp                                               noarch                                               0.16.0-1.el7_9                                                @System                                               655 k

トランザクションの概要
============================================================================================================================================================================================================================================
削除  1 パッケージ

解放された容量: 655 k
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                                                                    1/1
  削除             : python2-leapp-0.16.0-1.el7_9.noarch                                                                                                                                                                                1/1
  検証             : python2-leapp-0.16.0-1.el7_9.noarch                                                                                                                                                                                1/1
インストール済みの製品が更新されています。

削除しました:
  python2-leapp-0.16.0-1.el7_9.noarch

完了しました!

改めて新しい leapp-upgrade パッケージをインストールします。

# dnf -y install leapp-rhui-aws
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

メタデータの期限切れの最終確認: 0:16:32 前の 2024年02月09日 08時18分39秒 に実施しました。
依存関係が解決しました。
============================================================================================================================================================================================================================================
 パッケージ                                                   アーキテクチャー                             バージョン                                               リポジトリー                                                      サイズ
============================================================================================================================================================================================================================================
インストール:
 leapp-rhui-aws                                               noarch                                       1.0.7-1.el8                                              rhui-client-config-server-8                                        25 k
依存関係のインストール:
 leapp                                                        noarch                                       0.15.1-1.el8                                             rhel-8-appstream-rhui-rpms                                         33 k
 leapp-upgrade-el8toel9                                       noarch                                       0.18.0-1.el8_8.2                                         rhel-8-appstream-rhui-rpms                                        1.0 M
 python3-leapp                                                noarch                                       0.15.1-1.el8                                             rhel-8-appstream-rhui-rpms                                        178 k

トランザクションの概要
============================================================================================================================================================================================================================================
インストール  4 パッケージ

ダウンロードサイズの合計: 1.2 M
インストール後のサイズ: 9.1 M
パッケージのダウンロード:
(1/4): leapp-0.15.1-1.el8.noarch.rpm                                                                                                                                                                        305 kB/s |  33 kB     00:00
(2/4): python3-leapp-0.15.1-1.el8.noarch.rpm                                                                                                                                                                1.4 MB/s | 178 kB     00:00
(3/4): leapp-upgrade-el8toel9-0.18.0-1.el8_8.2.noarch.rpm                                                                                                                                                   7.5 MB/s | 1.0 MB     00:00
(4/4): leapp-rhui-aws-1.0.7-1.el8.noarch.rpm                                                                                                                                                                780 kB/s |  25 kB     00:00
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                                                        6.6 MB/s | 1.2 MB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                                                                    1/1
  インストール中   : python3-leapp-0.15.1-1.el8.noarch                                                                                                                                                                                  1/4
  インストール中   : leapp-0.15.1-1.el8.noarch                                                                                                                                                                                          2/4
  インストール中   : leapp-upgrade-el8toel9-0.18.0-1.el8_8.2.noarch                                                                                                                                                                     3/4
  インストール中   : leapp-rhui-aws-1.0.7-1.el8.noarch                                                                                                                                                                                  4/4
  scriptletの実行中: leapp-rhui-aws-1.0.7-1.el8.noarch                                                                                                                                                                                  4/4
  検証             : leapp-0.15.1-1.el8.noarch                                                                                                                                                                                          1/4
  検証             : python3-leapp-0.15.1-1.el8.noarch                                                                                                                                                                                  2/4
  検証             : leapp-upgrade-el8toel9-0.18.0-1.el8_8.2.noarch                                                                                                                                                                     3/4
  検証             : leapp-rhui-aws-1.0.7-1.el8.noarch                                                                                                                                                                                  4/4
インストール済みの製品が更新されています。

インストール済み:
  leapp-0.15.1-1.el8.noarch                        leapp-rhui-aws-1.0.7-1.el8.noarch                        leapp-upgrade-el8toel9-0.18.0-1.el8_8.2.noarch                        python3-leapp-0.15.1-1.el8.noarch

完了しました!

アップグレード前の事前確認

7.9 から 8.8 へのアップグレード時と同様に、8.8 から 9.2 でも同様に阻害要因の確認を行いますが、本検証環境では阻害要因はありませんでした。

# leapp preupgrade --no-rhsm --target 9.2

(中略)

Transaction Summary
================================================================================================================================
Install     57 Packages
Upgrade    406 Packages
Remove      62 Packages
Downgrade    7 Packages

Total size: 648 M
Total download size: 573 M
Downloading Packages:
Check completed.
====> * target_userspace_crypto_policies
        Set crypto policies inside the target userspace container.
====> * check_initramfs_tasks
        Inhibit the upgrade if conflicting "initramfs" tasks are detected
==> Processing phase `Reports`
====> * verify_check_results
        Check all dialogs and notify that user needs to make some choices.
====> * verify_check_results
        Check all generated results messages and notify user about them.

Debug output written to /var/log/leapp/leapp-preupgrade.log

============================================================
                           REPORT
============================================================

A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                       END OF REPORT
============================================================

Answerfile has been generated at /var/log/leapp/answerfile

RHEL 9 へのアップグレードを実施


leapp upgrade コマンドでアップグレードを実施します。

# leapp upgrade --no-rhsm --target 9.2

(中略)

Transaction Summary
================================================================================================================================
Install     57 Packages
Upgrade    406 Packages
Remove      62 Packages
Downgrade    7 Packages

Total size: 648 M
DNF will only download packages, install gpg keys, and check the transaction.
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Complete!
====> * add_upgrade_boot_entry
        Add new boot entry for Leapp provided initramfs.
A reboot is required to continue. Please reboot your system.


Debug output written to /var/log/leapp/leapp-upgrade.log

============================================================
                           REPORT
============================================================

A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt

============================================================
                       END OF REPORT
============================================================

Answerfile has been generated at /var/log/leapp/answerfile

こちらも約8分間で完了しました。

例によってまた A reboot is required to continue. Please reboot your system. と出ていますが、reboot だと EC2 インスタンスチェックのステータス遷移が見えないので stop-instances & start-instances 後に再度 SSH 接続します。

 

改めて RHEL のバージョン確認

RHEL 8.8 から 9.2 へアップグレードされたことが確認できました。

# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)

 

番外編 Extended Update Support 有効化

冒頭、アップグレードパスで記載した、Extended Update Support (EUS) について再掲します。

元来、RHEL の pay-as-you-go EC2 インスタンスには EUS のサポートを受けるオプションが提供されており、AMI を使用して起動している EC2 の利用料金に含まれています。
サポートを受けるには明示的に EUS リポジトリをサブスクライブする必要があるので以下で実施します。

有効なリポジトリを確認

# dnf repolist
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

repo id                                                                                            repo の名前
rhel-9-appstream-rhui-rpms                                                                         Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
rhel-9-baseos-rhui-rpms                                                                            Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)
rhui-client-config-server-9                                                                        Red Hat Enterprise Linux 9 Client Configuration

EUS へスイッチ

EUS にスイッチするコマンドが存在するか、確認します。

# which rhui-eus-switch
/bin/rhui-eus-switch
# rpm -qa | grep rh-amazon-rhui-client
rh-amazon-rhui-client-4.0.14-1.el9.noarch

RHEL 9.2 の EUS を指定し、スイッチします。

# rhui-eus-switch 9.2
Your RHEL product version is eligible for switch to EUS.
Switching to EUS version 9.2
[INFO:choose_repo] choose_repo:33 2024-02-09 09:31:00,848: Enabling binary repos in redhat-rhui-eus.repo
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

59 ファイルが削除されました

EUS にスイッチしたことを確認します。

# cat /var/run/rhui-eus-switch
Switch to EUS done.

有効なリポジトリを再確認

先ほど有効であった rhel-9-appstream-rhui-rpms が rhel-9-appstream-eus-rhui-rpms へ、rhel-9-baseos-rhui-rpms が rhel-9-baseos-eus-rhui-rpms へ切り替わったことがわかります。

# dnf repolist
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

repo id                                                                                      repo の名前
rhel-9-appstream-eus-rhui-rpms                                                               Red Hat Enterprise Linux 9 - AppStream - Extended Update Support from RHUI (RPMs)
rhel-9-baseos-eus-rhui-rpms                                                                  Red Hat Enterprise Linux 9 - BaseOS - Extended Update Support from RHUI (RPMs)
rhui-client-config-server-9                                                                  Red Hat Enterprise Linux 9 Client Configuration

アップデートおよびインストール可能なパッケージを確認

el9_2 または el9_2.2 とマイナーバージョンの数字が振られ、EUS のリポジトリを参照していることがわかります。

# dnf check-update
サブスクリプション管理リポジトリーを更新しています。
コンシューマー識別子を読み込めません

このシステムは、エンタイトルメントサーバーに登録されていません。subscription-manager で登録できます。

Red Hat Enterprise Linux 9 Client Configuration                                                                                                                                                              48 kB/s | 4.0 kB     00:00
Red Hat Enterprise Linux 9 - AppStream - Extended Update Support from RHUI (RPMs)                                                                                                                            29 MB/s |  25 MB     00:00
Red Hat Enterprise Linux 9 - BaseOS - Extended Update Support from RHUI (RPMs)                                                                                                                               30 MB/s |  16 MB     00:00

NetworkManager.x86_64                                                                                        1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
NetworkManager-config-server.noarch                                                                          1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
NetworkManager-initscripts-updown.noarch                                                                     1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
NetworkManager-libnm.x86_64                                                                                  1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
NetworkManager-team.x86_64                                                                                   1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
NetworkManager-tui.x86_64                                                                                    1:1.42.2-12.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
crypto-policies.noarch                                                                                       20221215-1.git9a18988.el9_2.2                                                                    rhel-9-baseos-eus-rhui-rpms
crypto-policies-scripts.noarch                                                                               20221215-1.git9a18988.el9_2.2                                                                    rhel-9-baseos-eus-rhui-rpms
curl.x86_64                                                                                                  7.76.1-23.el9_2.6                                                                                rhel-9-baseos-eus-rhui-rpms
dracut.x86_64                                                                                                057-22.git20230214.el9_2                                                                         rhel-9-baseos-eus-rhui-rpms
dracut-config-generic.x86_64                                                                                 057-22.git20230214.el9_2                                                                         rhel-9-baseos-eus-rhui-rpms
dracut-config-rescue.x86_64                                                                                  057-22.git20230214.el9_2                                                                         rhel-9-baseos-eus-rhui-rpms
dracut-live.x86_64                                                                                           057-22.git20230214.el9_2                                                                         rhel-9-appstream-eus-rhui-rpms
dracut-network.x86_64                                                                                        057-22.git20230214.el9_2                                                                         rhel-9-baseos-eus-rhui-rpms
dracut-squash.x86_64                                                                                         057-22.git20230214.el9_2                                                                         rhel-9-baseos-eus-rhui-rpms
gnutls.x86_64                                                                                                3.7.6-21.el9_2.1                                                                                 rhel-9-baseos-eus-rhui-rpms
grub2-common.noarch                                                                                          1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-pc.x86_64                                                                                              1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-pc-modules.noarch                                                                                      1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-tools.x86_64                                                                                           1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-tools-efi.x86_64                                                                                       1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-tools-extra.x86_64                                                                                     1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
grub2-tools-minimal.x86_64                                                                                   1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
kernel.x86_64                                                                                                5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-core.x86_64                                                                                           5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-modules.x86_64                                                                                        5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-modules-core.x86_64                                                                                   5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-modules-extra.x86_64                                                                                  5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-tools.x86_64                                                                                          5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kernel-tools-libs.x86_64                                                                                     5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
kexec-tools.x86_64                                                                                           2.0.25-13.el9_2.3                                                                                rhel-9-baseos-eus-rhui-rpms
libcurl.x86_64                                                                                               7.76.1-23.el9_2.6                                                                                rhel-9-baseos-eus-rhui-rpms
libdnf-plugin-subscription-manager.x86_64                                                                    1.29.33.2-1.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
librhsm.x86_64                                                                                               0.0.3-7.el9_2.1                                                                                  rhel-9-baseos-eus-rhui-rpms
libssh.x86_64                                                                                                0.10.4-9.el9_2                                                                                   rhel-9-baseos-eus-rhui-rpms
libssh-config.noarch                                                                                         0.10.4-9.el9_2                                                                                   rhel-9-baseos-eus-rhui-rpms
linux-firmware.noarch                                                                                        20230310-138.el9_2                                                                               rhel-9-baseos-eus-rhui-rpms
linux-firmware-whence.noarch                                                                                 20230310-138.el9_2                                                                               rhel-9-baseos-eus-rhui-rpms
microcode_ctl.noarch                                                                                         4:20220809-2.20231009.1.el9_2                                                                    rhel-9-baseos-eus-rhui-rpms
ncurses.x86_64                                                                                               6.2-8.20210508.el9_2.1                                                                           rhel-9-baseos-eus-rhui-rpms
ncurses-base.noarch                                                                                          6.2-8.20210508.el9_2.1                                                                           rhel-9-baseos-eus-rhui-rpms
ncurses-c++-libs.x86_64                                                                                      6.2-8.20210508.el9_2.1                                                                           rhel-9-appstream-eus-rhui-rpms
ncurses-libs.x86_64                                                                                          6.2-8.20210508.el9_2.1                                                                           rhel-9-baseos-eus-rhui-rpms
nspr.x86_64                                                                                                  4.35.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss.x86_64                                                                                                   3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss-softokn.x86_64                                                                                           3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss-softokn-freebl.x86_64                                                                                    3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss-sysinit.x86_64                                                                                           3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss-tools.x86_64                                                                                             3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
nss-util.x86_64                                                                                              3.90.0-4.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
openssh.x86_64                                                                                               8.7p1-30.el9_2.3                                                                                 rhel-9-baseos-eus-rhui-rpms
openssh-clients.x86_64                                                                                       8.7p1-30.el9_2.3                                                                                 rhel-9-baseos-eus-rhui-rpms
openssh-server.x86_64                                                                                        8.7p1-30.el9_2.3                                                                                 rhel-9-baseos-eus-rhui-rpms
openssl.x86_64                                                                                               1:3.0.7-18.el9_2                                                                                 rhel-9-baseos-eus-rhui-rpms
openssl-libs.x86_64                                                                                          1:3.0.7-18.el9_2                                                                                 rhel-9-baseos-eus-rhui-rpms
pixman.x86_64                                                                                                0.40.0-6.el9_2                                                                                   rhel-9-appstream-eus-rhui-rpms
python-unversioned-command.noarch                                                                            3.9.16-1.el9_2.3                                                                                 rhel-9-appstream-eus-rhui-rpms
python3.x86_64                                                                                               3.9.16-1.el9_2.3                                                                                 rhel-9-baseos-eus-rhui-rpms
python3-cloud-what.x86_64                                                                                    1.29.33.2-1.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
python3-libs.x86_64                                                                                          3.9.16-1.el9_2.3                                                                                 rhel-9-baseos-eus-rhui-rpms
python3-perf.x86_64                                                                                          5.14.0-284.52.1.el9_2                                                                            rhel-9-baseos-eus-rhui-rpms
python3-rpm.x86_64                                                                                           4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
python3-subscription-manager-rhsm.x86_64                                                                     1.29.33.2-1.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm.x86_64                                                                                                   4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm-build-libs.x86_64                                                                                        4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm-libs.x86_64                                                                                              4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm-plugin-audit.x86_64                                                                                      4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm-plugin-selinux.x86_64                                                                                    4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
rpm-plugin-systemd-inhibit.x86_64                                                                            4.16.1.3-24.el9_2                                                                                rhel-9-appstream-eus-rhui-rpms
rpm-sign-libs.x86_64                                                                                         4.16.1.3-24.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
selinux-policy.noarch                                                                                        38.1.11-2.el9_2.6                                                                                rhel-9-baseos-eus-rhui-rpms
selinux-policy-targeted.noarch                                                                               38.1.11-2.el9_2.6                                                                                rhel-9-baseos-eus-rhui-rpms
subscription-manager.x86_64                                                                                  1.29.33.2-1.el9_2                                                                                rhel-9-baseos-eus-rhui-rpms
systemd.x86_64                                                                                               252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
systemd-container.x86_64                                                                                     252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
systemd-libs.x86_64                                                                                          252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
systemd-pam.x86_64                                                                                           252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
systemd-rpm-macros.noarch                                                                                    252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
systemd-udev.x86_64                                                                                          252-14.el9_2.5                                                                                   rhel-9-baseos-eus-rhui-rpms
tzdata.noarch                                                                                                2024a-1.el9                                                                                      rhel-9-baseos-eus-rhui-rpms
パッケージの廃止
grub2-tools.x86_64                                                                                           1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
    grub2-tools.x86_64                                                                                       1:2.06-61.el9_2.1                                                                                @System
grub2-tools-efi.x86_64                                                                                       1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
    grub2-tools.x86_64                                                                                       1:2.06-61.el9_2.1                                                                                @System
grub2-tools-extra.x86_64                                                                                     1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
    grub2-tools.x86_64                                                                                       1:2.06-61.el9_2.1                                                                                @System
grub2-tools-minimal.x86_64                                                                                   1:2.06-61.el9_2.2                                                                                rhel-9-baseos-eus-rhui-rpms
    grub2-tools.x86_64                                                                                       1:2.06-61.el9_2.1                                                                                @System

 

最後に

本検証では RHEL 7.9 AMI から起動した直後の EC2 を使ってインプレースアップグレードを行ってきました。

leapp preupgrade で事前に確認した阻害要因は、結果的に3つで済みましたが、アップグレード元の RHEL バージョンがいくつであるか、どのような利用の仕方をしてきたか、によって増減することが想像できます。

プレーンな AMI を使った検証とは違い、運用中の環境では土壇場で阻害要因の解消を行わなければならないため、もし可能であるならば実際の環境の AMI を取得し、クローン環境で事前検証を行うと安心材料になるかと考えます。