Amazon Linux 2サポート終了!? 次のOSどうする問題

# はじめに
AWSでサーバーを立てている人であれば、Amazon Linux2を使っている人は多いかと思います。
しかし、刻一刻とサポート期限が迫ってきている中で、次のOSをどうするか悩む人も多いと思います。
私自身もその一人で、かなり迷いましたが、今回はその体験談と、実際に試してみたことをお話ししていければと思います。

# サポートの延長
Amazon Linux2のサポート期限については実は2回延長されています。(当初は2023年6月30日で終了予定でした)

**追記：AWS re:Invent 2024で2026年6月30日までの延長が発表されました。**

公式ドキュメントでも発表されています。

https://aws.amazon.com/amazon-linux-2/faqs/?nc1=h_ls

- 1回目の延長：2024年6月30日まで
- 2回目の延長：2025年6月30日まで
- 3回目の延長：2026年6月30日まで　★NEW

延長はされたものの、経験上、ぎりぎりにやるといいことは(精神的にも)ほぼないので、意を決して移行することにしました。

:::note warn
Amazon Linux2を引き続き利用することは可能ではありますが、セキュリティパッチやアップデートがされないなどのセキュリティリスクが高くなるので、基本的に移行したほうがいい(システムとしてそうあるべき)でしょう。
:::

# 次のOSの候補たち
Amazon Linux2の次のOSとして、検討したのは以下の3つです。

- Amazon Linux 2023
- AlmaLinux 9
- Rocky Linux 9

それぞれについて、実際に試してみた感想を交えながら紹介していきます。
## Amazon Linux 2023

https://aws.amazon.com/jp/linux/amazon-linux-2023/

まず最初に試したのが、AmazonLinux2023です。
AWSが後継として出しているので、これでいいのでは？と思うのですが、素直に移行するわけにもいかなかったりします。

まず、AmazonLinux2023の特徴としては以下のような感じです。
- 約5年間のサポート
- Fedora 34, 35, 36をベースにしている
- RHEL9に似た構成(RHEL9互換OSではない)

### 最初にぶつかった壁
まず一番感じたのが、パッケージ管理ツールの変更でした。
Amazon Linux2ではyumコマンドでしたが、Amazon Linux2023では後継のdnfが標準で利用されています。

```
# パッケージのインストール
sudo dnf install nginx
```

さらに、リポジトリの管理方法も少し変わっています。
リポジトリ一覧を確認する場合は以下のようになります。

```
# リポジトリの一覧を確認
dnf repolist

repo id                      repo name
amazonlinux                  Amazon Linux 2023 repository
kernel-livepatch             Amazon Linux 2023 Kernel Livepatch repository
```

ここらへんは使っているうちに慣れてきますが、**既存のスクリプトや自動化ツールがyumを前提にしている場合**、変更が必要になる可能性があります。

### 実際に困った点
また、特にネックに感じたのが以下2点です。

1. 互換性の問題
一部の古いアプリケーションでは、必要なライブラリ（例: 特定バージョンのglibcなど）がリポジトリに見つからないことがありました。

1. 設定やディレクトリ構造の変更
システム設定ファイルの場所やディレクトリ構造が変わっています。
例えば、cronの設定はsystemdタイマーを使う形に変わりつつあり、既存の`/etc/cron.d`設定がそのままでは動作しないことがあります。

互換性の問題については、EPELリポジトリを追加して必要なパッケージをインストールしたり、特定のライブラリやツールについてはソースからビルドする方法で解決しました。

```
# EPELリポジトリをインストール
sudo dnf install epel-release
```

```
# ソースからインストール
wget http://ftp.gnu.org/gnu/libc/glibc-2.29.tar.gz
tar -xvzf glibc-2.29.tar.gz
cd glibc-2.29
mkdir build
cd build
../configure
make
sudo make install
```

### その他の注意点
その他、移行時に気をつけたいポイントを挙げておきます。

- 新しいAMIを使用する必要がある
AmazonLinux2023専用の新しいAMIを利用する必要があるので、インスタンスの再作成や設定変更が生じる場合があるかもしれません。

- カーネルモジュールやドライバの互換性
最新のLTSカーネルが採用されているので、特定のモジュールやドライバに互換性の問題が発生する場合があります。
※EPELリポジトリを利用すると、代替モジュールが見つかるかも。。

上記を踏まえた上で、調査や十分な検証は必要かなと思います。

また、公式から非推奨事項が出ているので、こちらも参考にしてみてください。

https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/deprecated-al2023.html


## AlmaLinux 9

https://almalinux.org/ja/

次に試したのがAlmaLinux9です。
RHEL9の完全互換を目指しているOSで、CentOSの後継として注目されています。

### AlmaLinux9の特徴
- RHEL9との高い互換性
- コミュニティドリブンな開発
- 安定性重視
- **約10年間のサポート**

```
# AlmaLinux9でのパッケージインストール
sudo dnf install httpd
```

AlmaLinux9でもdnfが主流ですが、yumコマンドも使えます。

:::note info
AlmaLinux9でのyumコマンドは、実はdnfへのシンボリックリンクになっています。
:::

実際に使ってみて、RHELやCentOSを使っている人なら、すんなり移行できそうな印象でした。
RHEL9との互換性が高いことから、既存スクリプトはそのまま動作することが多く、ソフトウェアの互換性もそんなにないかなと思いました。
また、AnsibleやTerraformなどの自動化ツールの互換性が高く、移行時の手間も少ない印象です。

ただ、注意点もあります。

### 注意点
- ディレクトリ構造や設定ファイルの変更
AlmaLinux9では、/etc/cron.dなど一部のシステムディレクトリの使用が非推奨となっていて、代わりにsystemdサービスを利用することが推奨されています。

　　※/etc/cron.d自体は引き続きサポートされています。

- アップデートのペース
RHEL9に追随する形でアップデートされるので、RHELリリースの遅れが影響する場合があるかもしれません。

## Rocky Linux 9
最後に試したのがRocky Linux9です。
これもRHEL9の完全互換を目指しているOSで、CentOSプロジェクトの創設者が立ち上げたプロジェクトになります。

### Rocky Linux 9の特徴
- RHEL 9との高い互換性
- 商用支援を含む
- **約10年間のサポート**
（AlmaLinuxと同様の5+5年サポート）が提供されています。

使ってみた感じ、基本的にはAlmaLinux 9とほぼ同じような印象でした。

```
# Rocky Linux 9でのパッケージインストール  
sudo dnf install httpd
```

AlmaLinuxと同様、RHEL9と高い互換性があるので、基本的な操作感や設定は非常にスムーズでした。
特にDockerやPodmanなどのコンテナ関連ツールがスムーズに動作する点は好印象でした。

### 注意点
- 一部モジュールの移行が必要
特定の古いモジュール（例: Python 2.7）はサポートされていないので、モジュールの移行が必要なケースがありました。

- 商用サポートの利用には追加コストがかかる
商用サポートが充実している分、エンタープライズ環境では追加コストが発生する場合があります。

## 比較表

| **特徴**                    | **Amazon Linux 2023**                             | **AlmaLinux 9**                                   | **Rocky Linux 9**                                  |
|-----------------------------|--------------------------------------------------|--------------------------------------------------|----------------------------------------------------|
| **ベースOS**                | Fedora 34〜36をベースに、RHEL9に似た構成        | RHEL9と完全互換                                  | RHEL9と完全互換                                    |
| **サポート期間**            | 約5年間（メジャーリリースごとのサポート）         | 10年間（5+5年サポート）                         | 10年間（5+5年サポート）                           |
| **パッケージ管理ツール**     | dnf（Fedora系）                                  | dnf（yumのシンボリックリンクも利用可能）         | dnf（yumのシンボリックリンクも利用可能）          |
| **移行のしやすさ**          | 既存のAmazon Linux 2からの移行が比較的容易      | RHELやCentOSからの移行がスムーズ                | RHELやCentOSからの移行がスムーズ                  |
| **ディレクトリ構造の変更**   | cronの設定がsystemdタイマーに移行中              | /etc/cron.dの使用が引き続きサポートされているが、systemdタイマーが推奨される | /etc/cron.dの使用が引き続きサポートされているが、systemdタイマーが推奨される |
| **互換性**                  | RHEL9に似ているが、完全な互換性はなし             | RHEL9と完全互換                                  | RHEL9と完全互換                                    |
| **商用サポート**            | 提供なし                                          | 提供なし（Red Hatとのサポート契約なし）          | 商用サポートオプション（Rocky Linux Enterpriseなど）|
| **セキュリティパッチ**       | AWS独自の更新頻度で提供                            | RHELに基づいたセキュリティパッチ提供              | RHELに基づいたセキュリティパッチ提供               |
| **カーネルとドライバの互換性**| 最新のLTSカーネルだが、特定モジュールに互換性問題あり| RHEL9互換なので、特に問題は少ない                 | RHEL9互換なので、特に問題は少ない                   |
| **自動化ツールとの互換性**    | AnsibleやTerraformとの互換性はあるが、少しの調整が必要 | 高い互換性、特に自動化ツールとの相性が良い       | 高い互換性、特に自動化ツールとの相性が良い         |
| **ソフトウェアパッケージの互換性** | 一部古いアプリケーションとの互換性問題あり         | RHEL9互換なので、特に問題なし                     | RHEL9互換なので、特に問題なし                      |
| **移行時の注意点**           | 古いアプリケーションでライブラリの不一致が発生する可能性あり（例: glibc） | systemdタイマーへの移行が必要（cronの設定）      | 古いモジュール（例: Python 2.7）の非サポートがある |
| **コミュニティの規模**      | AWS専用のコミュニティ                               | 大きなコミュニティ（CentOSの後継として注目）      | 比較的大きなコミュニティ（CentOSの後継として注目） |


# 結局どれにした？
実際に3つのOSを試してみて、結果的に選んだのは***AlmaLinux9***です。

理由は、

- 10年間の長期サポート
- RHELやCentOSを使っていた経験があれば、ほとんど違和感なく使える。

特に10年間のサポートが大きかったです。OSアップデートは地味に工数使うので。。

RockyLinuxを採用しなかった理由としては、AlmaLinuxの方がコミュニティ規模が大きく、ドキュメントが豊富というのが大きかったです。

今回のケースではRHELとの完全な互換性は必要なかったですが、マストな場合のファーストチョイスとしては、AlmaLinuxやRockyLinuxになってくるかなと思います。

# まとめ
Amazon Linux2のサポート期限問題について話しましたが、OSの移行って結構大変なものの、避けては通れない道でもあります。
今回の経験を通じて、改めて**早めに検討を始めること**、**実際に試してみること**の大切さを痛感しました。
この記事が今後移行する方の参考になれば幸いです。

# 参考
https://manual.sakura.ad.jp/ds/phy/specs/os/almalinux9.html
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/9.0_release_notes/index