はじめに
現在の Ansible Automation Platform の ライフサイクルが示されたページに、ansible-core の各バージョンとサポートされるバージョンや、サポートされるマネージドノードのOS (Supported Managed OS (RHEL))が表にまとまっています。
Python や PowerShell のバージョンの対応までの情報であれば、コミュニティのドキュメントにもまとまっています。私が把握している限り、マネージドノードのOS(RHEL)の情報は AAP ドキュメント独自の情報です。
2025/08/06 時点の情報では ansible-core 2.16 では RHEL 7 – 10 ですが、2.17 では RHEL 9 – 10 となっていています。

このことから「 ansible-core 2.17 では RHEL 8 のマネージドノードをサポートしていない」と読み取っていました。この点について、以前からなんでだろうと思っていました。
最近、別件で調べていたこととこの件が繋がった(と思う)ので、私が推察したことをまとめておきます。
推察
まず、ansible-core 2.16 のマネージノードでサポートされる Python は 2.7, 3.6 – 3.12 で、ansible-core 2.17 では 3.7 – 3.12 です。
ansible-core 2.17 では Python 3.6 がサポートされていないので Python 3.7 以上を利用する必要があります。普通に考えれば、RHEL 8 であっても Python 3.7 以上をインストールすればいいじゃんて話になると思います。
困るのが ansible.builtin.dnf モジュールです。このモジュールは Python のバインディングが必要です。しかし、RHEL 8向けには DNF のPython バインディングが Python 3.6 用までしか用意されていません。
The python38 and python39 modules and the python3.11 and python3.12 package suites do not include the same bindings to system tools (RPM, DNF, SELinux, and others) that are provided for the python36 module.
これがネックで、ansible-core 2.17 のマネージドノードのサポートに RHEL8 がないのかなと思っています。
おそらく ansible.builtin.ping のような他の ansible.builtin のモジュールは、RHEL 8 + Python 3.8 なマネージドノードに ansible-core 2.17 が使える気もする(未検証)のですが、組み込みのモジュールである ansible.builtin.dnf が動かないのであれば、動くとは言えないって話なのかなと。
私なりにまとめますと・・
- ansible-core 2.17 のマネージドノードの Python バージョン要件が 3.7 – 3.12
- しかし
ansible.builtin.dnfの動作に必要な Python バインディングは、RHEL 8 向けには、Python 3.6 までしか用意されていない - 結果的に、ansible-2.17 では マネージドノードとして RHEL 8 はサポートされない
なにか指摘などありましたら、@akira6592 までご連絡いただけるとありがたいです。