AWS-RunPatchBaselineでdnf.confのexcludeは効いている?

AWS Systems ManagerのPatch Managerを利用して、RHELのパッチ適用を検証していたところ、気になるAWS公式ドキュメントの記載を見つけました。

 

AWSのトラブルシューティングには、/etc/yum.confexclude=package-nameを指定しても、Patch ManagerのInstallではパッケージが除外されないと記載されています。

 

一方、今回利用しているOSはRHEL 9です。

 

そこで、RHEL 9の/etc/dnf/dnf.confexclude=kernel*を設定した場合、AWS-RunPatchBaselineのScan、Installではどのような動作になるのか実際に試してみました。

 

今回の記事では、AWS-RunPatchBaselineでdnf.confのexcludeは効いているのか検証した結果を紹介します。

 

 

AWS-RunPatchBaselineでdnf.confのexcludeが効くか検証

■AWS公式ドキュメントの記載

AWSのPatch Managerトラブルシューティングには、次の内容が記載されています。

 

 

/etc/yum.confexclude=package-nameを指定しても、Patch ManagerのInstallでは対象パッケージは除外されません。

 

原因は、Patch Managerが/etc/yum.confで指定された除外項目を取り込まないためです。

 

特定のパッケージを除外したい場合は、カスタムパッチベースラインを作成し、Patch Baseline側で除外する方法が案内されています。

 

今回はRHEL 9なので、/etc/dnf/dnf.confで検証してみます。

 

 

■exclude設定前の状態を確認

まず、excludeを設定していない状態でAWS-RunPatchBaselineのScanを実行しました。

 

その後、AWS CLIからState=Missingのパッチを取得します。

aws ssm describe-instance-patches \
  --instance-id i-xxxxxxxxxxxxxxxxx \
  --filters Key=State,Values=Missing

 

kernel関連では、以下のパッケージがMissingとして検出されました。

kernel.x86_64:0:5.14.0-687.44.1.el9_8
kernel-core.x86_64:0:5.14.0-687.44.1.el9_8
kernel-modules.x86_64:0:5.14.0-687.44.1.el9_8
kernel-modules-core.x86_64:0:5.14.0-687.44.1.el9_8
kernel-tools.x86_64:0:5.14.0-687.44.1.el9_8
kernel-tools-libs.x86_64:0:5.14.0-687.44.1.el9_8

 

AWSではMISSINGを、Patch Baselineで承認されているものの、マネージドノードにインストールされていないパッチとしています。

 

AWS-RunPatchBaselineScanで実行した場合、Scanで検出された未インストールのパッチがMISSINGとして報告されます。

 

 

■dnf.confにexcludeを追加

続いて、/etc/dnf/dnf.confに以下を追加しました。

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
exclude=kernel*

 

 

この状態でもう一度AWS-RunPatchBaselineのScanを実行します。

 

その後、再度AWS CLIで確認しました。

aws ssm describe-instance-patches \
  --instance-id i-xxxxxxxxxxxxxxxxx \
  --filters Key=State,Values=Missing

 

すると、それまでMissingだったkernel関連パッケージが一覧から消えました。

 

今回のRHEL 9環境では、/etc/dnf/dnf.confにexcudeとしてkernel*を記載すると、Missingとして検出されない

 

という結果になりました。

 

 

■Installでもkernelが除外されるか確認

次に、exclude=kernel*を残した状態でAWS-RunPatchBaselineInstallを実行しました。

 

まず、実行前のkernelを保存します。

rpm -qa 'kernel*' | sort > /tmp/kernel-before.txt

 

実行前は以下の状態でした。

kernel-5.14.0-503.15.1.el9_5.x86_64
kernel-core-5.14.0-503.15.1.el9_5.x86_64
kernel-modules-5.14.0-503.15.1.el9_5.x86_64
kernel-modules-core-5.14.0-503.15.1.el9_5.x86_64
kernel-tools-5.14.0-503.15.1.el9_5.x86_64
kernel-tools-libs-5.14.0-503.15.1.el9_5.x86_64

 

AWS-RunPatchBaselineInstall実行後、再度取得します。

rpm -qa 'kernel*' | sort > /tmp/kernel-after.txt

 

結果は以下でした。

kernel-5.14.0-503.15.1.el9_5.x86_64
kernel-core-5.14.0-503.15.1.el9_5.x86_64
kernel-modules-5.14.0-503.15.1.el9_5.x86_64
kernel-modules-core-5.14.0-503.15.1.el9_5.x86_64
kernel-tools-5.14.0-503.15.1.el9_5.x86_64
kernel-tools-libs-5.14.0-503.15.1.el9_5.x86_64

前後の差分も確認します。

diff /tmp/kernel-before.txt /tmp/kernel-after.txt

 

差分はありませんでした。

 

つまり、今回の環境ではAWS-RunPatchBaselineInstallを実行しても、kernelは更新されませんでした。

 

 

■更新可能なkernelが存在することも確認

念のため、"そもそも更新可能なkernelが存在しなかったのではないか"という点も確認しました。

 

DNFのexcludeを一時的に無効化して、更新候補を確認します。

dnf --disableexcludes=all check-update 'kernel*'

 

結果は以下です。

Last metadata expiration check: 1:36:12 ago on Fri 04 Sep 2026 06:58:33 AM UTC.

kernel.x86_64                                                5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms
kernel-core.x86_64                                           5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms
kernel-modules.x86_64                                        5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms
kernel-modules-core.x86_64                                   5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms
kernel-tools.x86_64                                          5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms
kernel-tools-libs.x86_64                                     5.14.0-687.44.1.el9_8                                   rhel-9-baseos-rhui-rpms

 

5.14.0-687.44.1.el9_8が更新候補として存在することを確認できました。

 

そのため今回の検証結果は、次のように整理できます。

検証内容 結果
excludeなしでScan kernelがMissingとして検出された
exclude=kernel*でScan kernelがMissingから消えた
exclude=kernel*でInstall kernelは更新されなかった
--disableexcludes=allで確認 新しいkernelが更新候補として存在した

 

 

■AWS公式ドキュメントとの違いについて

AWSのトラブルシューティングでは、/etc/yum.confexcludeはPatch ManagerのInstallでは取り込まれないと記載されています。

 

一方、今回検証したのはRHEL 9の/etc/dnf/dnf.confです。

 

今回の実機検証では、

  • ScanでkernelがMissingとして検出されなかった
  • Installでもkernelが更新されなかった
  • excludeを無効化すると更新可能なkernelが存在した

 

という結果になりました。

 

そのため、少なくとも今回検証したRHEL 9環境では、/etc/dnf/dnf.confexclude=kernel*AWS-RunPatchBaselineのScanとInstallの両方に影響することを確認できました。

 

ただし、この結果だけでAWS公式ドキュメントの誤りや、Patch Managerの仕様変更と判断することはできません。

 

AWSがPatch Managerで特定パッケージを除外する方法として案内しているのは、現在もカスタムPatch Baselineを利用する方法です。

 

 

まとめ

今回は、RHEL 9の/etc/dnf/dnf.confexclude=kernel*を設定し、AWS-RunPatchBaselineのScanとInstallでkernelが除外されるか検証しました。

 

AWS公式ドキュメントには、/etc/yum.confのexcludeはPatch ManagerのInstallでは取り込まれないと記載されています。

 

しかし、今回検証したRHEL 9環境では、/etc/dnf/dnf.confexclude=kernel*を設定すると、ScanでkernelがMissingとして検出されず、Installでもkernelは更新されませんでした。

 

AWS公式ドキュメントの記載とは条件が異なるため単純比較はできませんが、RHEL 9でPatch Managerを利用する際には、DNF側のexclude設定がパッチ適用結果に影響する可能性がある点は注意した方がよさそうです。

 

参考サイトリンク:AWS公式ドキュメント

 

↓ほかの協栄情報メンバーもAWS Systems Managerに関する記事を公開しています。ぜひ参考にしてみてください。

 

AWS-RunPowerShellScriptからPythonを実行できなかったときの対応方法(齊藤弘樹)

 

AWS CLIでSSMドキュメント作成時に「text contents could not be decoded」が出たときの解決策(Windows)(齊藤弘樹)

 

SSM Run CommandでWindows Server 2025にCloudWatch Agentをインストール&起動(齊藤弘樹)

 

 

 

Last modified: 2026-09-04

Author