RHEL8.xでSystems Manager Patch Managerのスキャンに失敗する問題に対応する
いわさです。
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でも必須ということで、覚えておきましょう。