Amazon Linux 1 AMI から Amazon Linux 2 AMI へのアップグレードを支援する preupgrade アシスタントがリリースされました。

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Preupgrade Assistant

Preupgrade Assistant1 は Fedora/RHEL で利用されている、アップグレード時に問題がないかチェックするツールです。アップグレード時につかうユニットテストツールのようなものだと思えばいいかもしれません。

今回のリリースでは、Preupgrade Assistant に Amazon Linux (1) から、Amazon Linux 2 へのモジュールが作成されたというアナウンスになります。

インストール

yum コマンドで簡単にインストールできます。

preupgrade-assistant 本体と、Amazon Linux 用のモジュールの2つのパッケージをインストールします。

診断の実行

実行自体もとても簡単です。

コマンドを実行すると、実行しても実際にアップグレードするわけではないことを示すメッセージが出力して、Yes か No を聞かれるので y と回答して診断を実行します。

診断には若干時間がかかります。

診断中および診断後に以下のような出力がされます。

概要はこれで判断できると思います。

診断の結果

/root/preupgrade-results/ 配下にpreupg_results-<日付時刻>.tar.gz というファイルが作成されます。今回は "preupg_results-190311040320.tar.gz" でした。

この tar.gz ファイル内の result.html を確認することで診断結果を確認することができます。

冒頭部分。実行環境やIPアドレスなどが出力されています。

試験結果の概要

今回は一つだけ needs inspection になっています。

各ルールの結果。具体的にはここをよく見るような形になります。

メニューを展開すると具体的な診断結果が表示されます。

さらに診断結果をクリックすると詳細がポップアップされます。

診断内容

一番気になるのはどこまで調査して診断してくれるのかという点だと思います。 現在5つのモジュールが rpm パッケージに含まれています。各モジュールの概要は以下の通りです。

grub2

Amazon Linux から Amazon Linux 2 では、grub から grub2 に変更になります。

/boot/grub/menu.lst ファイルを参照して、Update 時に受け継がれない可能性がある設定について検査して、もし想定外の設定があった場合は注意を促します。

mariadb

Amazon Linux から Amazon Linux 2 では、mysql から mariadb に変更になります。

mysql を実行しているか、もしくは my.cnf があるかをチェックしてどちらかに該当する場合は、注意を促します。

どうしても mysql を利用したい場合は、別途 Oracle より、入手して利用することになります。

move-to-extras

Amazon Linux 2 では一部のパッケージがメインリポジトリから、別途 Amazon extras という別のリポジトリに移行されました。Amazon extras に収録されたパッケージはそれぞれ固有のリポジトリを持ち、メインリポジトリとは別にアップデートされていきます。

チェック対象になっているパッケージは以下の通りです。

  • emacs
  • memcached
  • nginx
  • postgresql
  • python3
  • vim
  • nano
  • php
  • docker
  • tomcat

python

python のシステムパッケージとしてインストールされているパイソンパッケージの内以下のものを検出します。

  • pip 等でインストールされ、 rpm によって管理されていない。
  • もしくは Amazon Linux の GPG サインがない。

いずれの場合も、Amazon Linux の管理外となるため、別途対処が必要です。

releasever-lock

yum では releasever 変数を設定することで、特定のマイナーバージョンを指定してパッケージをインストールすることができます。 Amazon Linux 2 ではこの変数がサポートされなくなります。

そのため、 /etc/yum.conf の releasever 変数によって特定のマイナーバージョンに固定していないかを確認しています。

sonames

ライブラリファイルには特定のバージョンを示す soname という情報が埋め込まれており、バイナリを実行するときに soname を照合して、適合するバージョンのライブラリを読み込むようになっています。

そのためバージョンアップによって古いバージョンのライブラリファイルがなくなり、特定のバイナリファイルを実行できなくなる可能性があります。

このモジュールでは特に何かの検証をしているわけではなく、単に注意喚起を促すメッセージだけを表示しています。

まとめ

今のところ、診断モジュールは少ないように見受けられますが、AWS では

「早くリリースして、できるだけ多くユーザーからのフィードバックを受け取る」

という方針があるように見受けられます。そのため今現在は少ないモジュールですが、github2 で ソースも公開されているので、フューチャーリクエストを出すなり、腕に覚えがあるならば、モジュールを実装してプルレクを出すなりすることで、今後かなり早い速度で成長していくと思います。

それでは、また

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.