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

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

Preupgrade Assistant

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

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

インストール

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

$ sudo yum install -y preupgrade-assistant preupgrade-assistant-al1toal2

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

診断の実行

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

$ sudo preupg
The Preupgrade Assistant is a diagnostics tool
and does not perform the actual upgrade.
Do you want to continue? [Y/n]

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

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

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

$ sudo preupg
The Preupgrade Assistant is a diagnostics tool
and does not perform the actual upgrade.
Do you want to continue? [Y/n]
y
Gathering logs used by the Preupgrade Assistant:
All installed packages                                 : 01/10 ...finished (time 00:00s)
All changed files                                      : 02/10 ...finished (time 00:18s)
Changed config files                                   : 03/10 ...finished (time 00:00s)
All users                                              : 04/10 ...finished (time 00:00s)
All groups                                             : 05/10 ...finished (time 00:00s)
Service statuses                                       : 06/10 ...finished (time 00:00s)
All installed files                                    : 07/10 ...finished (time 00:00s)
All local files                                        : 08/10 ...finished (time 00:00s)
All executable files                                   : 09/10 ...finished (time 00:00s)
Red Hat signed packages                                : 10/10 ...finished (time 00:00s)
Assessment of the system, running checks / SCE scripts:
001/006 ...done    (Grub 2) (time: 00:00s)
002/006 ...done    (mysql to mariadb) (time: 00:00s)
003/006 ...done    (Extras provide packages) (time: 00:00s)
004/006 ...done    (Python Native Packages) (time: 00:02s)
005/006 ...done    (Release Lock) (time: 00:00s)
006/006 ...done    (SoName drift) (time: 00:00s)
The assessment finished (time 00:03s)
Result table with checks and their results for 'main contents':
--------------------------------------------------
|Grub 2                       |notapplicable     |
|mysql to mariadb             |notapplicable     |
|Extras provide packages      |informational     |
|Release Lock                 |informational     |
|SoName drift                 |informational     |
|Python Native Packages       |needs_inspection  |
--------------------------------------------------
The tarball with results is stored in '/root/preupgrade-results/preupg_results-190311040320.tar.gz' .
The latest assessment is stored in the '/root/preupgrade' directory.
Summary information:
We have found some potential risks.
Read the full report file '/root/preupgrade/result.html' for more details.
Please ensure you have backed up your system and/or data
before doing a system upgrade to prevent loss of data in
case the upgrade fails and full re-install of the system
from installation media is needed.
Upload results to UI by the command:
e.g. preupg -u http://example.com:8099/submit/ -r /root/preupgrade-results/preupg_results-190311040320.tar.gz .

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

診断の結果

/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.