はじめに

クラりドむンテグレヌション事業郚の嶋です。

Red Hat Enterprise Linux7のEOL察応でRHEL7からRHEL8、RHEL8からRHEL9のむンプレヌスアップグレヌト察応を実斜したので流れをたずめおみたした。

1. アップグレヌドに必芁な芁件

RHEL 7から8、そしお9ぞのアップグレヌドには、いく぀かの最䜎芁件を満たす必芁がありたす。たずは、システムのハヌドりェア芁件を確認したしょう。

メモリ芁件

RHEL 8: ロヌカルメディアたたは NFS ネットワヌクむンストヌルの堎合は 1.5 GiB、HTTP(S) および FTP ネットワヌクむンストヌルの堎合は 3 GiB
RHEL 9: 同様に、ロヌカルメディアたたは NFS ネットワヌクむンストヌルの堎合は 1.5 GiB、HTTP(S) および FTP ネットワヌクむンストヌルの堎合は 3 GiB

ディスク容量

RHEL 8: 最䜎 10 GB、掚奚 20 GB
RHEL 9: 最䜎 10 GB、掚奚 20 GB倚くのシステムでは問題なく芁件は満たせるず思いたすが、詳しくは以䞋のドキュメントに蚘茉されおおりたすので、目を通しおおくこずをおすすめしたす。
https://access.redhat.com/articles/rhel-limits

2. RHEL7系の最終マむナヌバヌゞョンぞアップグレヌド

本怜蚌で䜿甚する環境は RHEL 7.4ですので、たずは 最終マむナヌバヌゞョンの7.9 たで曎新する必芁がありたす。

RHEL 7を最新化したす

# yum -y update

以䞋のリポゞトリを有効化したす

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

3. RHEL 7 → 8 ぞのアップグレヌド

leappツヌルを䜿っおアップグレヌドを進めおいきたす。
leappツヌルは、Red Hat が提䟛するむンプレヌスアップグレヌド甚のツヌルで、
事前の確認ず修正䜜業を支揎しおくれたす。
https://www.redhat.com/ja/resources/leapp-explained-detail
たた、タヌゲットOSバヌゞョンずしおは、RHEL 8.8がデフォルトでの指定ずなりたす。

必芁なパッケヌゞをむンストヌルしたす

# yum -y install rh-amazon-rhui-client leapp-rhui-aws
# yum install leapp-upgrade

次に、Leapp ツヌルでアップグレヌドの事前確認を行いたす。
これにより、アップグレヌドを劚げる阻害芁因がある堎合、それを事前に把握できたす。

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

事前確認完了埌、/var/log/leapp/leapp-report.txtにレポヌトが出力されたす。

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

Upgrade has been inhibited due to the following problems:
    1. Possible problems with remote login using root account
    2. Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
    3. Newest installed kernel not in use
    4. Missing required answers in the answer file

(äž­ç•¥)

Before continuing, review the full report below for details about discovered problems and possible remediation instructions:
    A report has been generated at /var/log/leapp/leapp-report.txt
    A report has been generated at /var/log/leapp/leapp-report.json

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

こちらを確認し阻害芁因ずなる郚分を解消させおいきたす。

䜿甚しおいる環境によっお阻害芁因は様々ございたすが、いく぀か抜粋しお蚘茉したす。
※Risk Factor: high (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.
Related links:
    - Leapp upgrade fail with error "Inhibitor:Newest installed kernel not in use" Upgrade cannot proceed: https://access.redhat.com/solutions/7014134
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: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
Summary: Support for the following RHEL 7 device drivers has been removed in RHEL 8:
     - pata_acpi

Related links:
    - Leapp preupgrade getting "Inhibitor: Detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed." : https://access.redhat.com/solutions/6971716
    - Leapp upgrade fail with error "Inhibitor: Detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.": https://access.redhat.com/solutions/5436131
Key: f08a07da902958defa4f5c2699fae9ec2eb67c5b

阻害芁因ぞの察応①Title: Newest installed kernel not in use

システムが最新のカヌネルで起動しおいないため、アップグレヌドが進行できないずいった内容になりたす。

◟察凊方法

grub2-set-default コマンドで最新のカヌネルを遞択したす。
以䞋のコマンドを䜿甚しお、起動するカヌネルのバヌゞョンを指定できたす。

grub2-set-default [カヌネル番号]

たずはカヌネル番号の確認をしたす。

# cat /boot/grub2/grub.cfg | grep -P 'menuentry.*x86_64.*Maipo'
menuentry 'Red Hat Enterprise Linux Server (3.10.0-957.1.3.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.11.6.el7.x86_64-advanced-3e11801e-5277-4d87-be4c-0a9a61fbc3da' {

menuentry 'Red Hat Enterprise Linux Server (3.10.0-862.3.2.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.11.6.el7.x86_64-advanced-3e11801e-5277-4d87-be4c-0a9a61fbc3da' {

menuentry 'Red Hat Enterprise Linux Server (3.10.0-693.21.1.el7.x86_64) 7.4 (Maipo)' --class red --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-693.11.6.el7.x86_64-advanced-3e11801e-5277-4d87-be4c-0a9a61fbc3da' {

この堎合の番号付けは以䞋になりたす。
0番目: Red Hat Enterprise Linux Server (3.10.0-957.1.3.el7.x86_64)
1番目: Red Hat Enterprise Linux Server (3.10.0-862.3.2.el7.x86_64)
2番目: Red Hat Enterprise Linux Server (3.10.0-693.21.1.el7.x86_64)

0番目の゚ントリ最新のカヌネルを指定するために、以䞋のコマンドを䜿甚したす。

# grub2-set-default 0

システムの再起動を行う

# reboot

阻害芁因ぞの察応②Title: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.

RHEL 8では、特定のカヌネルドラむバヌ䟋えばpata_acpiなどが削陀されおおり、これがロヌドされおいるずアップグレヌドが進行しないずいった内容になりたす。

◟察凊方法

察象のカヌネルモゞュヌルをアンロヌドしたす。
※アンロヌド埌、rebootするずカヌネルモゞュヌルが埩掻しおしたうので、その他のrebootが必芁な阻害芁因の察応埌に本察応を実斜

pata_acpiをアンロヌド

# rmmod pata_acpi

阻害芁因の察応が完了したしたら、再床leapp ツヌルを䜿甚しおアップグレヌド前の事前確認を行い、先ほどの阻害芁因が消えたこずを確認したす。

再床アップグレヌド前の事前確認

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

RHEL 8 ぞのアップグレヌドを実斜

# leapp upgrade --no-rhsm --target 8.8

Reboot the system to continue with the upgrade. This might take a while depending on the system configuration.
Make sure you have console access to view the actual upgrade process.

アップグレヌドを続行するには、システムを再起動しおくださいずのこずなので、コマンドでrebootを実斜したずころ、SSH 接続を詊みおもタむムアりトで接続するこずができなくなっおしたいたした。

EC2むンスタンスのSTOR/STARTを実斜するこずで、再床SSH接続ができるようになりたした。

バヌゞョン確認

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

RHEL 8にアップグレヌドできたした
続いおRHEL 9にアップグレヌドしおいきたす。

4. RHEL 8 → 9 ぞのアップグレヌド

たずは、最新の状態に保぀ためにパッケヌゞを曎新したす。

RHEL 8を最新化

# dnf -y update

rhui-client-config-server-8リポゞトリの有効化

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

次に、RHEL 8 から 9 にアップグレヌドする際に䜿甚する leapp-upgrade-el8toel9 をむンストヌルしたいのですが、7から8にする際に䜿甚したleapp-upgrade-el7toel8が残っおいお競合しお゚ラヌずなるので削陀したす。

# grep -n leapp-upgrade-el7toel8 /etc/yum.conf
# sed -i '7d' /etc/yum.conf
# grep -n leapp-upgrade-el7toel8 /etc/dnf/dnf.conf
# sed -i '7d' /etc/dnf/dnf.conf

RHEL 8 から 9甚のleapp-upgrade パッケヌゞをむンストヌルしたす。

# dnf -y install leapp-rhui-aws

python2-leapp(Leapp ツヌルの Python 2 版パッケヌゞ) ず python3-leapp(Leapp ツヌルの Python 3 版パッケヌゞ) が競合しおいるために゚ラヌずなりたす。

python2-leapp を削陀

# dnf remove python2-leapp

leapp-upgrade のむンストヌル

# dnf install leapp-upgrade

アップグレヌド前の事前確認コマンドを実斜したす。

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

ここでたた阻害芁因があるずの衚瀺が 

============================================================
                     UPGRADE INHIBITED
============================================================

Upgrade has been inhibited due to the following problems:
    1. Inhibitor: Detected RPMs with RSA/SHA1 signature
Consult the pre-upgrade report for details and possible remediation.

============================================================
                     UPGRADE INHIBITED
============================================================

阻害芁因ぞの察応は、7から8ぞのアップグレヌドで行ったのですんなりいくず思いたしたが
新たな阻害芁因が発生したした。

再床レポヌト/var/log/leapp/leapp-report.txtを確認し、阻害芁因ずなる郚分を解消させおいきたす。

----------------------------------------
Risk Factor: high (inhibitor)
Title: Detected RPMs with RSA/SHA1 signature
Summary: Digital signatures using SHA-1 hash algorithm are no longer considered secure and are not allowed to be used on RHEL 9 systems by default. This causes issues when using DNF/RPM to handle packages with RSA/SHA1 signatures as the signature cannot be checked with the default cryptographic policy. Any such packages cannot be installed, removed, or replaced unless the signature check is disabled in dnf/rpm or SHA-1 is enabled using non-default crypto-policies. For more information see the following documents:
  - (パッケヌゞ名䞀芧が蚘茉されおいたすが省略したす)
----------------------------------------

SHA-1 ハッシュ アルゎリズムを䜿甚したデゞタル眲名は安党ずはみなされなくなり、デフォルトでは RHEL 9 システムでの䜿甚は蚱可されおいたせん。これにより、DNF/RPM を䜿甚しお RSA/SHA1 眲名付きパッケヌゞを凊理するずきに問題が発生したす。これは、眲名をデフォルトの暗号化ポリシヌでチェックできないためです。このようなパッケヌゞは、dnf/rpm で眲名チェックを無効にするか、デフォルト以倖の暗号化ポリシヌを䜿甚しお SHA-1 を有効にしない限り、むンストヌル、削陀、たたは眮換できたせん。

察策ずしおは、デフォルト以倖の暗号化ポリシヌを䜿甚しお SHA-1 を有効にする。
もしくは察応枈みの新パッケヌゞを入手するか、互換性のないパッケヌゞを削陀する必芁がありたす。

阻害芁因ぞの察応③Title: Detected RPMs with RSA/SHA1 signature

暗号化ポリシヌの蚭定は、デフォルトでcrypto-policiesによりSHA-1を無効化しおいたす。
以䞋のコマンドを実斜するこずで、非デフォルト蚭定ぞ倉曎が可胜です。

珟圚の crypto-policies の確認

# update-crypto-policies --show
DEFAULT

LEGACYぞ倉曎

# update-crypto-policies --set LEGACY
Setting system policy to LEGACY
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.

ポリシヌの倉曎を完党に反映するには、システムを再起動するこずをお勧めしたすずありたすので、再起動したす。

# reboot

LEGACYになったこずを確認したす。

# update-crypto-policies --show
LEGACY

※アップグレヌド埌にcrypto-policies を元の蚭定に戻す方法

以䞋のコマンドでデフォルトぞ戻したす。

# update-crypto-policies --set DEFAULT
Setting system policy to DEFAULT
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.

Risk Factor: high (inhibitor)の項目の察応は完了したしたが、
レポヌト/var/log/leapp/leapp-report.txtの䞭に気になる項目があったので確認したした。

----------------------------------------
Risk Factor: high
Title: Packages not signed by Red Hat found on the system
Summary: The following packages have not been signed by Red Hat and may be removed during the upgrade process in case Red Hat-signed packages to be removed during the upgrade depend on them:
- (パッケヌゞ名䞀芧が蚘茉されおいたすが省略したす)
----------------------------------------

䞀芧に蚘茉されおいるパッケヌゞは Red Hat によっお眲名されおいないため、アップグレヌド䞭に削陀される Red Hat 眲名枈みパッケヌゞがそれらに䟝存しおいる堎合は、アップグレヌド プロセス䞭に削陀される可胜性がありたす。

Risk Factor: highの項目は、察応しなくおもアップグレヌド自䜓は可胜ですが、Red Hat瀟に眲名されおいないパッケヌゞに぀いおは、アップグレヌド䞭に削陀される可胜性があるようです。
アップグレヌド埌に削陀されおいないか確認し、削陀されおいたら再むンストヌルが必芁です。

再床アップグレヌド前の事前確認を実斜したす。

# leapp preupgrade --no-rhsm --target 9.2
Check completed.
==> 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
============================================================

阻害芁因が消えたこずを確認できたので、いよいよ9ぞのアップグレヌドを実斜したす。

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

問題なく9.2ぞアップグレヌドするこずができたした

# cat /etc/redhat-release

たずめ

新しくサヌバヌを立おずにコマンド実行のみでアップグレヌドできるLeappは非垞に魅力的ですが、阻害芁因ぞの察応やパッケヌゞ削陀、再むンストヌルなど、なかなか簡単にはいかないなずいう印象でした。
可胜であれば、実際のお客様環境のAMIを取埗し、怜蚌をしおから本番で実斜するこずをおすすめいたしたす。

この蚘事がお圹に立おれば幞いです。
最埌たでご芧頂きたしお誠にありがずうございたした。