この記事は2022年1月の記事です。最新のAmazon Linux 2023の記事はこちら
こんにちは、AWSエンジニアの内です。
2021年11月にAmazonLinux2の後継となる、AmazonLinux2022(略してAL2022)が公開されてますので、実際に構築と運用してみました。
こちらの記事では、AWSがRockyLinuxのスポンサーをしているから、AmazonLinux3はRockyLinuxベースという予想をしていましたが、名前もベースOSも予想が見事にはずれました。
引用:”AWSがスポンサーしてビルドインフラ提供していることから、AmazonLinux3はきっとRockyLinuxベースになるんだろうなと思わざるを得ません。”
目次
AmazonLinux2022はFedoraがアップストリーム
はい、私が勝手にAmazonLinux3という名前でリリースされると思っていたものは、正しくはAmazonLinux2022(AL2022)で、Fedoraの最新がアップストリームとなっており、Fedoraに対してAWSが独自でテストして、バグフィックス、セキュリティアップデート対応した安定版が提供されます。
2022年1月31日現在公開されているAmazonLinux2022はプレビュー版で、ベースOSはFedora34となってますが、現時点でリリースされているFedoraの最新版はFedora35なので、今後公開されるAmazonLinux2022の正式リリース版はFedora35ベースとなる可能性が高いです。。
AmazonLinux2022以降はメジャーバージョンが2年ごとにリリースされる
特筆すべきは今後のAmazonLinux系のメジャーバージョンリリース間隔も発表されていることです。
https://docs.aws.amazon.com/linux/al2022/ug/release-cadence.html
AmazonLinux2022のスタンダードサポートは2年間でその後3年間のメンテナンスサポート期間があり、合計5年間のLTS(Long Term Support)になりますが、スタンダードサポートの終了と同時に新しいメジャーバージョンがリリースされることになってます。
2年ごとという非常に短い間隔でAmazonLinux2024,AmazonLinux2026,AmazonLinux2028とメジャーバージョンが次々とリリースされる予定です。
AmazonLinux2028までリリースのスケジュールが発表されているので、利用者は製品ライフサイクルの一部としてOSのアップグレードの計画が組みやすい、ということをメリットとしています。
こちらは私の勝手な見解ですが、2年という短期間でメジャーバージョンをリリースする上に、全てがLTSということは、非常に計画の実行とメンテナンスの維持に労力≑稼働がかかることとだと想像できます。
上記の横棒グラフから見てとれることとしては、例えば2026年のタイミングではどれもFedoraのメジャーバージョンが異なるアップストリームを持っているAL2022,AL2024,AL2026のメンテナンスを維持しつつAL2028のalpha版新規作成に着手するといったチームリソースが必要と思われ、これはすごいことです、技術力、資金力のあるAWSさんだからできることではないかと思います。
現在稼働中のAmazonLinux2の移行先はどれにしよう?
我々エンジニアにとってはCentOS8終了の影響と相まって、AWS上で稼働しているCentOS系のEC2のOS移行先の選択肢が非常に増えた、ということも意味しますので、悩ましいです。
AmazonLinux2は2018年6月にリリースされ、5年サポートで、EOSが2023年6月30日となってます。
CentOS8のEOLが昨年末まででしたので、多くの方はCentOS8の移行をRHEL8,MIRACLELINUX8,AlmaLinux8,RockyLinux8などで悩み、年末までの移行をやっと完了したと思われますが、
皆様の次のイベントは、2023年6月30までにAmazonLinux2の移行先選定と移行をしなければならない。という方も多いかと思います。
CentOS8の後継系にするか、AL2022にするか、半年待ってAL2024にするか、さらには、EC2の利用をやめてElasticBeanstalk,ECS,EKS,Fargate,サーバーレスフレームワークに移行するか、など大量の検討候補、実コスト、学習コストとの狭間で悩まれる方も多く出てくることが想像できます。お疲れ様です。
最新の機能をいち早く使える可能性
AWSがスポンサーになってるRockyやAlmalinuxをベースとせず、Fedoraをアップストリームするってことは個人的に凄いことだと思ってます。
こちらも私の勝手な予想になってしまいますが、AWSの狙いは、CentOS8の後継系や、下手したらRHEL本家よりも先に、Fedoraの最新機能の安定版を商用で提供する点ではないかという点です。
理由としては、CentOS8後継系とRHELがリリースするフローが、
- バグだらけのFedoraがリリースされる
- CentOSStreamをリリースして無償利用者からフィードバックもらいバグフィックス
- 安定してきたらRHELがリリースされる
- CentOS後継系ディストリビューションがRHELのソースをリビルドして各自OSをリリース
という形になるのに対し、AWSが提供する商用OSのAL2022以降は
- バグだらけのFedoraがリリースされる
- AWSがテストして安定化してリリースする
という2ステップなのと、テストを自前のコスト/リソースでコントロールして行うことで、リリース構造的にAmazonLinuxのほうが最新機能の安定版を提供できるという結果を生み出す可能性があるということになると考えられます。
これはAWSがOSSのいいとこどりをしているという理由から、反発してピュアOSSプロダクトだったRedis、MongoDB、Kafka、ElasticSearch等がライセンス変更してしまったことと、歴史的に無関係ではないのではないかと思いました。
将来的にFedoraがクラウドで利用する場合は商用ライセンス、といったデュアルライセンスをとり、AWSがOSSのFedoraをフォークしてメンテしていく?構図が頭に浮かんでしまうのは気のせいでしょうか。
去年突然サポート終了を発表したCentOS8もFedoraもRedHatがスポンサーですね。
とりあえず起動させてみましょうか
EC2起動画面でal2022で選択します。2022年1月29日現在ではプレビュー版となります。
「al2022」で検索して、コミュニティAMIから選択します。
①minimalインストールか、標準化パッケージ版か、②armかx86_64かどうかの選択肢があります。
al2022-ami-kernel-5.10-arm64 for arm64 architecture
al2022-ami-minimal-kernel-5.10-arm64 for arm64 architecture (minimal AMI)
al2022-ami-kernel-5.10-x86_64 for x86_64 architecture
al2022-ami-minimal-kernel-5.10-x86_64 for x86_64 architecture (minimal AMI)
どれでも結構ですが、今回は標準パッケージがインストールされてるx86_64の最新を選びます。
al2022-ami-2022.0.20211222.0-kernel-5.10-x86_64というものが該当します。
OS情報を見てみる
1 |
cat /etc/os-release |
してみます。
1 2 3 4 5 6 7 8 9 10 |
NAME="Amazon Linux" VERSION="2022" ID="amzn" ID_LIKE="fedora" VERSION_ID="2022" PLATFORM_ID="platform:al2022" PRETTY_NAME="Amazon Linux 2022" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2022" HOME_URL="https://amazonlinux.com/" |
1 |
uname -a |
してみます。
1 |
Linux ip-172-31-44-243.ap-northeast-1.compute.internal 5.10.75-82.359.amzn2022.x86_64 #1 SMP Mon Nov 15 18:04:59 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux |
ハマリポイント1 sshにログインできない
sshでログインできません。理由はfedora34ベースだからopensshのバージョンがX.Xで、opensshのx.xからデフォルトでSHA-1を用いたRSA署名が廃止されたからです。
暫定対応として、sshd_configに以下1行を追加して有効化します。
ただこれは、ログインできないからやることになるのでユーザーデータで実行します。
後程まとめたユーザーデータで記述します。
PubkeyAcceptedAlgorithms=+ssh-rsa
プレビュー版ではssm-agentもインストールされてないので、コンソールからログインもできません。
ハマリポイント2 selinuxの無効化ができない
結論から言うとal2022ではデフォルトでselinuxがenforcingになってて、Fedora34からselinuxの設定を/etc/selinux/configで指定しても効きません。
Fedora34をベースとしているal2022も同じとなります。
selinuxがenforcingの状態で運用することのほうがセキュリティ上望ましいですが、設定をpermissiveにするには、/etc/default/grubで設定して、/etc/grub2.cfgに反映することになります。
こちらも後述のユーザーデータで反映させました。
インストールして動作確認だけでは気づきにくく、運用してみると、初めて気づくポイントになります。
AmazonLinux2022の暫定初期設定
- 最新のamiをつかってもより新しいアップデートがある可能性がありますのでdnf updateしましょう。
- これまでどおり必要に応じてswapを作成しましょう、サイズはインスタンスタイプに応じて変更してください。
- sshログインできるようにsshd_configをAmazonLinux2同等の設定にします。
- タイムゾーンやロケールの設定など日本向けの設定をします。
- AmazonLinuxなのに、少なくともプレビュー版ではcloudwatch-angetやssm-agentが入ってないのでいれます。
- Fedora34からselinuxの機構が変わってます、とりあえずpermissiveにするにはgrubパラメータを変更します。とりあえずこれらを実行しているスクリプトは以下です、ユーザーデータにコピペすれば、普通に使えるかと思います。
2022/01/31時点の情報で、今後のリリースで以下スクリプトは有効でないかもしれませんし、使用は自己責任でおねがいします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/bash setenforce 0 dnf -y update dd if=/dev/zero of=/swapfile bs=128M count=32 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo "/swapfile swap swap defaults 0 0" >> /etc/fstab sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config systemctl stop sshd.service systemctl start sshd.service timedatectl set-timezone Asia/Tokyo localectl set-locale LANG=ja_JP.utf8 dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm dnf install -y https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/redhat/amd64/latest/amazon-cloudwatch-agent.rpm sudo systemctl enable amazon-ssm-agent sudo systemctl start amazon-ssm-agent sed -i -e "s/enforcing=1/enforcing=0/g" /etc/default/grub grub2-mkconfig -o /etc/grub2.cfg |
※参考
https://docs.aws.amazon.com/linux/al2022/ug/linux-ug.pdf
https://docs.aws.amazon.com/linux/al2022/ug/release-cadence.html
https://github.com/amazonlinux/amazon-linux-2022
エンジニア募集の告知
ギークフィードではハイレベルなクラウドエンジニア(を目指している人含む)を随時募集しております。
量より質を重視する企業理念の関係上、採用合格率は決して高くはございませんが、我こそはと思う方はhttps://www.geekfeed.co.jp/recruitment
よりご気軽にご応募お待ちしております。
こんなギークな記事を読んでいる方はきっとギークなので、「内さんの記事を見て応募しました。」で、書類選考通過キャンペーン実施中。
- 2023年ギークフィードが評価されて表彰されたことの振り返りとアピール - 2023-12-24
- Linuxコンソールで、本番、ステージング、テスト環境を混同しないための4つの工夫 - 2023-09-13
- Amazon Linux 2023を触ってみて質問がありそうなことをまとめてみました。 - 2023-03-22
- AmazonLinux3じゃなくってAmazon Linux 2022 (AL2022) だってさ。 - 2022-01-31
- 【祝:月間PV6万越え】2021年のギークブログ大賞を発表します。 - 2022-01-10