はじめに
AWSのリリース情報を眺めていたら、以下のようなものを見つけました。
「AWS LinuxからAWS Linux 2に移行する際に問題になりそうな非互換性をチェックして、レポートにしてくれるツールができたよ」ということだそうです。
AWS Linuxのセキュリティアップデートは2020年6月末に終わってしまいますので、少なくともそれまでには移行を終える必要があります。しかし、現時点ではAmazon LinuxからAmazon Linux 2にインプレースアップグレードすることはできません。Amazon Linux 2インスタンスを立てて、そこにAmazon Linuxからアプリケーションを移設することになります。そこで気になるのは互換性、ということで、この「プレアップグレードアシスタント」の出番のようです。もしかしてかなり便利なツールなのでは?と期待に胸を躍らせつつ、Amazon Linuxのインスタンスを作成して動かしてみることにしました。
プレアップグレードアシスタントのインストール
まずはインスタンスにプレアップグレードアシスタントをインストールします。Amazon LinuxのEC2インスタンスにログインして、以下のコマンドを実行します。
1 |
sudo yum install -y preupgrade-assistant preupgrade-assistant-al1toal2 |
プレアップグレードアシスタントの実行
以下のコマンドでプレアップグレードアシスタントを実行します。
1 2 3 4 5 6 7 |
sudo preupg [ec2-user@ip-10-0-10-100 ~]$ sudo preupg The Preupgrade Assistant is a diagnostics tool and does not perform the actual upgrade. Do you want to continue? [Y/n] |
最初に「このツールは分析するだけで、アップデートは実行しないけど、いい?(意訳)」と聞いてくるので、Yを押しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Gathering logs used by the Preupgrade Assistant: All installed packages : 01/10 ...finished (time 00:00s) All changed files : 02/10 ...finished (time 00:29s) 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:01s) All local files : 08/10 ...finished (time 00:02s) 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:03s) 005/006 ...done (Release Lock) (time: 00:00s) 006/006 ...done (SoName drift) (time: 00:00s) The assessment finished (time 00:04s) |
ここは進捗が表示されているだけなので、無視して構いません。次からが結果です。
1 2 3 4 5 6 7 8 9 |
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 | -------------------------------------------------- |
こちらが結果の「超」概要です。後で詳細を確認します。
結果の見方についてはこちら。
- PASS =非互換性や問題は検出されない
- FAIL =管理者による確認が必要な非互換性/問題が検出された
- FIXED =非互換性が検出されましたが、アップグレード前アシスタントは可能でした
- INFORMATIONAL =管理者向けの情報があると便利です(例:削除されたオプション)
- NOT_APPLICABLE =チェックによってテストされることになっていたパッケージがインストールされていなかった
- NEEDS_INSPECTION=調査が必要(自分で調べてね、ということ)
1 2 |
The tarball with results is stored in '/root/preupgrade-results/preupg_results-190329100451.tar.gz' . The latest assessment is stored in the '/root/preupgrade' directory. |
レポートの結果の保存先です。後でこれを作業用端末にダウンロードして結果を確認します。
1 2 3 |
Summary information: We have found some potential risks. Read the full report file '/root/preupgrade/result.html' for more details. |
レポートの詳細は/root/preupgrade/result.htmlを見てね、だそうです。
1 2 3 4 |
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. |
この辺りは注意書きです。アップデートするときにはちゃんとバックアップしておいてね云々。この説明書きだけ見たらコマンド一発でAmazon Linux 2にバージョンアップできそうですが、できません。
1 2 |
Upload results to UI by the command: e.g. preupg -u http://example.com:8099/submit/ -r /root/preupgrade-results/preupg_results-190329100451.tar.gz . |
最後はレポートの詳細をWebで見れるようにするコマンドが記載されています。
レポート(詳細)の確認
preupgで生成した詳細なレポートを確認します。先程のレポートの詳細ファイルの場所を再度確認します。
1 |
The tarball with results is stored in '/root/prepgrade-results/preupg_results-190329100451.tar.gz' このファイルをローカルPCにダウンロードして解凍し、フォルダの中にある result.html をブラウザで開きます。 |
ここにあるファイルを作業用端末にダウンロード、解凍し、中にある「result.html」を適当なブラウザで開きます。英語読むのに抵抗がある人はresult.htmlをChromeで開いて右クリック→「日本語に翻訳」するといい感じの日本語になるので試してみてください。
さて、レポートの画面はこんな感じです。
内容は以下の通りです。
Preupgrade Assistant analysis report
このレポートの説明です。読み飛ばします。
Evaluation Characteristics
preupgを実行したEC2インスタンスの情報や、実行日時等の情報です。
Compliance and Scoring
結果について採点してくれます。この画面では「There were no failed or uncertain rules. It seems that no action is necessary.」ということで、(アップグレードにあたって)特に何もしなくていいよと言ってくれていますが、ここは読み飛ばします。
Rule Overview
ここからが重要なところです。
preupgがどのようなルールでAmazon Linuxの設定をチェックし、どんな結果がでたかの詳細を確認できます。
2019年3月現在、6つのルールが登録されています。
- Grub 2
- mysql to mariadb
- Extras provide packages
- Python Native Packages
- Release Lock
- SoName drift
先程、コンソールでpreupgを実行した時にも表示されていましたね。ルール名がリンクになっている箇所をクリックします。試しに「Extras provide packages(追加パッケージ)」をクリックしてみます。
結果が出てきました。
注目するのは「Description」「Remediation description」です。Amazon LinuxからAmazon Linux 2にアップグレードする際に何が問題になるのか、どうすればいいのかが書いてあります。この例だと、リストされているパッケージはAmazon Linux 2では標準パッケージではなく、Extraパッケージになっているということです。(補足:yumでなくamazon-linux-extrasでインストール、管理することになります。)なるほど、これは影響ありそうですね!他のルールのチェック結果も、このように「アップグレードの際に何が問題になりそうか」が分かるようになっています。
あらら…
Amazon Linux 2ではMySQLが標準パッケージから削除され、代わりにMariaDBが追加されています。インスタンスにMySQLがインストールされていればpreupgの「mysql to mariadb」ルールで検知されるかな?と思い、yumでMySQLをインストールしておいたのですが、preupgを実行して結果を確認したところ「notapplicable」となっていました。
ログにはpreupg.log.INFO: Package mysql is not installed or it is not signed by Red Hat.と。同様のログがGrub 2のルールチェック結果にも出ています。何故かまでは追えていません。むむむ。
結局このツールってどれくらい使えるの?
今のところはチェックするルールが6つしかありません。
- Grub2の設定が引き継げないことがある
- MySQLはMariaDBになる
- PythonのpipパッケージはAmazon Linuxで管理していないので調査が必要
- 標準パッケージからAmazon Linux Extrasに移行されるパッケージがある
- yumで、マイナーリリース指定(–releasever=X.Y)ができなくなる
- 古いバージョンのライブラリファイルがなくなる影響があるかもしれない
そもそもルールが少ないのと、チェックしてくれる内容も細かくないので、「preupgでチェックすれば大丈夫!」とは言い切れません。まだ発表から1ヶ月も経っていないので、もしかしたら今後ルールが追加されたり改良されたりしていく…かもしれませんが、現時点では頼りないなというのが正直なところです。これだったらツールがなくても…いや、でもAmazon Linux Extrasになるパッケージのチェックは便利です、はい。
おわりに
ツールの有無に関わらずAmazon LinuxからAmazon Linux 2にアップグレードする際には、十分に気を付けましょう!(自戒を込めて)
執筆者プロフィール

- tdi デジタルイノベーション技術部
- 開発プロジェクトの技術支援や技術の検証に従事しているインフラエンジニアです。Unix/Linuxを扱う機会が多く、構築から運用保守まで一通り携わった経験があります。好きな言葉は「試験運用」。
この執筆者の最新記事
Pick UP!2022.03.15AWSのプライベートサブネットからSES経由でメールを送信する
Pick UP!2020.10.19AWS認定試験の専門知識(セキュリティ・高度なネットワーキング)に合格する方法
Pick UP!2020.03.23AWS認定試験を6冠するための受験順と勉強法
AWS・クラウド2019.10.23AWS 認定ソリューションアーキテクト – プロフェッショナルの新試験に合格した話