RHEL8.xでSystems Manager Patch Managerのスキャンに失敗する問題に対応する

2021.12.09

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

いわさです。

EC2でRHEL8を用意し、SSMエージェントをセットアップしました。
その後パッチマネージャーを実行してみるとスキャンに失敗しました。

単純な問題ですが、いざパッチマネージャーを使おうとしたタイミングで潜在していた問題に気づく方がいるかもしれないので共有を兼ねて投稿します。

SSMエージェントインストール

RHELではSSMエージェントがデフォルトでインストールされていません。
なのでEC2作成時にエージェントをインストールする必要があります。

以下のリサリサさんの記事が参考になります。

無事Systems Managerにインスタンスが認識されるようになりました。
めでたしめでたし。

パッチマネージャーでスキャンする

SSMエージェントがインストールされフリートマネージャーで認識されたので、これでSystems Managerの機能をフル活用していけるぞと思っていました。
パッチマネージャーで、パッチスキャンを行ってみます。

/usr/bin/yum

/usr/bin/dnf

An unsupported package manager and python version combination was found.

Dnf requires Python2 or Python3 to be installed.

Python3=1, Python2=1, Yum=0, Apt=1, Zypper=1, Dnf=0

Exiting...

失敗してしまいました。

Pythonがない...

RHEL8.x AMIでは明示的にPythonインストールが必要

以下のirbbbさんの記事が参考になります。
RHEL8系ではユーザー向けPythonは明示的にセットアップが必要とのこと。

ちなみに私が今回使用したマシンイメージは以下です。

Red Hat Enterprise Linux 8 (HVM), SSD Volume Type - ami-0bccc42bba4dedac1 (64 ビット x86) / ami-0cdc4f61f73af4679 (64 ビット Arm)

たしかに、インストールされていませんでした。

sh-4.4$ python
sh: python: command not found
sh-4.4$ python2
sh: python2: command not found
sh-4.4$ python3
sh: python3: command not found
sh-4.4$

インストールします。
先程引用させて頂いた記事内ではAppStreamを利用しましょうとの記載があります。
この記事では便宜上yumインストールしていますのでご注意ください。

sh-4.4$ sudo yum install python3
...
Complete!
sh-4.4$

インストールしたので、もう一度パッチマネージャーからスキャンしてみます。

今度は成功しました。

余談

余談ですが、Systems Managerのドキュメントでは以前まで「マネージドインスタンス」と呼ばれていたものが、「マネージドノード」という呼び方に変わったそうですよ。
これは先日のre:InventにてAWS IoT GreengrassがSSM対応したことで統一されたそうです。

November 29, 2021
With support for AWS IoT Greengrass core devices, the phrase managed instance has been changed to managed node in most of the Systems Manager documentation. The Systems Manager console, API calls, error messages, and SSM documents still use the term instance.

Document history - AWS Systems Manager

まとめ

今回は、RHEL8.4のEC2インスタンスでパッチマネージャーのスキャンを実施出来るようにしてみました。

SSMエージェントがインストールされフリートが認識され、セッションマネージャーもRun Commandも使えるということで他の機能も当然使えるだろうと油断していました。
AWSのドキュメント上もプロキシ環境下でのPythonセットアップについては触れられているのですが、RHEL8.xの場合通常のAMIでも必須ということで、覚えておきましょう。