Original Message:
Sent: Wed December 06, 2023 08:34 AM
From: Stephan Dietl
Subject: dnf works, but unable to import dnf python module
Hello!
I´ve opened https://github.com/ansible/ansible/issues/82365 for that!
Ciao,
Steve
------------------------------
Stephan Dietl
Original Message:
Sent: Wed December 06, 2023 07:12 AM
From: Stephan Dietl
Subject: dnf works, but unable to import dnf python module
Hello!
Answering myself here, I´ve now found another posting where my problem is described:
https://community.ibm.com/community/user/power/discussion/issue-with-dnf-and-python-and-ansible
It seems that so far no Issue has been raised on the Ansible Github page, I´ll have a look how to do that :) but also CC: to @Christophe Gehin and @Ayappan P just in case!
Thanks,
With kind regards,
Steve
------------------------------
Stephan Dietl
Original Message:
Sent: Tue December 05, 2023 07:59 AM
From: Stephan Dietl
Subject: dnf works, but unable to import dnf python module
Hello @Alexander Reichle-Schmehl ! CC: @Andrey Klyachkin (because you helped me as well with https://community.ibm.com/community/user/power/discussion/ansible-and-dnf , thanks for that!)
Thanks for the information, I´ve had the same issue and solved it via the libexec entry.
What still doesn´t work is actually installing a package, because I get:
- name: If not installed or upgradeable, install or upgrade, even with dependencies!
ansible.builtin.dnf:
name: rsync
conf_file: /opt/freeware/etc/dnf/dnf.conf
update_only: false
validate_certs: false
state: latest
update_cache: true
-->
failed: {
"changed": false,
"failures": [
"No package rsync available."
],
"msg": "Failed to install some of the specified packages",
"rc": 1,
"results": []
}
When I do it via ansible.builtin.shell it works:
done | stdout: Last metadata expiration check: 0:19:53 ago on Tue Dec 5 13:09:25 MET 2023.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
rsync ppc 3.2.7-1 AIX_Toolbox 867 k
Installing dependencies:
lz4 ppc 1.9.3-1 AIX_Toolbox 390 k
Transaction Summary
================================================================================
Install 2 Packages
Total download size: 1.2 M
Installed size: 3.3 M
Downloading Packages:
(1/2): lz4-1.9.3-1.aix6.1.ppc.rpm 273 kB/s | 390 kB 00:01
(2/2): rsync-3.2.7-1.aix7.1.ppc.rpm 469 kB/s | 867 kB 00:01
--------------------------------------------------------------------------------
Total 678 kB/s | 1.2 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : lz4-1.9.3-1.ppc 1/2
Installing : rsync-3.2.7-1.ppc 2/2
Running scriptlet: rsync-3.2.7-1.ppc 2/2
rsync version effective # 3.2.7 default rsync daemon config is now /opt/freeware/etc/rsyncd.conf
Verifying : lz4-1.9.3-1.ppc 1/2
Verifying : rsync-3.2.7-1.ppc 2/2
Installed:
rsync-3.2.7-1.ppc lz4-1.9.3-1.ppc
Complete!
What am I doing wrong :D ?
Thanks,
with kind regards,
Steve
------------------------------
Stephan Dietl
Original Message:
Sent: Thu November 23, 2023 03:53 AM
From: Alexander Reichle-Schmehl
Subject: dnf works, but unable to import dnf python module
Thanks for the hint!
While I was about to reply, that we are using AIX 7.2 and have no other python intepreter installed (yet) and we do set the python interpreter to the one in /opt/freeware we seem to run in the 64/32 bit python issue also discussed here before.
So, for AIX 7.2 setting the python inteprter to /opt/freeware/bin/python3 will use the 64 bit pythoin version. Using /opt/freeware/libexec/python3 sets it to the 32 bit version, which does work with the dnf modul!
So this one doesn't work:

But this one does:

Many thanks again!
------------------------------
Alexander Reichle-Schmehl
Original Message:
Sent: Wed November 22, 2023 10:39 AM
From: Mario
Subject: dnf works, but unable to import dnf python module
Ah, the duelling python problem. dnf requires the ansible_interpreter to be /opt/freeware/bin/python3. So everytime you call the dnf module, you have to tell it which interpreter to use. In this exampe using your code, I've added a conditional variable which uses the release of AIX to decide which one to point to.
name: Install the latest version of our standard tools ansible.builtin.dnf: conf_file: /opt/freeware/etc/dnf/dnf.conf name: - sudo state: latest vars: ansible_python_interpreter: "{{ '/opt/freeware/bin/python3' if ansible_distribution_version == '7.3' else '/opt/freeware/libexec/python3' }}"
You can check if your python has the dnf module like this:
root@aix73host# /usr/bin/python3Python 3.9.18 (main, Sep 19 2023, 04:57:07)[GCC 10.3.0] on aixType "help", "copyright", "credits" or "license" for more information.>>> import dnfTraceback (most recent all last): File "<stdin>", line 1, in <module>ModuleNotFoundError: No module named 'dnf'>>> <ctrl-d> to exitroot@aix73host# /opt/freeware/bin/python3Python 3.9.18 (main, Sep 19 2023, 04:57:07)[GCC 10.3.0] on aixType "help", "copyright", "credits" or "license" for more information.>>> import dnf>>> <ctrl-d> to exit
------------------------------
Mario
Original Message:
Sent: Wed November 22, 2023 09:32 AM
From: Alexander Reichle-Schmehl
Subject: dnf works, but unable to import dnf python module
Hi!
I recently installed dnf on several AIX 7.2 servers using the power_aix_bootstrap ansible role as follows:
- import_role:
name: power_aix_bootstrap
vars:
pkgtype: "dnf"
download_dir: "~"
target_dir: "/tmp/.ansible.cpdir"
environment:
https_proxy: http://{{ AIX_Package_Proxy_User }}:{{ AIX_Package_Proxy_Pass }}@osde01proxy:8080/
In a second step we add the the proxy configuration to the dnf.conf. And in it seems to work. From the command line I have no issues running dnf. For example here a screenshot of dnf installing sudo.

However, what does not work is installing packages via the dnf ansible module. I tried the following:
name: Install the latest version of our standard tools
ansible.builtin.dnf:
conf_file: /opt/freeware/etc/dnf/dnf.conf
name:
- sudo
state: latest
environment:
PATH: /opt/freeware/bin:{{ ansible_env.PATH }}
That results in the following:

t seems, that python can't import the dnf module:

I found DNF failed to run on AIX 7.2 , installing libggc8 and libstdc++8 didn't solve my problems. I see in the failed ansible output, recommends to verify the output of dump -Tv, but that doesn't tell me much.
Any ideas on how to solve that problem?
Best regards,
Alexander
------------------------------
Alexander Reichle-Schmehl
------------------------------