Amazon Linux 2 ってどんなOS?
はじめに
Amazon EC2(Elastic Compute Cloud) 上のOSを対象としたThe Cloud Marketの最新調査結果(2020/4/7時点)によると、今最も人気のあるOSは「Amazon Linux」です。
インスタンス数としてはおよそ42万5000、次点の「Ubuntu」はおよそ39万2000、さらに次点の「Debian」は大きく離れておよそ18万5000という結果になっております。
今回はそんな Amazon Linux の中でも最新のバージョンである Amazon Linux 2 についてまとめていきます。
Amazon Linux とその他の Linux サーバーオペレーティングシステムで何が違うの?
Amazon Linux 2 について記載する前に、そもそも Amazon Linux が他の Linux OS と比べてどんな点が優れているのかを簡単にまとめます。以下の内容が Amazon Linux の主な特徴となります。
- AWS のサービスを運用するために必要なパッケージや設定が事前に入っており、多くの AWS サービスと容易に統合できます。
- AWS サポートに加入することで、AWS だけでなく、Amazon Linux のインストールや使用についてもサポートを受けることができます。
- Amazon EC2 でのパフォーマンスが向上するように最適化されたカーネルと新しいバージョンのツールチェーンが付属されてます。
- デフォルトで SSH キーペアの使用およびリモートルートログインの無効化によるリモートアクセス制限の設定がされています。
この中でも特に AWS の多くのサービスを容易に統合できる点が最大の特徴となります。
Amazon Linux AMI (旧バージョン)と Amazon Linux 2 (新バージョン)の違いは?
Amazon Linux はアマゾン ウェブ サービス(AWS)より提供されている Linux サーバーオペレーティングシステムであり、現在では、Amazon Linux AMI とその次世代バージョンにあたる Amazon Linux 2 が提供されてます。Amazon Linux 2 の特徴を知るにあたり、旧世代バージョンである Amazon Linux AMI と比較してどのような点に違いがあるのかを確認していきます。
- ・ベースとなるバージョンの変更
- Amazon Linux は RedHat 系の Linux ディストリビューションですが、Amazon Linux AMI は RedHat 6 がベースに対して、Amazon Linux 2 は RedHat 7 がベースと変更されております。
- ・長期のサポート期間
- Amazon Linux 2 では、2023年6月30日までサポートを受けることができます。それに対して、Amazon Linux AMI の標準サポートは2020年12月31日をもって終了となり、以降はメンテナンスサポート期間(2023年6月30日までの予定)に入るため注意が必要です。
- ・オンプレミスでの使用が可能
- Amazon Linux 2 はオンプレミスで使用できる仮想マシンイメージとしても提供されているため、ローカルの開発環境にテスト環境を構築することができます。
- ・Extras※1 によるパッケージのインストールが可能
- 安定性を確保しつつ、最先端のアプリケーションおよびソフトウェア更新をインスタンスにインストールすることができます。
- ・init システムの変更
- init システムが、Amazon Linux AMI では System V init システムでしたが、Amazon Linux 2 では systemd のサービスとシステムマネージャーが提供されています。
- ・ファイルシステムの変更
- ファイルシステムが、Amazon Linux AMI では ext4 でしたが、Amazon Linux 2 では xfs に変更されています。その為、ファイルシステム管理コマンドが変わっています。
- Amazon Linux AMI から Amazon Linux 2 へのインプレースアップグレード※2はサポートされていません
- Amazon Linux AMI から Amazon Linux 2 へのローリングアップグレード※3は実行できません
- seed.iso 起動イメージを準備する
- Amazon Linux 2 仮想マシンイメージをダウンロードする
- 新しい仮想マシンを構築する
- meta-data
新しい仮想マシンのホスト名やネットワークの設定をする設定ファイルです。 - user-data
新しい仮想マシンのユーザーアカウントやパスワード、キーペア、およびアクセスメカニズムを設定する設定ファイルです。なお、Amazon Linux 2 仮想マシンイメージでは、デフォルトで ec2-user のユーザーアカウントを作成します。 - ISO起動イメージを作成する環境
Linux の場合は、genisoimage などのツールを使用します。macOS の場合は、hdiutil などのツールを使用します。なお、今回の手順の確認には CentOS7.7 を使用しているため、genisoimage を例として使用しております。 - 作業用のディレクトリを作成し、そのフォルダに移動します。
例)
$ mkdir seedconfig
$ cd seedconfig - 作業環境(CentOS7.7)でisoイメージを作成するために必要となるパッケージを準備します。
例)
$ sudo yum -y install genisoimage - meta-data 設定ファイルを作成します。
- meta-data という名前の新しいファイルを作成します。
- 任意のテキストエディタを使用して、meta-data ファイルに以下の内容を追記します。
例)local-hostname: [仮想マシンホスト名]
#network-interfaces: |
# auto eth0
# iface eth0 inet static
# address 192.168.1.10
# network 192.168.1.0
# netmask 255.255.255.0
# broadcast 192.168.1.255
# gateway 192.168.1.254local-hostname には、任意の仮想マシンホスト名を記載します。
また、上記例のように設定すると、DHCPでIPアドレスの自動割り当てを行います。静的にネットワーク設定を行う場合は、network-interfaces 以下のコメントを外して設定します。 - meta-data 設定ファイルを保存して閉じます。
- user-data 設定ファイルを作成します。
- user-data という名前の新しいファイルを作成します。
- 任意のテキストエディタを使用して、user-data ファイルに以下の内容を追記します。
例)#cloud-config
users:
– default
chpasswd:
list: |
ec2-user:[ユーザーパスワード]ここではデフォルトのユーザーアカウント ec2-user の作成とパスワードの設定を行います。
- user-data 設定ファイルを保存して閉じます。
- seed.iso 起動イメージを作成します。
例)
$ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data - ハードディスクにダウンロードした Amazon Linux 2 の仮想マシンイメージを指定します。
- seed.iso を起動ドライブにマウントします。
- 設定が完了した仮想マシンを起動します。
- 使用可能なトピックのリストを表示する
例)$ amazon-linux-extras list - トピックを有効にし、パッケージを最新バージョンの状態で維持する
例)$ sudo amazon-linux-extras install topic - トピックを有効にし、パッケージの特定のバージョンをインストールする
例)$ sudo amazon-linux-extras install topic=version topic=version
この他にも、ホスト名やタイムゾーンを変更する方法が異なっていたり、yum でインストール可能なソフトウェアのバージョンが異なっていたり、また、それが原因でパッケージ名が変更されていたりと細かい点で色々な違いがあります。Amazon Linux AMI から Amazon Linux 2 へアップグレードを行う場合には、既存のアプリケーションが正しく動作するか等の確認を含め、事前に新しく Amazon Linux 2 をインストールしたテスト機で十分にテストを実施してからの方が良いでしょう。
Amazon Linux AMI から Amazon Linux 2 へアップグレードする際の注意点について
具体的な開始方法やアップグレード方法についてはユーザガイドを確認した方が良いため、ここではアップグレードの検討を行う際の注意点を記載します。
注意すべきは以下の2点となります。
以上のことから、Amazon Linux 2 へのアップグレードはマイグレーション方式※4で行う必要があります。
なお、Amazon Linux AMI から Amazon Linux 2 へ移行をアシスタントするツールが発表されています。このツールを使用することで、パッケージ、ライブラリ、サービス、コマンドラインオプション、および構成ファイルの非互換性を確認できます。
オンプレミスで Amazon Linux 2 を使用する
オンプレミスで Amazon Linux 2 を実行する際には、AWS アカウントは必要なく、追加料金も発生しません。現在 Amazon Linux 2 仮想マシンイメージは、KVM、Microsoft Hyper-V、Oracle VM VirtualBox、VMware ESXi の各仮想化プラットフォームでの利用がサポートされております。
ここからはローカルの環境で Amazon Linux 2 を使用する手順を記載します。なお、後述しますが、今回記載する手順の確認にあたり、Oracle VM VirtualBox 6.1.4 と CentOS7.7(isoイメージ作成作業環境) を使用しているため、この環境に沿った手順を例として記載しております。使用する環境が異なる場合には手順に多少の差異があるかもしれませんが、基本的な流れはどの仮想化プラットフォームでも同じです。
作業手順
おおまかな作業の流れは以下の通りとなります。
1.seed.iso 起動イメージを準備する
新しい仮想マシンの起動に必要な初期設定情報(ネットワーク設定、ホスト名、ユーザーデータなど)が含まれている seed.iso という起動イメージを作成する必要があります。seed.iso 起動イメージを作成するには、以下が必要となります。
<seed.iso 起動イメージ作成手順>
2.Amazon Linux 2 仮想マシンイメージをダウンロードする
こちらから選択したプラットフォームに合う仮想マシンイメージをダウンロードします。
3.新しい仮想マシンを構築する
先ほど作成した seed.iso と、ダウンロードした Amazon Linux 2 仮想マシンイメージを使用して、新しい仮想環境を構築します。以下、参考までに VirtualBox に新規仮想マシンを追加した際の手順を記載します。
まとめ
Amazon Linux 2 についてまとめました。旧バージョンが Amazon EC2 でのみ使用できるOSであったこともあり、まだあまりメジャーなOSとは言えませんが、Amazon EC2 上で最適化されたパフォーマンスが提供されており、かつ、AWS のサービスとの連携も容易なOSとなります。Amazon EC2 でどのOSを使用するか検討する場合には、もちろんこれまでの使い慣れたOSにするのも良いですが、それらと並行して Amazon Linux 2 に関しても一度検討してみる価値はありそうです。
<注釈>
※1 … Extras とは
Extras は、最新のアプリケーションソフトウェア更新をインストールできるようにする Amazon Linux 2 のメカニズムを指します。ソフトウェア更新はトピックと呼ばれ、各トピックには Amazon Linux 2 にソフトウェアをインストールし機能させるために必要となる依存関係がすべて含まれています。
具体的な使用方法としては、”amazon-linux-extras”というコマンドを使用します。このコマンドにより、例えば以下のことが実施できます。
※2 … インプレースアップグレード とは
古いバージョンが稼働しているシステムに新しいバージョンを上書きして、データを引き継ぐ方法を指します。複数のコンピュータが稼働している場合、稼働中のシステムは一旦すべて停止し、ソフトウェアを新しいものに更新してから再稼働させる方式です。
※3 … ローリングアップグレード とは
複数のコンピュータが稼働している場合において、システムを稼働させたまま一台ずつ更新する方式です。更新中は一時的に新旧のソフトウェアが混在する環境になるため、ソフトウェアはあらかじめローリングアップグレードに対応している必要があります。
※4 … マイグレーション とは
現在稼働している環境とは別に新しいバージョンの環境を構築、稼働させて、古い環境を置き換える方式です。