1. HOME
  2. パセイジ通信
  3. ひとり情シス奮闘記
  4. さらば CentOS

パセイジ通信

さらばCentOS
ひとり情シス奮闘記

さらば CentOS

情シスやっていると嗜みのひとつやふたつで触れるはずの存在である Linux。オキニのディストリビューション略してディストリ語り出したら朝まで盛り上がれますよね? ウィンドウシステムに頼らず別 PC からターミナル接続でいろいろ設定とか操作をすることに無上の喜びを覚え、しまいには「コマンドラインの狼」を自称したりしますよね? え、してない? おっかしいなあ。

Linux にはそれこそ星の数ほど多くのディストリビューションがあり、趣味の範囲でちょっと動かすだけならディストリは何でもよいのですが、業務で動かすとなると、かつては CentOS が鉄板にしてド定番でした。

ご多分に漏れず弊社にもあった CentOS サーバー機。ひとつは FTP サーバー、CentOS 6 でした。ラックマウントに収納するラック式の本格的なサーバーでしたが、これはサーバー一斉入れ替えのときに閉鎖となりました。弊社と違って大企業のクライアントでは、かなり前から FTP によるデータの送受信をブロックしていましたし、ファイル交換サービスも数多く出回っており、FTP というのは今では絶滅危惧種も同然というのが現実です。

もうひとつ、CentOS 7 が動くサーバーがありました。既製品として売られているサーバーではなく、その辺に転がっていた放出 PC とパーツの組み合わせで組んだようないわば自作マシンです。Knowledge というオープンソースの Wiki スタイルの情報共有システムを動かしていました。業務のちょっとしたノウハウだけでなく、会社全般のちょっとしたメモみたいな、「みんなが知っておくとよい」話をナレッジとしてせっせと投稿していました。

Knowledge – Free knowledge base system
日本発のオープンソースなナレッジベース。
公式サイト

かつては「お前はカイシャに住んでいるのか?」と揶揄されるほど残業三昧だったワタシは、必然的に最終退出者になることが多く、否が応でも戸締りのお作法をマスターしていました。自分以外の社員さんが最終退出者になるというレアケースが発生したときに、戸締りのしかたを説明しないとその社員さんが帰れないことになります (戸締りせずに帰られたら大惨事)。そういう「戸締りの手引き」なんかをストックする場としてナレッジベースを構築したのでした。

CentOS の上の共有知

その CentOS ですが、開発元がリリースを停止し、サポートも 2024 年 6 月末に打ち切りとなりました。それでナレッジ CentOS 機が動かなくなっているわけではありませんが、サポート切れの OS のままいつまでも放置というわけにはいきません。ナレッジベースも含め、移行の検討を迫られ……ていたはずですが、しばらく悶々と無為に時間を費やしていました。

あるとき、CentOS の移行ツール ELevate なるものがあると知りました。事実上の後継 OS に昇格してくれるのだとか。これならナレッジベースも延命できるぞ! ついでにこの「パセイジ通信」のネタにできるからモァベターというもんです。先頭 2 文字を「EL」と大文字にすることで、暗に Enterprise Linux を匂わせるというそのネーミングセンスにシビれます。

ELevate Your Distribution
CentOS 7から、AlmaLinux 8 や Rocky Linux などの Red Hat の系譜に連なる Linux にアップグレードしてくれるツール。
公式サイト

究極の選択……の、ようなもの

ここで問題。CentOS から乗り換えるディストリ候補のうち、CentOS の系譜につながる事実上の後継と目されるものは AlmaLinux と Rocky Linux、あとは Miracle Linux。そのどれに移行するかというのが切実な悩みです。

国産なのは興味をそそりますがいささか商用寄りすぎる印象の Miracle Linux はガッツリ商用利用のときに使うとして、フリーで使うなら AlmaLinux か Rocky Linux のどちらかです。で、どっちにするかというと、これがまるで差異がないためどちらにするかの選択の決め手がまったくないという、ひと昔前に流行った「究極の選択」なみの難問です。あたかも、コーヒーと紅茶のどちらがよいかと尋ねてどちらでもよいと言われて猛烈に困るのと同じ気分になります。

コーヒーと紅茶なら各自好みがありますからまだしも、違いがないしあったとしても何が違うのかわからないものを前にして選択するシチュエーションがあるとしたら、国内航空会社大手 2 社のどっちを選ぶかという話でしょうか、昔、初めて飛行機に乗るとき ANA と JAL のどっちにするか決めるときに困ったのとまったく同じ。そのときは昔聞いていた深夜のラジオ番組の記憶で JAL にしました。遠い地平線が消えて、深々とした夜の闇に心を休めるとき、はるか雲海の上を音もなく流れ去る気流は…… いや、ノンキに休んでいる場合ではなくてだな。ともあれ、世の中何が選択の決め手となるかわかったものではありません。

それで、話の本筋である CentOS の移行先のディストリの選定ですが、ELevate は AlmaLinux の開発によるものという、たったそれだけの理由で AlmaLinux に決めました。意味なんかないのですよ、えぇそんなのあるわけがありません。

決意の ELevate 発動

移行先ディストリが決まれば、あとは ELevate を発動して移行に踏み切るだけです。

その移行の餌食……じゃなくて、対象となる CentOS 搭載機。ずいぶん長いことほったらかしの動かしっぱなしでした。調べてみるとどうやら 2017 年の年末頃に構築したようで、よくもまあ今の今まで延々と生き続けたものです。起動後にポートを開けたり Tomcat とか PostgreSQL を起動するコマンドをひとつふたつみっつ放ったうえで Knowledge さえ起動してしまえば、あとはなーんの操作もケアも要りませんでした。触るのは 1 年に一度の計画停電のときだけー。

それでは CentOS に別れを告げましょう。そのデスクトップ画面の雄姿を見るのもコレが最後です。

CentOS 7の壁紙

別れの手順

CentOS を覗き、重要な設定を USB メモリーにバックアップする……つもりが、OS が古すぎて最新のファイルシステムに対応していないため昨今の USB メモリーをプラグアンドプレイで認識できず、かといって新しいファイルシステムに対応させることも困難という事態に直面し、初っ端から盛大に躓く。

4GB という今となってはまるで利用価値がない古い SD カードを USB カードリーダーにかまして USB メモリー代わりに使うことで解決。バックアップしたファイルを使う未来は、だぶん、ない。

CentOS 7 の伝家の宝刀 yum (パッケージ管理コマンド) が頼みの綱とするリポジトリ (インターネット上にあるプログラムの保管庫、みたいなもの) が、昔の設定のままだと参照できない (今となっては倉庫が閉鎖されている) ので、今も生きているリポジトリのアーカイブ (いわゆる過去帳) を参照するように、/etc/yum.repos.d/CentOS-Vault.repo を新規作成してイロイロ書き込む。教科書的に、下記の内容。よぉく見ると、3 つのセクションの内容は一部を除いてみんなおんなじなので、nano エディターで適宜コピペして作成。

[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/x86_64/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/x86_64/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/7.9.2009/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

念押しで yum コマンドが効いているかどうかを確認。

sudo yum clean all
sudo yum makecache

yum コマンドの切れ味が復活したのを確認できたところで、下記のコマンドを放って ELevate をインストール。ここで、移行先の OS のディストリも指定。

sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm
sudo yum install -y leapp-upgrade-almalinux leapp-data-almalinux

sudo leapp preupgrade コマンドによる移行前チェック。コマンド名が elevate ではなく leapp というのが何とも紛らわしいが、それ以前の問題として「そんなコマンドはありません」と冷たく返される。肝心の leapp が入っていないらしい。

さっき作った /etc/yum.repos.d/CentOS-Vault.repo にひとつセクションが足りなかったようで、開きなおして下記を追加。一進一退。

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
# mirrorlist は死んでいるのでコメントアウト
# mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
# 代わりにアーカイブの URL を直接指定
baseurl=https://archives.fedoraproject.org/pub/archive/epel/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

yum コマンド打ち直し。

sudo yum clean all
sudo yum install -y leapp leapp-upgrade-almalinux

晴れて sudo leapp preupgrade コマンド実行に成功。システムスキャンを走らせ、その結果を見て適宜修正するという、石橋を叩いて渡る的な実に堅実なアプローチ……なのはいいのだが、結構待たされる。missing_gpg_keyas_inhiibitor とかいう気になるメッセージが視界に入る。

Answerfile has been generated というメッセージが出たのでシステムスキャンは終了したのはわかるが、その answerfile はどこだ……探して cat コマンドで中を覗く。

$ sudo find /var -name answerfile
/var/log/leapp/answerfile
$ sudo cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]

PGP と PAM という気になるフレーズを解消するために下記コマンドふたつ放つ。

sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
sudo rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux

再度 sudo leapp preupgrade コマンドをお見舞いする。晴れて「移行してもエエよ」というお墨付きを得る。

移行してエエよという涙のお墨付き

観念して sudo leapp upgrade コマンドを放って運命のアップグレードに突入。再起動するまで相当待たされそうな様子だったので、いさぎよく放置し、しばらくその辺をプラプラする。

戻ってみると、まだ処理が終わっていない様子。一晩放置。

そして翌日。さすがに leapp upgrade は完了していたので、sudo reboot で再起動。

シャットダウンにやたら時間がかかるのでしばらく放置。戻ってみると、再起動していないし、モニターに何も映っていないので、定番の「電源ケーブルを抜いて入れ直す」に踏み切る。

ELevate-Upgrade-Initramfs が出たところで、急な打ち合わせに呼ばれて離席……アレだ、「まさかのときのスペイン宗教裁判!」みたいな。

席に戻ると、ガッツリと AlmaLinux が立ち上がっていた。あら、ずいぶん印象変わったわね?

AlmaLinux wallpaper

見捨てられたミドルウェアと見れないナレッジ

ELevate はずいぶんスムーズに移行してくれるらしいとは聞いていましたが、実際に試してみるとほぼノーストレスで実にあっけなく AlmaLinux へのお色直しが終わってしまいました。

よくよく見ると、壁紙が盛大に変わっていることを除けば以前見た記憶の中の CentOS とほぼ同じです。CentOS の頃から起動直後は有線 LAN がオフになるという謎挙動だったのですのが、その親切なのか意地悪なのかわからない動作仕様が AlmaLinux にもガッツリ継承されていました。キミ、ホントは Cent ナントカじゃないか? ええ?

とは申せど、それはあくまでも OS が変わったというだけのことで、肝心の Knowledge が動かないと CentOS 改め AlmaLinux の存在意義も価値もありません。ということで、今度もまた起動後にポートを開けたり Tomcat とか PostgreSQL を起動するコマンドをひとつふたつみっつ放ったうえで Knowledge を起動しようとしたところ、Tomcat が景気よく「404 – Not Found」エラーを吐きました。当然、Knowledge にストックされたナレッジは、同じネットワークにある他の PC から参照することはできません。

いろいろ調べた結果、PostgreSQL のバージョンが古いことが原因と判明。どうやら AlmaLinux の世代から見た場合に、その CentOS 時代の PostgreSQL が古すぎて動かないらしいのです。それで、PostgreSQL のバージョンアップを試みましたが……軽くスッタモンダした結果、どうやら PostgreSQL の更新は不可能らしいと悟りました。その原因をつまびらかにするだけの技術的理解と国語力はワタシにはありません。できんもんはできんのです。

かくして、OS の衣替えには成功しましたが、あまりにも古すぎるミドルウェア (PostgreSQL) が足かせとなって、肝心のナレッジが見えなくなった……という顛末に終わったのでした。

そして二度目のさよならを

肝心のナレッジベースとしては動作しないわけですから、運用という面では失敗もいいところです。OS だけ新しくなっても何の意味も価値もありません。ナレッジベースに依存しているかもしれない社員から熱烈に怒りの無言電話を食らうに違いありません。

普通なら途方に暮れるところですが、何を隠そう、社内に転がっている余剰 PC とパーツを整備して Ubuntu Server マシンを構築し、そちらに Knowledge を移植していたのでした。しかも、兼業情シスなりの技術的好奇心に従い、Docker に Knowledge のコンテナを突っ込んで、そちらにナレッジを移植済み。まさに「備えあればうれしいな」です。

Ubuntu Server の Docker への移植の経緯と顛末はここでは盛大に割愛しますが、2 ~ 3 週間ほど朝から晩までコマンド打ち込んでデータ移植を試みた挙句、結局データ移植には爆発的に挫折し、ナレッジを手作業で移植したというトホホな話です。ともあれ、別途 Knowledge 動作環境が動いているので、CentOS マシンの OS 移行は、成功しようが失敗しようがどっちでもよかったのでした。JAL にするか ANA にするか盛大に悩んだと見せかけて新幹線に乗ることにした、みたいなオチです。

まず OS 自体に別れを告げ、トドメにマシン自体に別れを告げるというオチです。わざわざ AlmaLinux に移行などしなくてもよかったんじゃないか……いいえ試したかったのですよ ELevate を。やってみたかったのですよ OS 移行というのを。かくして CentOS 機はお役御免、ワタシの手で静かにシャットダウンしたのでした。今までよく動いてくれたね、ありがとう。さよならは二度言う……おあとがよろしいようで、今回はここまでにしとうございます。

パセイジ通信