diff --git a/ansible/inventory/group_vars/all/ironic b/ansible/inventory/group_vars/all/ironic
index 103d46f54a28d51a05b1f66fd4961bb5ab6d1324..72f26e2f71ee7017e6ff20bccb46f86c5d127523 100644
--- a/ansible/inventory/group_vars/all/ironic
+++ b/ansible/inventory/group_vars/all/ironic
@@ -4,111 +4,92 @@
 
 # Specify the list of hardware types to load during service initialization.
 kolla_ironic_enabled_hardware_types:
-  - ipmi
 
 # Specify the list of bios interfaces to load during service initialization.
 kolla_ironic_enabled_bios_interfaces:
-  - no-bios
 
 # Default bios interface to be used for nodes that do not have bios_interface
 # field set.
-kolla_ironic_default_bios_interface: no-bios
+kolla_ironic_default_bios_interface:
 
 # Specify the list of boot interfaces to load during service initialization.
 kolla_ironic_enabled_boot_interfaces:
-  - ipxe
-  - pxe
 
 # Default boot interface to be used for nodes that do not have boot_interface
 # field set.
-kolla_ironic_default_boot_interface: ipxe
+kolla_ironic_default_boot_interface:
 
 # Specify the list of console interfaces to load during service initialization.
 kolla_ironic_enabled_console_interfaces:
-  - ipmitool-socat
-  - no-console
 
 # Default console interface to be used for nodes that do not have
 # console_interface field set.
-kolla_ironic_default_console_interface: ipmitool-socat
+kolla_ironic_default_console_interface:
 
 # Specify the list of deploy interfaces to load during service initialization.
 kolla_ironic_enabled_deploy_interfaces:
-  - direct
 
 # Default deploy interface to be used for nodes that do not have
 # deploy_interface field set.
-kolla_ironic_default_deploy_interface: direct
+kolla_ironic_default_deploy_interface:
 
 # Specify the list of inspect interfaces to load during service initialization.
 kolla_ironic_enabled_inspect_interfaces:
-  - inspector
-  - no-inspect
 
 # Default inspect interface to be used for nodes that do not have
 # inspect_interface field set.
-kolla_ironic_default_inspect_interface: inspector
+kolla_ironic_default_inspect_interface:
 
 # Specify the list of management interfaces to load during service
 # initialization.
 kolla_ironic_enabled_management_interfaces:
-  - ipmitool
 
 # Default management interface to be used for nodes that do not have
 # management_interface field set.
-kolla_ironic_default_management_interface: ipmitool
+kolla_ironic_default_management_interface:
 
 # Specify the list of network interfaces to load during service initialization.
 kolla_ironic_enabled_network_interfaces:
-  - noop
-  - flat
-  - neutron
 
 # Default network interface to be used for nodes that do not have
 # network_interface field set.
-kolla_ironic_default_network_interface: neutron
+kolla_ironic_default_network_interface:
 
 # Specify the list of power interfaces to load during service initialization.
 kolla_ironic_enabled_power_interfaces:
-  - ipmitool
 
 # Default power interface to be used for nodes that do not have power_interface
 # field set.
-kolla_ironic_default_power_interface: ipmitool
+kolla_ironic_default_power_interface:
 
 # Specify the list of raid interfaces to load during service initialization.
 kolla_ironic_enabled_raid_interfaces:
-  - agent
-  - no-raid
 
 # Default raid interface to be used for nodes that do not have
 # raid_interface field set.
-kolla_ironic_default_raid_interface: no-raid
+kolla_ironic_default_raid_interface:
 
 # Specify the list of rescue interfaces to load during service initialization.
 kolla_ironic_enabled_rescue_interfaces:
-  - agent
-  - no-rescue
 
 # Default rescue interface to be used for nodes that do not have
 # rescue_interface field set.
-kolla_ironic_default_rescue_interface: no-rescue
+kolla_ironic_default_rescue_interface:
 
 # Specify the list of storage interfaces to load during
 # service initialization.
-#kolla_ironic_enabled_storage_interfaces:
+kolla_ironic_enabled_storage_interfaces:
 
 # Default storage interface to be used for nodes that do not
 # have storage_interface field set.
-#kolla_ironic_default_storage_interface:
+kolla_ironic_default_storage_interface:
 
 # Specify the list of vendor interfaces to load during service initialization.
 kolla_ironic_enabled_vendor_interfaces:
-  - no-vendor
 
 # Default vendor interface to be used for nodes that do not have
 # vendor_interface field set.
-kolla_ironic_default_vendor_interface: no-vendor
+kolla_ironic_default_vendor_interface:
 
 # Name of the Neutron network to use for cleaning.
 kolla_ironic_cleaning_network: "{{ kolla_ironic_provisioning_network if cleaning_net_name == provision_wl_net_name else 'cleaning-net' }}"
diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml
index d5527f7d5f3f53c054daf9107567c7f5bc9ecad3..895b1273703ac41b10f2699f18b246e69486d3f1 100644
--- a/ansible/roles/kolla-openstack/defaults/main.yml
+++ b/ansible/roles/kolla-openstack/defaults/main.yml
@@ -457,46 +457,39 @@ kolla_enable_influxdb: false
 # Whether to enable Ironic.
 kolla_enable_ironic: false
 
-# List of enabled Ironic drivers.
-kolla_ironic_drivers:
-  - agent_ssh
-  - agent_ipmitool
-  - pxe_ssh
-  - pxe_ipmitool
-
 # Specify the list of hardware types to load during service initialization.
-kolla_ironic_enabled_hardware_types: []
+kolla_ironic_enabled_hardware_types:
 
 # Specify the list of bios interfaces to load during service initialization.
-kolla_ironic_enabled_bios_interfaces: []
+kolla_ironic_enabled_bios_interfaces:
 
 # Default bios interface to be used for nodes that do not have bios_interface
 # field set.
 kolla_ironic_default_bios_interface:
 
 # Specify the list of boot interfaces to load during service initialization.
-kolla_ironic_enabled_boot_interfaces: []
+kolla_ironic_enabled_boot_interfaces:
 
 # Default boot interface to be used for nodes that do not have boot_interface
 # field set.
 kolla_ironic_default_boot_interface:
 
 # Specify the list of console interfaces to load during service initialization.
-kolla_ironic_enabled_console_interfaces: []
+kolla_ironic_enabled_console_interfaces:
 
 # Default console interface to be used for nodes that do not have
 # console_interface field set.
 kolla_ironic_default_console_interface:
 
 # Specify the list of deploy interfaces to load during service initialization.
-kolla_ironic_enabled_deploy_interfaces: []
+kolla_ironic_enabled_deploy_interfaces:
 
 # Default deploy interface to be used for nodes that do not have
 # deploy_interface field set.
 kolla_ironic_default_deploy_interface:
 
 # Specify the list of inspect interfaces to load during service initialization.
-kolla_ironic_enabled_inspect_interfaces: []
+kolla_ironic_enabled_inspect_interfaces:
 
 # Default inspect interface to be used for nodes that do not have
 # inspect_interface field set.
@@ -504,35 +497,35 @@ kolla_ironic_default_inspect_interface:
 
 # Specify the list of management interfaces to load during service
 # initialization.
-kolla_ironic_enabled_management_interfaces: []
+kolla_ironic_enabled_management_interfaces:
 
 # Default management interface to be used for nodes that do not have
 # management_interface field set.
 kolla_ironic_default_management_interface:
 
 # Specify the list of network interfaces to load during service initialization.
-kolla_ironic_enabled_network_interfaces: []
+kolla_ironic_enabled_network_interfaces:
 
 # Default network interface to be used for nodes that do not have
 # network_interface field set.
 kolla_ironic_default_network_interface:
 
 # Specify the list of power interfaces to load during service initialization.
-kolla_ironic_enabled_power_interfaces: []
+kolla_ironic_enabled_power_interfaces:
 
 # Default power interface to be used for nodes that do not have power_interface
 # field set.
 kolla_ironic_default_power_interface:
 
 # Specify the list of raid interfaces to load during service initialization.
-kolla_ironic_enabled_raid_interfaces: []
+kolla_ironic_enabled_raid_interfaces:
 
 # Default raid interface to be used for nodes that do not have
 # raid_interface field set.
 kolla_ironic_default_raid_interface:
 
 # Specify the list of rescue interfaces to load during service initialization.
-kolla_ironic_enabled_rescue_interfaces: []
+kolla_ironic_enabled_rescue_interfaces:
 
 # Default rescue interface to be used for nodes that do not have
 # rescue_interface field set.
@@ -540,14 +533,14 @@ kolla_ironic_default_rescue_interface:
 
 # Specify the list of storage interfaces to load during
 # service initialization.
-kolla_ironic_enabled_storage_interfaces: []
+kolla_ironic_enabled_storage_interfaces:
 
 # Default storage interface to be used for nodes that do not
 # have storage_interface field set.
 kolla_ironic_default_storage_interface:
 
 # Specify the list of vendor interfaces to load during service initialization.
-kolla_ironic_enabled_vendor_interfaces: []
+kolla_ironic_enabled_vendor_interfaces:
 
 # Default vendor interface to be used for nodes that do not have
 # vendor_interface field set.
diff --git a/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf b/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf
index 49c5203e88316ea390df4a17233f9f7b740a861a..f91aad0db0b2096043df65954ec86e34d5d263a5 100644
--- a/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf
+++ b/ansible/roles/kolla-openstack/templates/kolla/config/ironic.conf
@@ -1,5 +1,7 @@
 [DEFAULT]
+{% if kolla_ironic_enabled_hardware_types %}
 enabled_hardware_types: {{ kolla_ironic_enabled_hardware_types | join(',') }}
+{% endif %}
 
 {# Add configuration of enabled and default dynamic driver interfaces. #}
 {% set interfaces=['boot', 'bios', 'console', 'deploy', 'inspect', 'management',
diff --git a/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2 b/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
index 84301ef94725c838af320a6c7a465318503c1fe1..2f0f90c8f36836f18cece49c527286bc142e9b49 100644
--- a/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
+++ b/playbooks/kayobe-overcloud-upgrade-base/overrides.yml.j2
@@ -38,5 +38,17 @@ compute_libvirt_sasl_password: "{% raw %}{{ lookup('password', '/tmp/libvirt-sas
 # Enable ironic for testing baremetal compute.
 kolla_enable_ironic: true
 
+# TODO(mgoddard): Remove condition and contents when previous release is Epoxy.
+# In Dalmatian we switched to the upstream ironic defaults for hardware
+# interfaces, which does not enable the following interfaces.
+{% if not is_previous_release | default(false) %}
+kolla_ironic_enabled_console_interfaces:
+  - ipmitool-socat
+  - no-console
+kolla_ironic_enabled_inspect_interfaces:
+  - inspector
+  - no-inspect
+{% endif %}
+
 # Disable heat to save disk space.
 kolla_enable_heat: false
diff --git a/releasenotes/notes/ironic-default-drivers-7a27baa7a301922c.yaml b/releasenotes/notes/ironic-default-drivers-7a27baa7a301922c.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d3f0fd15e8d7366d1efbfe78f7933c5257dc25c9
--- /dev/null
+++ b/releasenotes/notes/ironic-default-drivers-7a27baa7a301922c.yaml
@@ -0,0 +1,43 @@
+---
+upgrade:
+  - |
+    Kayobe no longer overrides the enabled and default Ironic hardware types
+    and interfaces. This ensures that changes to the default values in Ironic
+    are automatically adopted. These may still be customised via the existing
+    Kayobe variables in ``${KAYOBE_CONFIG_PATH}/ironic.yml``, e.g.
+    ``kolla_ironic_enabled_hardware_types``.
+
+    The default configuration generated by Kayobe in Caracal was:
+
+    .. code-block:: ini
+
+       enabled_hardware_types = ipmi
+       enabled_bios_interfaces = no-bios
+       enabled_boot_interfaces = ipxe,pxe
+       enabled_console_interfaces = ipmitool-socat,no-console
+       enabled_inspect_interfaces = inspector,no-inspect
+       enabled_management_interfaces = ipmitool
+       enabled_network_interfaces = noop,flat,neutron
+       enabled_power_interfaces = ipmitool
+       enabled_raid_interfaces = agent,no-raid
+       enabled_rescue_interfaces = agent,no-rescue
+       enabled_vendor_interfaces = no-vendor
+
+    In Dalmatian, Ironic defaults are:
+
+    .. code-block:: ini
+
+       enabled_hardware_types = ipmi,redfish
+       enabled_bios_interfaces = no-bios,redfish
+       enabled_boot_interfaces = ipxe,pxe,redfish-virtual-media
+       enabled_console_interfaces = no-console
+       enabled_inspect_interfaces = no-inspect,redfish
+       enabled_management_interfaces = <determined by enabled hardware types>
+       enabled_network_interfaces = flat,noop
+       enabled_power_interfaces = <determined by enabled hardware types>
+       enabled_raid_interfaces = agent,no-raid,redfish
+       enabled_rescue_interfaces = no-rescue
+       enabled_vendor_interfaces = ipmitool,redfish,no-vendor
+
+    In particular, note that the ``neutron`` network interface is no longer
+    enabled by default.