Linux)に変換する方法について紹介します。環境には依存しませんが、検証のためAzure環境上で稼働するCentOS7に対してツールを実行した結果も共有します。最後に参照URLなどまとめていますので、そちらもぜひ合わせてご確認ください。EOLについてのおさらい2020年末ごろ発表されて話題にもなったCentOSのEOLですが、CentOS8はすでに2021/12/31にEOLとなっており、CentOS7も来年2024/06/30にEOL予定です。Streamというプロジェクトが開始されることになりましたが、これは従来のCentOSとは少し位置づけが異なる点に注意が必要です。RHELのリリースサイクルに後追いする形で同一リリースバージョンのソースを再構成して提供されており、RHEL同様に比較的安定して長期間運用することが可能でした。branch、つまり開発用ブランチとしての位置づけとなります。随時最新パッケージのローリングリリースが行われるために、日常的に最新パッケージへ更新できる(更新しても問題のない)ユーザー向きのOSと捉えるのがよいでしょう。従来CentOSでシステムを運用しており、一定のマイナーバージョンで入念に動作検証を行ってからデプロイしていたような利用者からすれば、リリースモデルの変更はリスク許容の点から懸念があるかもしれません。移行についてCentOSから移行をするにあたり、移行先のOS選定や移行方式についても簡単に整理します。Stream以外にも要件に応じていくつかの選択肢があります。1つには、もともとのupstreamとして位置づけられていたRHELがあげられます。本エントリではこの選択肢に基づき、実際にRHELへ移行する方法をこの後紹介していきます。Linuxなどのコミュニティ系Linuxや、RHEL系以外でもUbuntu/Debianなどがあります。単純移行とはなりませんが、これを機にアプリケーションをコンテナ化してdocker/k8sなどのコンテナ環境へ移行するといった案も考えられます。移行の方式は大きく分類して2種類あり、1つは環境の再デプロイ、もう1つはツールを利用したin-place移行となります。前者の再デプロイは、手動でOS設定やパッケージ導入などを行う方式です。移行先のOSがRHEL系であればOS構成での共通点も多いため、比較的容易に再構成ができると言えます。移行元OSがAnsible等で自動的に構成されていれば、手順の多くがAnsibleに委任できるため、この方法でも十分合理的です。後者の、ツールの支援を活用したin-place移行についても考えていきます。移行先OSがRHEL系であれば、移行先OSのリポジトリやそこから提供されるパッケージをダウンロード・構成してkernelやgrub構成を切り替えて新しいOSに移行する、というのがツールを用いたin-place移行方式となります。Linux、そしてRHELなどでそれぞれ移行ツールが提供されています。本エントリでも、RHELにin-place移行を実行するツール"convert2rhel"を利用するお話をしていきます。Hatが提供するOS移行ツールで、移行元の稼働中OSにツールをダウンロードして実行することで、RHEL用リポジトリへの切り替え、パッケージダウンロード、kernel/grub再構成を経て、最終的にはin-placeで(OSを稼働させたままで)RHELに変換が行われます。Linuxにも適用できます。個人的に興味があったのでconvert2rhelパッケージの中のファイル構成を軽く見てみたのですが、主にpythonプログラムで構成されており、内部的にrpmモジュールなどを利用したりしているようでした。後述もしますが、このツールで変換されないものも存在しますので注意してください。partyパッケージやユーザが配置・作成したファイルやディレクトリはツールでの変換対象とはならずにskipされます。これはツール実行中にも表示されてskipすることの同意を求められます。これらについては、必ずしも移行先OSでも動作が保証されるとは限りませんので、移行後のテストはしっかり行う必要があるでしょう。以下では実際にconvert2rhelツールを使ってCentOSをRHELに変換する手順を紹介します。現状CentOS8はEOLになっているため、CentOS7.9をAzure上に展開しておいて、これをRHEL7.9に移行したいと思います。いくつか重要な前提条件をまとめておきます。詳細はconvert2rhelツールのドキュメントも合わせて参照ください。移行元OSのマイナーバージョンは固定で、CentOSは7.9もしくは8.5のみが対象インターネットへの接続環境(ツール本体およびリポジトリからパッケージをダウンロードするため)RHELサブスクリプション最後のRHELサブスクリプションの必要性について少し補足します。移行先のOSがRHELの場合、当然ですがRHELのサブスクリプションが必要となります。convert2rhelツールの実行時にこのサブスクリプション情報を入力することになります。Subscriptionが利用可能ですので、事前に準備しておきましょう。Subscriptionについてはこちらのブログがよくまとまっているので一読をおすすめします。後は、言わずもがなですが、システムのバックアップはきちんと取得しておきましょう。転ばぬ先の杖、ですね。今回はAzure上の以下の環境で検証を行いました。convert2rhelはAzure以外でも実行可能ですが、Azure環境で実行した場合に固有の注意点もありますので後述したいと思います。記録のため、実行前のOS/kernelのバージョン情報を確認しておきます。VMを更新するconvert2rhelでは移行元のCentOSバージョンが7.9あるいは8.5である必要があります。updateおよびrebootを実行してください。rebootにより3.10.0-1160.102.1の最新バージョンに更新されています。GPGキーをインストールします。installでツールをインストールしましょう。ツールの実行前に移行後のRHELサブスクリプションの情報をini設定ファイルに構成しておきます。(ツール実行時にオプションで情報を渡すことも可能ですが、iniファイルに記載する方がより安全でしょう。/etc/convert2rhel.iniiniファイルにサブスクリプションマネージャの情報を記載しておきます。アカウントに応じて以下2種類のうち、いずれかの記載をしておきます。Hatアカウント情報を記載する場合の例です。どちらかの方法で記載すればOKです。convert2rhelツールの実行前診断(analyze)移行を実行に移す前に変換前分析をすることができます。RHELに変換できるかどうかを判断するためテストが実行されて、分析レポートが出力されます。これを確認することで事前に移行が失敗する要因をチェックすることが可能です。convert2rhelツールの実行ここまで準備ができたら、いよいよツールを実行します。3.のようにiniファイルにサブスクリプションマネージャの情報を記載せずに、ここで直接オプションに指定する方法も可能です。-h"でオプション情報を確認してください。convert2rhel途中で何度かユーザ確認が必要となりますので、適宜入力をしてください。ツール実行時のログは"/var/log/convert2rhel/convert2rhel.log"ファイルに出力されており、別途確認することが可能です。以下はツール実行開始直後にデータ収集に関する承諾について聞かれたものです。入力して継続しています。partyパッケージのskipに関する警告が表示されます。これは、Azure環境ではいくつかの管理用エージェントが最初からインストールされているためです。partyパッケージは変換の対象外(CentOSからもRHELからも提供されないパッケージですので当然ですが)となります。押して変換作業を続行します。[y/n]:変換作業が最終的に完了すると以下のような画面となります。needed.指示に従って一度OSをrebootします。rebootOS起動後に、redhat-releaseファイルの内容を確認してみます。RHEL7.9になっていることが確認できました。興味があれば、この他に各種パッケージについてもRHEL用のものが導入されていることをyumコマンドで確認してもよいでしょう。AzureのライセンスモデルをBYOSからPAYGに変更する(option)この手順はAzure固有です。Go)となりますが、ゲストOSがWindowsやRHELなどの場合にそのライセンス料についてもVMの料金に付加してPAYGで支払うことが可能です。Subscription)での稼働を前提としています。Azureにおいてはこのライセンスモデル選択はVMデプロイ時あるいはデプロイ後にも変更が可能です。今回は最終的にRHELのサブスクリプション料金についても従量課金モデルに含めるようにしたいと思います。このため、公式ドキュメントに記載の手順に従って、BYOSからPAYGモデルへの変更を実施していきます。Extension)の導入が必要となります。以下の手順でAHBForRHEL拡張機能を仮想マシンに導入します。ここで実行するコマンドはRHELではなく仮想マシン自体を操作しますので、RHEL上ではなく外部から実行する点に注意してください。Shellで実行する方が簡単ですのでおすすめです。AHBForRHEL次にライセンスモデルを変更します。ライセンスモデルの選択はこちらのドキュメントを参考にしてください。以下では例として、ベースリポジトリを表す"RHEL_BASE"を指定しています。RHEL_BASEライセンスモデル変更後、しばらくすると(手元の環境では5分程度)/etc/yum.repos.d/ディレクトリにリポジトリ情報が自動で追加されていることが確認できました。PAYGイメージ用に提供されるリポジトリを指すものです。CentOSレポジトリの無効化RHEL切り替え後はCentOSリポジトリは不要のため、無効化しておきます。Wave(旧OpenLogic)のCentOSの例ですが、実際にはyum.repos.dディレクトリ配下のrepoファイルの内容を参照しながら適宜repo_idを引数に指定してください。まとめCentOSのEOLに際して、RHELへのin-place移行ができる"convert2rhel"ツールについて紹介しました。Azure環境の場合は、RHELのBYOS/PAYGライセンスモデルについても留意しましょう。以下の参考情報も確認ください。EOLで困っている方に本エントリの内容が少しでも参考になれば幸いです。