diff --git a/ansible/group_vars/all/ipa b/ansible/group_vars/all/ipa
index 23e94a79c833d55b704d2d3c5f4c99c595570142..bf8444290d925dd202807bcb772474db6a43e975 100644
--- a/ansible/group_vars/all/ipa
+++ b/ansible/group_vars/all/ipa
@@ -19,6 +19,9 @@ ipa_builder_source_url: "https://opendev.org/openstack/ironic-python-agent-build
 # Version of IPA builder source repository. Default is {{ openstack_branch }}.
 ipa_builder_source_version: "{{ openstack_branch }}"
 
+# List of additional build host packages to install.
+ipa_build_dib_host_packages_extra: []
+
 # List of default Diskimage Builder (DIB) elements to use when building IPA
 # images. Default is ["centos", "enable-serial-console",
 # "ironic-python-agent-ramdisk"].
diff --git a/ansible/group_vars/all/overcloud-dib b/ansible/group_vars/all/overcloud-dib
index 737d91832bac510277bba31cbdcdea8818110f12..6b0408eba8d8138a9680242926b5841ce2b1fae2 100644
--- a/ansible/group_vars/all/overcloud-dib
+++ b/ansible/group_vars/all/overcloud-dib
@@ -10,6 +10,9 @@
 # is {{ os_distribution == 'rocky' }}. This will change in a future release.
 overcloud_dib_build_host_images: "{{ os_distribution == 'rocky' }}"
 
+# List of additional build host packages to install.
+overcloud_dib_host_packages_extra: []
+
 # List of overcloud host disk images to build. Each element is a dict defining
 # an image in a format accepted by the stackhpc.os-images role. Default is to
 # build an image named "deployment_image" configured with the overcloud_dib_*
diff --git a/ansible/overcloud-host-image-build.yml b/ansible/overcloud-host-image-build.yml
index 5ac5af42e652c258d214d584f03b46b87264ede2..d895c50165839ff5be7cb922eaaa24834e30a40d 100644
--- a/ansible/overcloud-host-image-build.yml
+++ b/ansible/overcloud-host-image-build.yml
@@ -22,6 +22,7 @@
           include_role:
             name: stackhpc.os-images
           vars:
+            os_images_package_dependencies_extra: "{{ overcloud_dib_host_packages_extra | select | list }}"
             os_images_venv: "{{ virtualenv_path }}/overcloud-host-image-dib"
             os_images_package_state: latest
             os_images_upper_constraints_file: "{{ overcloud_dib_upper_constraints_file }}"
diff --git a/ansible/overcloud-ipa-build.yml b/ansible/overcloud-ipa-build.yml
index bc8e9f68ae8433f362f4364e787b951b576c4e31..4198c357291150b7db7309be58ded35913d2308a 100644
--- a/ansible/overcloud-ipa-build.yml
+++ b/ansible/overcloud-ipa-build.yml
@@ -36,6 +36,7 @@
           include_role:
             name: stackhpc.os-images
           vars:
+            os_images_package_dependencies_extra: "{{ ipa_build_dib_host_packages_extra | select | list }}"
             os_images_venv: "{{ virtualenv_path }}/ipa-build-dib"
             os_images_package_state: latest
             os_images_upper_constraints_file: "{{ ipa_build_upper_constraints_file }}"
diff --git a/ansible/seed-ipa-build.yml b/ansible/seed-ipa-build.yml
index 1145bf819db6b36bce81078835caf0c20bcee0a5..fb26f7d0528d5a6e5ed14379ae7a9ba22ccab480 100644
--- a/ansible/seed-ipa-build.yml
+++ b/ansible/seed-ipa-build.yml
@@ -26,6 +26,7 @@
           include_role:
             name: stackhpc.os-images
           vars:
+            os_images_package_dependencies_extra: "{{ ipa_build_dib_host_packages_extra | select | list }}"
             os_images_venv: "{{ virtualenv_path }}/ipa-build-dib"
             os_images_package_state: latest
             os_images_upper_constraints_file: "{{ ipa_build_upper_constraints_file }}"
diff --git a/doc/source/configuration/reference/ironic-python-agent.rst b/doc/source/configuration/reference/ironic-python-agent.rst
index da2936e400b963d03844ad1e7b5c5bfb84ef2361..fb8f7aaa07d6658f12b5acc9442fb51721e93ab0 100644
--- a/doc/source/configuration/reference/ironic-python-agent.rst
+++ b/doc/source/configuration/reference/ironic-python-agent.rst
@@ -44,6 +44,9 @@ image build``.
     https://opendev.org/openstack/ironic-python-agent-builder
 ``ipa_builder_source_version``
     Version of IPA builder source repository. Default is ``master``.
+``ipa_build_dib_host_packages_extra``
+    List of additional build host packages to install. Default is an empty
+    list.
 ``ipa_build_dib_elements_default``
     List of default Diskimage Builder (DIB) elements to use when building IPA
     images. Default is ``["centos", "enable-serial-console",
diff --git a/doc/source/configuration/reference/overcloud-dib.rst b/doc/source/configuration/reference/overcloud-dib.rst
index 86b8c97e58f11d787be3987bb90b2dd737eadb23..90a1e877094fe43ef9632a9e3339e7761b743bc7 100644
--- a/doc/source/configuration/reference/overcloud-dib.rst
+++ b/doc/source/configuration/reference/overcloud-dib.rst
@@ -41,6 +41,8 @@ Linux is used.
 `Cloud-init <https://cloudinit.readthedocs.io/en/latest/>`__ is used to process
 the configuration drive built by Bifrost during provisioning.
 
+``overcloud_dib_host_packages_extra``
+    List of additional host packages to install. Default is an empty list.
 ``overcloud_dib_host_images``
     List of overcloud host disk images to build. Each element is a dict
     defining an image in a format accepted by the `stackhpc.os-images
diff --git a/etc/kayobe/ipa.yml b/etc/kayobe/ipa.yml
index 519ca2a59d221e4942340b4f66246a74bfbc05e4..81ee974930d986cb348edb9e0a107389c1adb162 100644
--- a/etc/kayobe/ipa.yml
+++ b/etc/kayobe/ipa.yml
@@ -19,6 +19,9 @@
 # Version of IPA builder source repository. Default is {{ openstack_branch }}.
 #ipa_builder_source_version:
 
+# List of additional build host packages to install. Default is an empty list.
+#ipa_build_dib_host_packages_extra:
+
 # List of default Diskimage Builder (DIB) elements to use when building IPA
 # images. Default is ["centos", "enable-serial-console",
 # "ironic-python-agent-ramdisk"].
diff --git a/etc/kayobe/overcloud-dib.yml b/etc/kayobe/overcloud-dib.yml
index 3d69f8eb1243040e0fbd6bb5248cc2b82b283b0c..bca69e92d960e729f017d7b0a9e11332838728db 100644
--- a/etc/kayobe/overcloud-dib.yml
+++ b/etc/kayobe/overcloud-dib.yml
@@ -10,6 +10,9 @@
 # is {{ os_distribution == 'rocky' }}. This will change in a future release.
 #overcloud_dib_build_host_images:
 
+# List of additional build host packages to install. Default is an empty list.
+#overcloud_dib_host_packages_extra:
+
 # List of overcloud host disk images to build. Each element is a dict defining
 # an image in a format accepted by the stackhpc.os-images role. Default is to
 # build an image named "deployment_image" configured with the overcloud_dib_*
diff --git a/releasenotes/notes/image-build-host-packages-1f1a3cf59436d82b.yaml b/releasenotes/notes/image-build-host-packages-1f1a3cf59436d82b.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2d80edc7ef0ba806c5aa97f80fcf35d5728f0c59
--- /dev/null
+++ b/releasenotes/notes/image-build-host-packages-1f1a3cf59436d82b.yaml
@@ -0,0 +1,7 @@
+---
+features:
+  - |
+    Adds support for installing additional build host dependencies when
+    building IPA and overcloud host images via
+    ``ipa_build_dib_host_packages_extra`` and
+    ``overcloud_dib_host_packages_extra``.
diff --git a/requirements.yml b/requirements.yml
index 6c48cffd604f6241d7709e38025981e6e7d15072..9edf58cf350169295a56bacabbcfed7caed3bab0 100644
--- a/requirements.yml
+++ b/requirements.yml
@@ -43,7 +43,7 @@ roles:
   - src: stackhpc.mellanox-switch
     version: v1.0.0
   - src: stackhpc.os-images
-    version: v1.11.0
+    version: v1.15.0
   - src: stackhpc.os-ironic-state
     version: v1.3.1
   - src: stackhpc.os-networks