diff --git a/ansible/dnf.yml b/ansible/dnf.yml
index 3a106c13f603fc2ec02aa601e30c5eb38676d97e..c31ed272c0806d0a2815869be40fe91fe4167b89 100644
--- a/ansible/dnf.yml
+++ b/ansible/dnf.yml
@@ -1,6 +1,8 @@
 ---
 - name: Ensure DNF repos are configured
   hosts: seed-hypervisor:seed:overcloud
+  vars:
+    ansible_python_interpreter: /usr/libexec/platform-python
   tags:
     - dnf
   tasks:
diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py
index b4a2a60095343c5005af88ef376df2e32126842c..011e8f2c000f08a6de60d29e9664878da49f5ba4 100644
--- a/kayobe/cli/commands.py
+++ b/kayobe/cli/commands.py
@@ -406,11 +406,11 @@ class SeedHypervisorHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin,
     * Allocate IP addresses for all configured networks.
     * Add the host to SSH known hosts.
     * Configure a user account for use by kayobe for SSH access.
+    * Configure package repos.
+    * Configure a PyPI mirror.
     * Optionally, create a virtualenv for remote target hosts.
     * Optionally, wipe unmounted disk partitions (--wipe-disks).
     * Configure user accounts, group associations, and authorised SSH keys.
-    * Configure a PyPI mirror.
-    * Configure package repos.
     * Configure the host's network interfaces.
     * Set sysctl parameters.
     * Configure timezone.
@@ -448,11 +448,11 @@ class SeedHypervisorHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin,
 
         playbooks = _build_playbook_list(
             "ssh-known-host", "kayobe-ansible-user",
-            "pip", "kayobe-target-venv")
+            "dnf", "pip", "kayobe-target-venv")
         if parsed_args.wipe_disks:
             playbooks += _build_playbook_list("wipe-disks")
         playbooks += _build_playbook_list(
-            "users", "dnf", "dev-tools", "network", "sysctl", "timezone",
+            "users", "dev-tools", "network", "sysctl", "timezone",
             "mdadm", "luks", "lvm", "seed-hypervisor-libvirt-host")
         self.run_kayobe_playbooks(parsed_args, playbooks,
                                   limit="seed-hypervisor")
@@ -560,11 +560,11 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
     * Allocate IP addresses for all configured networks.
     * Add the host to SSH known hosts.
     * Configure a user account for use by kayobe for SSH access.
+    * Configure package repos.
+    * Configure a PyPI mirror.
     * Optionally, create a virtualenv for remote target hosts.
     * Optionally, wipe unmounted disk partitions (--wipe-disks).
     * Configure user accounts, group associations, and authorised SSH keys.
-    * Configure a PyPI mirror.
-    * Configure package repos.
     * Disable SELinux.
     * Configure the host's network interfaces.
     * Set sysctl parameters.
@@ -599,11 +599,11 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
         # Run kayobe playbooks.
         playbooks = _build_playbook_list(
             "ssh-known-host", "kayobe-ansible-user",
-            "pip", "kayobe-target-venv")
+            "dnf", "pip", "kayobe-target-venv")
         if parsed_args.wipe_disks:
             playbooks += _build_playbook_list("wipe-disks")
         playbooks += _build_playbook_list(
-            "users", "dnf", "dev-tools", "disable-selinux", "network",
+            "users", "dev-tools", "disable-selinux", "network",
             "sysctl", "ip-routing", "snat", "disable-glean", "timezone",
             "mdadm", "luks", "lvm", "docker-devicemapper",
             "kolla-ansible-user", "kolla-pip", "kolla-target-venv")
@@ -931,11 +931,11 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
     * Allocate IP addresses for all configured networks.
     * Add the host to SSH known hosts.
     * Configure a user account for use by kayobe for SSH access.
+    * Configure package repos.
+    * Configure a PyPI mirror.
     * Optionally, create a virtualenv for remote target hosts.
     * Optionally, wipe unmounted disk partitions (--wipe-disks).
     * Configure user accounts, group associations, and authorised SSH keys.
-    * Configure a PyPI mirror.
-    * Configure package repos.
     * Disable SELinux.
     * Configure the host's network interfaces.
     * Set sysctl parameters.
@@ -968,11 +968,11 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
         # Kayobe playbooks.
         playbooks = _build_playbook_list(
             "ssh-known-host", "kayobe-ansible-user",
-            "pip", "kayobe-target-venv")
+            "dnf", "pip", "kayobe-target-venv")
         if parsed_args.wipe_disks:
             playbooks += _build_playbook_list("wipe-disks")
         playbooks += _build_playbook_list(
-            "users", "dnf", "dev-tools", "disable-selinux", "network",
+            "users", "dev-tools", "disable-selinux", "network",
             "sysctl", "disable-glean", "disable-cloud-init", "timezone",
             "mdadm", "luks", "lvm", "docker-devicemapper",
             "kolla-ansible-user", "kolla-pip", "kolla-target-venv")
diff --git a/kayobe/tests/unit/cli/test_commands.py b/kayobe/tests/unit/cli/test_commands.py
index 8293fcf6fac4491049a614fc29e6985136709546..aebb7edf3d1e8248043139709c72b730dad6481c 100644
--- a/kayobe/tests/unit/cli/test_commands.py
+++ b/kayobe/tests/unit/cli/test_commands.py
@@ -317,11 +317,11 @@ class TestCase(unittest.TestCase):
                     utils.get_data_files_path("ansible", "ssh-known-host.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-ansible-user.yml"),
+                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "pip.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-target-venv.yml"),
                     utils.get_data_files_path("ansible", "users.yml"),
-                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "dev-tools.yml"),
                     utils.get_data_files_path("ansible", "network.yml"),
                     utils.get_data_files_path("ansible", "sysctl.yml"),
@@ -485,11 +485,11 @@ class TestCase(unittest.TestCase):
                     utils.get_data_files_path("ansible", "ssh-known-host.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-ansible-user.yml"),
+                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "pip.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-target-venv.yml"),
                     utils.get_data_files_path("ansible", "users.yml"),
-                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "dev-tools.yml"),
                     utils.get_data_files_path(
                         "ansible", "disable-selinux.yml"),
@@ -1003,11 +1003,11 @@ class TestCase(unittest.TestCase):
                     utils.get_data_files_path("ansible", "ssh-known-host.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-ansible-user.yml"),
+                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "pip.yml"),
                     utils.get_data_files_path(
                         "ansible", "kayobe-target-venv.yml"),
                     utils.get_data_files_path("ansible", "users.yml"),
-                    utils.get_data_files_path("ansible", "dnf.yml"),
                     utils.get_data_files_path("ansible", "dev-tools.yml"),
                     utils.get_data_files_path(
                         "ansible", "disable-selinux.yml"),
diff --git a/releasenotes/notes/bugfix-dnf-proxy-cd934867c3d64388.yaml b/releasenotes/notes/bugfix-dnf-proxy-cd934867c3d64388.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e4e60d235d07dce31a4382f31d2e42810f758be4
--- /dev/null
+++ b/releasenotes/notes/bugfix-dnf-proxy-cd934867c3d64388.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fix an issue when dnf proxy is set and python3-pip package fails during
+    host configure.