Amazon Linux 2使いの皆さんはもうAmazon Linux 2023への移行を済ませただろうか。私はまだだ。もうそろそろ移行を開始したいところではあるが、どうもOpenSSLを巡ってかなりややこしい状態になっている。
現状の整理
AmazonLinux2/2023と、デフォルトでインストールされているOpenSSLの関係は以下のようになっている。
OS | OpenSSL |
---|---|
Amazon Linux 2 | OpenSSL 1.0.2 *1 |
Amazon Linux 2023 | OpenSSL 3 |
Amazon Linux 2023への移行を早々に進めていきたいところではあるのだが、動作させるアプリケーションがRuby3.0である場合に問題となる。
なぜなら、Ruby3.0はOpenSSL 3をサポートしないからである。このためOpenSSL 3しか存在しないAmazon Linux 2023にはRuby3.0を直接入れることができない。この問題はUbuntu 22.04でも同様のようだ。
戦略
一旦OSはAmazon Linux 2のままとしておき、rbenv & ruby-build経由でインストールすることとした。もしruby-buildがうまくいかなければ、ruby-buildを最新版にすること。ruby-build 20220710以降でなければ、以下のPRが含まれていないためだ。
先の見通し
これでRuby3.0のインストールは何とかなった。だが、そもそもOSがサポートするOpenSSLが1.0.2なのは早急になんとかしたい。OpenSSL 1.1.1ですら2023/09/11でEOLを迎えるようで、さっさとOpenSSL 3系の世界に行かないと。
Ruby3.1以降はOpenSSL 3をサポートしたので、アプリケーションをRuby3.1以上に対応させた上で大手を振ってAmazon Linux 2023に移行することにしよう。どうせRuby3.0のサポートももうすぐ終わってしまうことだし。
余談
早くdockerにしろという声が聞こえてくるが、深淵な理由でローカルにもRubyを入れる必要があったため、この記事に書いた内容を調査するに至った。この辺りは語る機会があればまた今度。
ちなみにpythonのurllib3モジュールが、最近OpenSSL 1.1.1未満のサポートを切った。
この影響を受けてansibleのdockerモジュールがAmazon Linux 2上では動作しなくなった。つまり、dockerのホストOSとしてもAmazon Linux 2は適切ではなくなってきている。