前回の続き
前回から続いた内容なので、5から始まる連続した段落番号をつけている。
5. 移行ツールを使う
AlmaLinuxは、almalinux-deployという移行ツールを提供している。このツールを使うと既存のディストリビューションから簡単に移行できる。なお、移行元ディストリビューションとして、CentOS 8やRHEL 8、Oracle Linux 8をサポートしている。詳しくはGitHubを見てほしい。
5.1. 移行ツールの実行手順
実行手順は以下のとおり。ただし、移行元のサーバーからインターネットにアクセスできる必要がある。
- RHEL8.3相当以上にアップデート
- 移行スクリプトのダウンロード
- 移行スクリプトの実行
- 必要に応じて、リポジトリ情報を修正
今回は、ISOイメージからインストールしたCentOS 8に加えて、AWSやAzure、Oracle CloudなどのCentOS 8でも確認する。わざわざパブリック・クラウドで確認するのは、カスタマイズされて素のCentOSと異なることが多いからだ。
なお、移行ツールを使用するときは必ず事前にバックアップすること。
5.2. 移行ツールの事前準備
利用環境は、ISOイメージからインストールしたCentOS 8.3を使用している。
- 現在のLinux OSバージョンを確認する。次のように8.3以上ならば問題ない。8.2以前のときにはアップデートが必要になる(8.2以前だとスクリプトにNGで蹴られる)。
$ cat /etc/centos-release
CentOS Linux release 8.3.2011
$ sudo dnf distro-sync -y
2.移行ツールをダウンロードする。
$ curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh
3.スクリプト(version 0.1.7)は約400行あり、おもに次のことを実行している。
- 移行元ディストリビューションのチェック
- ディストリビューション固有のパッケージ削除
- AlmaLinux固有のパッケージのインストール
- インストール済みパッケージのAlmaLinuxの置き換え
$ wc -l almalinux-deploy.sh
407 almalinux-deploy.sh
5.3. 移行ツールの実行
1.スクリプトを実行する。実行にかかる時間は、サーバー性能やインストール済みパッケージ数、ネットワーク速度などに依存する。10分から30分くらいは必要だと思ったほうがいいだろう。
sudo bash almalinux-deploy.sh
Check root privileges OK
Check Secure Boot disabled OK
Check centos-8.x86_64 is supported OK
Download RPM-GPG-KEY-AlmaLinux OK
Import RPM-GPG-KEY-AlmaLinux to RPM DB OK
Download almalinux-release package OK
Verify almalinux-release package OK
Remove centos-linux-release package OK
Remove centos-gpg-keys package OK
Remove centos-linux-repos package OK
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:almalinux-release-8.3-4.el8 ################################# [100%]
Install almalinux-release package OK
Remove centos-logos package OK
Install almalinux-logos package OK
2.インストールが終わると以下のように表示される。GitHubの記述と異なるが、スクリプトのバージョンによって変わるかもしれない。
Complete!
Run dnf distro-sync -y OK
Migration to AlmaLinux is completed
3.再起動は必須ではないが、移行の前後でkernelやglibc、opensslなどのコアパッケージのバージョンが変わっているときにはリブートする。以上で終了だ。
sudo systemctl reboot
5.4. 移行後の確認
移行が終わったら、変更箇所を確認しよう。
-
/etc/*-release
の中身は「AlmaLinux」に変更されている。
$ cat /etc/almalinux-release
AlmaLinux release 8.3 (Purple Manul)
$ cat /etc/centos-release
AlmaLinux release 8.3 (Purple Manul)
2.リポジトリもすべてAlmaLinuxに変更されている。
$ dnf repolist
repo id repo name
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
extras AlmaLinux 8 - Extras
powertools AlmaLinux 8 - PowerTools
$ dnf repolist all
repo id repo name status
appstream AlmaLinux 8 - AppStream enabled
appstream-debuginfo AlmaLinux 8 - AppStream debuginfo disabled
appstream-source AlmaLinux 8 - AppStream Source disabled
baseos AlmaLinux 8 - BaseOS enabled
baseos-debuginfo AlmaLinux 8 - BaseOS debuginfo disabled
baseos-source AlmaLinux 8 - BaseOS Source disabled
extras AlmaLinux 8 - Extras enabled
extras-debuginfo AlmaLinux 8 - Extras debuginfo disabled
extras-source AlmaLinux 8 - Extras Source disabled
ha AlmaLinux 8 - HighAvailability disabled
ha-debuginfo AlmaLinux 8 - HighAvailability debuginfo disabled
ha-source AlmaLinux 8 - HighAvailability Source disabled
powertools AlmaLinux 8 - PowerTools enabled
powertools-debuginfo AlmaLinux 8 - PowerTools debuginfo disabled
powertools-source AlmaLinux 8 - PowerTools Source disabled
$ ls /etc/yum.repos.d/
almalinux-ha.repo almalinux.repo
5.5. パブリック・クラウドでの移行
次に、AWSやAzure、Oracle Cloudなどのパブリック・クラウドで提供しているCentOS 8で実行した結果を紹介する。なお、以下の2点を確認している。
- 移行ツールで移行できたか
- 移行後に修正すべき箇所はあるか
5.5.1. AWSのCentOS 8
AWSには、CentOS 8のAMIが数多く登録されている。今回はCentOS公式のAMIを使用した(CentOS Official AMI情報)。
key | value |
---|---|
Region | ap-northeast-1 |
AMI Name | CentOS 8.3.2011 x86_64 |
AMI ID | ami-0d9bf167cb68ac889 |
移行結果
何の問題も無く移行が完了した。
- 移行ツールで移行できたか:できた
- 移行後に修正すべき箇所はあるか:ない
おまけ
移行後に既存のRPMパッケージが残っているか確認する。
- 使われているVenderタグの一覧を表示する。この例ではAlmaLinuxとCloudLinux以外に、CentOSと(none)がある。
$ rpm -qa --qf '%{VENDOR}\n' | sort | uniq
AlmaLinux
CentOS
CloudLinux
(none)
2.VenderタグがAlmaLinuxとCloudLinux以外のパッケージを表示する。これを見ると古いカーネルとGPG KEYだけだ。つまり現在使用しているパッケージはすべてAlmaLinuxに置き換えられている。
$ rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{VENDOR}\n' | grep -v AlmaLinux | grep -v CloudLinux
gpg-pubkey-3abb34f8-5ffd890e (none)
kernel-core-4.18.0-240.1.1.el8_3 CentOS
kernel-modules-4.18.0-240.1.1.el8_3 CentOS
kernel-4.18.0-240.1.1.el8_3 CentOS
5.5.2. AzureのCentOS 8
Azureも、AWSと同様に数多くのCentOS 8イメージが公開されている。そのためOpenLogicの仮想マシンイメージを使用した。
移行結果
問題なく移行できたがリポジトリ情報を修正する必要があった。
- 移行ツールで移行できたか:できた
- 移行後に修正すべき箇所はあるか:ある
問題箇所
移行後にリポジトリを表示すると、OpenLogicのリポジトリが存在するため以下のエラーが発生した。
$ sudo dnf repolist
errors during downloading metadata for repository 'AppStream-openlogic':
- Status code: 404 for http://olcentgbl.trafficmanager.net/almalinux/8/AppStream/x86_64/os/repodata/repomd.xml (IP: 138.91.1.67)
Error: Failed to download metadata for repo 'AppStream-openlogic': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
CentOS-8 - Base (OpenLogic)
$ sudo dnf repolist
repo id repo name
AppStream-openlogic CentOS-8 - AppStream (OpenLogic)
BaseOS-openlogic CentOS-8 - Base (OpenLogic)
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
extras AlmaLinux 8 - Extras
extras-openlogic CentOS-8 - Extras (OpenLogic)
openlogic CentOS-8 - OpenLogic packages for x86_64
powertools AlmaLinux 8 - PowerTools
OpenLogicのリポジトリを無効にする
修正するには、次のコマンドでOpenLogicのリポジトリを無効にすればよい。
sudo dnf config-manager --disable AppStream-openlogic BaseOS-openlogic extras-openlogic openlogic
無効にすると、エラー無しにdnfを実行できる。
$ sudo dnf repolist
repo id repo name
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
extras AlmaLinux 8 - Extras
powertools AlmaLinux 8 - PowerTools
repoファイルを無効にする
別の方法としてrepoファイルをリネームする方法もある。OpenLogicのリポジトリは絶対に利用しないので、こちらの方が確実といえる。
/etc/yum.repos.d/
には以下の有効なrepoファイルがある。
$ ls /etc/yum.repos.d/*repo
/etc/yum.repos.d/almalinux-ha.repo /etc/yum.repos.d/OpenLogicCentOS.repo
/etc/yum.repos.d/almalinux.repo /etc/yum.repos.d/OpenLogic.repo
OpenLogicのrepoファイルをリネームする。
$ sudo rename repo repo.bak /etc/yum.repos.d/OpenLogic*
確認すると.bak
という拡張子が付いて無効になっている。
$ ls /etc/yum.repos.d/OpenLogic*
/etc/yum.repos.d/OpenLogicCentOS.repo.bak /etc/yum.repos.d/OpenLogic.repo.bak
5.5.3. Oracle CloudのCentOS 8
Oracle Cloud Infrastructureでは、Oracleが提供するCentOS 8を利用した。
移行結果
何の問題も無く移行が完了した。
- 移行ツールで移行できたか:できた
- 移行後に修正すべき箇所はあるか:ない
問題箇所
リポジトリを表示するとFailed loading plugin
のメッセージが表示される。これは移行とは関係なく、Oracle CloudのCentOS系イメージの問題なので無視してよい。
$ dnf repolist
Failed loading plugin "osmsplugin": No module named 'librepo'
repo id repo name
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
extras AlmaLinux 8 - Extras
powertools AlmaLinux 8 - PowerTools
6. これまでのまとめ
AlmaLinuxの概要
- AlmaLinuxはRHEL互換のLinux OSで、CentOSと同じ位置づけ
- AlmaLinuxは、少なくとも2029年までサポートを保証(RHEL8と同等)
- AlmaLinuxは、CloudLinux社のスポンサードを受けながらもコミュティードリブンで開発
- 2021/03/30に正式安定版をリリース
AlmaLinuxの機能
- CentOSと、まったく同じように扱える。違うのは/etc/almalinux-releaseがあること
- アップデートパッケージも十分早くリリースされている
- 現時点(2021/04/06)で60以上のミラーサイトが用意され、日本でも5サイトある
AlmaLinuxへの移行
- 移行ツールを利用するとCentOS 8からAlmaLinuxへ簡単に移行できる
- パブリック・クラウドのCentOS 8もAlmaLinuxに移行できる
- 移行ツールの前提条件として、インターネットへのアクセスが可能なことと、CentOS 8.3以上の必要がある(※1)
※1. CentOSはエンタープライズ利用が多いことを考えると、インターネットにアクセスできないか、アクセスできてもホワイトリスト申請が必要な可能性がある。共にダメだった場合は、スクリプトを少し修正し、ローカルリポジトリを立てればできそうだ。経験が無いとそれなりに面倒なので、台数が多い場合の選択肢としてはあり得るだろう。
7. 総評
これまで2回にわたってAlmaLinuxを見てきた。CentOSからCentOS Streamへの意向表明から、たった4カ月で仕上げてきたAlmaLinuxは見事というしかない。モノだけでなく、コミュニティーなどのバックアップ体制まで構築できたことは驚嘆に値する。CloudLinuxの主体的な協力による成果だろう。
CentOSの後継となる新しいプロジェクトでは一歩リードした感がある。
まあ、今後コミュニティーが崩壊することや、コントリビューターにそっぽを向かれる可能性は捨てきれないが...。
今後の移行先に関する議論は別のエントリとして書いたので、興味のある方はどうぞ。