LabLinux

CentOS 7からAlmaLinux 10へ移行する手順【ELevate/leappで3段階アップグレード】

スポンサーラベル
CentOS 7からAlmaLinux 10への移行は3段階。CentOS 7、AlmaLinux 8、9、10と順にleappでアップグレードする Lab

CentOS 7はすでにサポートが終了しており、セキュリティ更新が提供されません。とはいえ、社内で長く動いているサーバーをまるごと作り直すのは簡単ではなく、「動いているものをそのまま新しいOSに上げたい」という場面は多いはずです。本記事では、AlmaLinuxが提供するELevate(leapp)を使って、CentOS 7をAlmaLinux 10までインプレースアップグレードする手順を解説します。よく混同されるalmalinux-deployとの違いにも触れます。

1. なぜAlmaLinuxへ移行するのか

1.1 CentOS 7を使い続けるリスク

CentOS 7はサポートが終了しているため、新たに脆弱性が見つかっても修正パッケージは提供されません。インターネットに面したサーバーはもちろん、社内サーバーであっても、監査やセキュリティ基準の観点で「サポート切れOSの継続利用」は指摘対象になります。

1.2 移行先としてのAlmaLinux

RHEL系の移行先としてはAlmaLinuxとRocky Linuxが代表的ですが、企業での採用はAlmaLinuxが優勢です。AlmaLinux OS Foundationという非営利財団による運営、OpenELAへの参加によるソース確保、そしてサイバートラスト社のMIRACLE LINUXとの統合により「無償ならAlmaLinux、商用サポートが必要ならMIRACLE LINUX」という選択肢が成立していることが理由として挙げられます。

2. 移行方式を選ぶ:ELevateとalmalinux-deployの違い

ここが最初のつまずきポイントです。AlmaLinuxへの移行ツールは2種類あり、用途がまったく違います

ツール用途CentOS 7
almalinux-deploy同じメジャーバージョン間の乗り換え(例:Rocky Linux 9 → AlmaLinux 9)非対応
ELevate(leappメジャーバージョンをまたぐインプレースアップグレード対応

almalinux-deployがサポートするのはCentOS Linux 8.4以降、CentOS Stream 8/9/10、Rocky Linux 8/9/10、Oracle Linux 8/9/10などで、CentOS 7は対象外です。「CentOS 7にalmalinux-deployを実行する」という手順を紹介している記事も見かけますが、これは誤りなので注意してください。

CentOS 7からの移行に使うのはELevateです。ELevateはRed Hatのleappユーティリティをベースに、RHEL派生ディストリビューション間のメジャーバージョンアップグレードを可能にするプロジェクトです。

そしてもう一点重要なのが、EL7からEL10へは一気に上げられないということです。AlmaLinux 10まで到達するには、次の3段階を順に実施します。

  1. CentOS 7 → AlmaLinux 8
  2. AlmaLinux 8 → AlmaLinux 9
  3. AlmaLinux 9 → AlmaLinux 10
CentOS 7からAlmaLinux 10への移行は3段階。CentOS 7、AlmaLinux 8、9、10と順にleappでアップグレードする

3. 移行前に必ず準備すること

インプレースアップグレードは失敗すると起動しなくなる可能性がある作業です。以下は省略しないでください。

  • スナップショット/フルバックアップの取得:仮想環境ならスナップショット、物理環境ならフルバックアップを取ります。切り戻せる状態を必ず作ってから着手します。
  • 物理コンソールまたはIPMI等の確保:SSHセッションが切れると復旧できなくなります。ELevate公式も「接続が中断されないコンソールセッションから実行すること」と明記しています。
  • 検証環境での事前実行:同じ構成のクローンを作り、本番前に一度通してください。導入しているミドルウェアによって発生するinhibitor(アップグレード阻害要因)は環境ごとに異なります。
  • サードパーティリポジトリの棚卸し:EPEL、Docker CE、nginx、PostgreSQL、MariaDBなどはELevateが対応していますが、独自リポジトリを使っている場合は個別確認が必要です。

4. ステージ1:CentOS 7からAlmaLinux 8へ

各ステージでやることは共通しています。ELevateのリポジトリを追加してleappを入れ、leapp preupgradeで指摘を洗い出し、それを解消してからleapp upgradeを実行する、という流れです。

leappの実行フロー。リポジトリ追加、preupgrade、レポート確認、inhibitorがあれば対処してpreupgradeからやり直し、なければupgradeと再起動、最後に残存パッケージを削除する

4.1 CentOS 7リポジトリの差し替え

CentOS 7の公式リポジトリはすでに停止しているため、そのままではyumが動きません。AlmaLinuxが提供するミラーに差し替えてから、いったん最新化して再起動します。

# 停止済みのCentOS 7リポジトリをAlmaLinux提供のミラーに差し替える
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://el7.repo.almalinux.org/centos/CentOS-Base.repo

# 現行バージョン内で最新化してから再起動する
sudo yum upgrade -y
sudo reboot

4.2 leappのインストール

ELevateのリポジトリを追加し、leapp本体とAlmaLinux用の移行データを入れます。rpm --eval %rhelで現在のメジャーバージョンが埋まるので、3段階すべてで同じコマンドが使えます。

# ELevateリポジトリを追加(%rhel には現在のメジャーバージョンが入る)
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm

# leapp本体とAlmaLinux用の移行データを導入
sudo yum install -y leapp-upgrade leapp-data-almalinux

4.3 事前チェックと修正

leapp preupgradeで、アップグレードを阻害する要因を洗い出します。初回は失敗するのが普通です。出力された内容を/var/log/leapp/leapp-report.txtで確認し、1つずつ潰していきます。

# アップグレード可否を事前チェックする(この時点では何も変更されない)
sudo leapp preupgrade

# 指摘内容の詳細を確認する
sudo cat /var/log/leapp/leapp-report.txt

CentOS 7でよく出る指摘への対処は次のとおりです。root SSHログインの許可は移行完了後に必ず元へ戻してください。

# 非対応カーネルモジュールをアンロードする
sudo rmmod pata_acpi

# アップグレード中の復旧手段としてrootログインを一時的に許可する
echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config

# pam_pkcs11モジュール削除の確認に回答する
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

4.4 アップグレードの実行と確認

preupgradeが通ったら本実行です。再起動後、システムは「ELevate-Upgrade-Initramfs」で自動的に起動し、パッケージの入れ替えが進みます。完了までは環境によっては数十分かかります。

# アップグレードを実行し、再起動して適用する
sudo leapp upgrade
sudo reboot

起動してきたら、バージョンとel7パッケージの残骸を確認します。

# AlmaLinux 8になっているか確認する
cat /etc/redhat-release

# 取り残されたel7パッケージがないか確認する
rpm -qa | grep el7

5. ステージ2:AlmaLinux 8からAlmaLinux 9へ

EL7から上げてきた場合のみ、次の段階に進む前に後片付けが必要です。/etc/yum.conf/etc/dnf/dnf.confexclude=行に、elevateやleapp関連の記述が残っていたら削除します。

そのうえで、残っているel7パッケージを削除し、leappの作業ディレクトリをクリアします。

# 残存しているel7パッケージを確認して個別に削除する
rpm -qa | grep el7
sudo rpm -e --nodeps <パッケージ名>

# キャッシュとleappの作業ディレクトリをクリアする
sudo dnf clean all
sudo rm -fr /root/tmp_leapp_py3

あとはステージ1と同じ流れです。leappを導入し、preupgradeで指摘を潰してからupgradeします。

sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
sudo yum install -y leapp-upgrade leapp-data-almalinux
sudo leapp preupgrade

RHEL 8ベースのシステムでよく出る指摘への対処は次の2つです。

# firewalldの非推奨設定を無効化する
sudo sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf

# VDOチェックの確認に回答する
sudo leapp answer --section check_vdo.confirm=True
sudo leapp upgrade
sudo reboot

6. ステージ3:AlmaLinux 9からAlmaLinux 10へ

ステージ2と同様に、まずel8パッケージの後片付けを行います。

# 残存しているel8パッケージを確認して削除する
rpm -qa | grep el8
sudo rpm -e --nodeps <パッケージ名>
sudo dnf clean all
sudo rm -fr /root/tmp_leapp_py3

以降の手順は同じです。EL9からEL10へのアップグレードは比較的スムーズに進むとされています。

sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
sudo yum install -y leapp-upgrade leapp-data-almalinux
sudo leapp preupgrade
sudo leapp upgrade
sudo reboot

7. つまずきやすいポイントと対処

CentOS 7から段階的に上げてきた環境では、ステージ3で以下の問題が出ることがあります。

「Deprecated DHCP plugin configured」でブロックされる場合は、NetworkManagerの設定をdhclientから移行します。

# 接続設定を新形式へ移行し、DHCPタイムアウトを設定する
sudo nmcli conn migrate
sudo nmcli connection modify <接続名> ipv4.dhcp-timeout 30 ipv6.dhcp-timeout 30

# 非推奨のdhclientプラグイン指定を削除する
sudo sed -i'.bak' 's/^dhcp=dhclient//g' /usr/lib/NetworkManager/conf.d/10-dhcp-dhclient.conf
sudo systemctl restart NetworkManager

dracutモジュール関連のエラーが出る場合は、EL7時代の設定ファイルが残っていることが原因です。

# 旧世代のネットワーク設定を削除する
sudo rm -f /etc/dracut.conf.d/50-network-legacy.conf

また、シリアルコンソールで作業している場合は、/etc/default/grubの出力先設定を確認しておくと、再起動後に画面が見えなくなる事故を防げます。

GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0"

8. まとめ

CentOS 7からAlmaLinux 10への移行は、almalinux-deployではなくELevate(leapp)で3段階というのが要点です。

  • almalinux-deployはCentOS 7非対応。使うのはELevate
  • EL7 → EL8 → EL9 → EL10と段階を踏む
  • 各段階でleapp preupgradeが失敗するのは想定内。レポートを見て潰す
  • 段階の合間に、前バージョンの残存パッケージを削除する
  • バックアップと中断されないコンソールは必須

なお、本記事の手順はAlmaLinux公式Wikiの「ELevating CentOS7 to AlmaLinux 10」に基づいています。実際に発生するinhibitorは導入しているミドルウェアによって変わるため、必ず検証環境で一度通してから本番に適用してください

移行が完了したら、新しい環境の整備に進みましょう。AlmaLinux上でのDocker環境構築についてはAlmaLinuxにDockerとDocker Composeをインストールする方法で、社内向けドキュメント基盤の構築についてはBookStackをAlmaLinux 9.4にインストールする手順で解説しています。サポート切れのOSを卒業し、安心して運用できる環境を整えていきましょう。

コメント

タイトルとURLをコピーしました