Amazon Linux 2 へのプレアップグレードアシスタントを使ってみた

Pocket

はじめに

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インスタンスにログインして、以下のコマンドを実行します。

プレアップグレードアシスタントの実行

以下のコマンドでプレアップグレードアシスタントを実行します。

最初に「このツールは分析するだけで、アップデートは実行しないけど、いい?(意訳)」と聞いてくるので、Yを押しましょう。

ここは進捗が表示されているだけなので、無視して構いません。次からが結果です。

こちらが結果の「超」概要です。後で詳細を確認します。

結果の見方についてはこちら。

  • PASS =非互換性や問題は検出されない
  • FAIL =管理者による確認が必要な非互換性/問題が検出された
  • FIXED =非互換性が検出されましたが、アップグレード前アシスタントは可能でした
  • INFORMATIONAL =管理者向けの情報があると便利です(例:削除されたオプション)
  • NOT_APPLICABLE =チェックによってテストされることになっていたパッケージがインストールされていなかった
  • NEEDS_INSPECTION=調査が必要(自分で調べてね、ということ)

レポートの結果の保存先です。後でこれを作業用端末にダウンロードして結果を確認します。

レポートの詳細は/root/preupgrade/result.htmlを見てね、だそうです。

この辺りは注意書きです。アップデートするときにはちゃんとバックアップしておいてね云々。この説明書きだけ見たらコマンド一発でAmazon Linux 2にバージョンアップできそうですが、できません。

最後はレポートの詳細をWebで見れるようにするコマンドが記載されています。

レポート(詳細)の確認

preupgで生成した詳細なレポートを確認します。先程のレポートの詳細ファイルの場所を再度確認します。

ここにあるファイルを作業用端末にダウンロード、解凍し、中にある「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にアップグレードする際には、十分に気を付けましょう!(自戒を込めて)

お問い合わせ先

執筆者プロフィール

Chiba Kumiko
Chiba Kumikotdi IT技術推進部
開発プロジェクトの技術支援や技術の検証に従事しているインフラエンジニアです。Unix/Linuxを扱う機会が多く、構築から運用保守まで一通り携わった経験があります。好きな言葉は「試験運用」。
Pocket

関連記事