diff --git a/ansible/inventory/group_vars/all/ipa b/ansible/inventory/group_vars/all/ipa
index bf8444290d925dd202807bcb772474db6a43e975..39879a5f14ffee10b40485f7153e3528a9122a31 100644
--- a/ansible/inventory/group_vars/all/ipa
+++ b/ansible/inventory/group_vars/all/ipa
@@ -88,6 +88,10 @@ ipa_build_dib_packages: []
 # used for building IPA images. Default is {{ pip_upper_constraints_file }}.
 ipa_build_upper_constraints_file: "{{ pip_upper_constraints_file }}"
 
+# Upper constraints file for installation of DIB to build IPA images.
+# Default is empty string.
+ipa_build_dib_upper_constraints_file: ""
+
 ###############################################################################
 # Ironic Python Agent (IPA) images configuration.
 
diff --git a/ansible/inventory/group_vars/all/overcloud-dib b/ansible/inventory/group_vars/all/overcloud-dib
index 6b0408eba8d8138a9680242926b5841ce2b1fae2..47f05f887c1a3e96f91b3a7aee309cd574dd0c32 100644
--- a/ansible/inventory/group_vars/all/overcloud-dib
+++ b/ansible/inventory/group_vars/all/overcloud-dib
@@ -93,3 +93,7 @@ overcloud_dib_git_elements: >-
 # used for building overcloud host disk images. Default is {{
 # pip_upper_constraints_file }}.
 overcloud_dib_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+
+# Upper constraints file for installation of DIB to build overcloud host disk images.
+# Default is empty string.
+overcloud_dib_dib_upper_constraints_file: ""
\ No newline at end of file
diff --git a/ansible/overcloud-host-image-build.yml b/ansible/overcloud-host-image-build.yml
index d895c50165839ff5be7cb922eaaa24834e30a40d..2a156e662dba22bd2c4ab07410812a1dda78360a 100644
--- a/ansible/overcloud-host-image-build.yml
+++ b/ansible/overcloud-host-image-build.yml
@@ -26,6 +26,7 @@
             os_images_venv: "{{ virtualenv_path }}/overcloud-host-image-dib"
             os_images_package_state: latest
             os_images_upper_constraints_file: "{{ overcloud_dib_upper_constraints_file }}"
+            os_images_dib_upper_constraints_file: "{{ overcloud_dib_dib_upper_constraints_file }}"
             os_images_cache: "{{ image_cache_path }}"
             os_images_common: ""
             os_images_list: "{{ overcloud_dib_host_images }}"
diff --git a/ansible/overcloud-ipa-build.yml b/ansible/overcloud-ipa-build.yml
index 4198c357291150b7db7309be58ded35913d2308a..d9a76ced67728820defea8e6cc58e853243cd9ec 100644
--- a/ansible/overcloud-ipa-build.yml
+++ b/ansible/overcloud-ipa-build.yml
@@ -40,6 +40,7 @@
             os_images_venv: "{{ virtualenv_path }}/ipa-build-dib"
             os_images_package_state: latest
             os_images_upper_constraints_file: "{{ ipa_build_upper_constraints_file }}"
+            os_images_dib_upper_constraints_file: "{{ ipa_build_dib_upper_constraints_file }}"
             os_images_cache: "{{ image_cache_path }}"
             os_images_common: ""
             os_images_list:
diff --git a/doc/source/configuration/reference/overcloud-dib.rst b/doc/source/configuration/reference/overcloud-dib.rst
index 90a1e877094fe43ef9632a9e3339e7761b743bc7..a33d9a7d4304814e3194c35ed9acc92521ba6cfa 100644
--- a/doc/source/configuration/reference/overcloud-dib.rst
+++ b/doc/source/configuration/reference/overcloud-dib.rst
@@ -99,6 +99,9 @@ the configuration drive built by Bifrost during provisioning.
     Upper constraints file for installing packages in the virtual environment
     used for building overcloud host disk images. Default is ``{{
     pip_upper_constraints_file }}``.
+``overcloud_dib_dib_upper_constraints_file``
+    Upper constraints file for installation of DIB to build overcloud
+    host disk images. Default is empty string.
 
 Disk images are built with the following command:
 
diff --git a/etc/kayobe/ipa.yml b/etc/kayobe/ipa.yml
index 81ee974930d986cb348edb9e0a107389c1adb162..5877d039a8b0d8e89da38ca723c4ce31bac85042 100644
--- a/etc/kayobe/ipa.yml
+++ b/etc/kayobe/ipa.yml
@@ -68,6 +68,10 @@
 # used for building IPA images. Default is {{ pip_upper_constraints_file }}.
 #ipa_build_upper_constraints_file:
 
+# Upper constraints file for installation of DIB to build IPA images.
+# Default is empty string.
+#ipa_build_dib_upper_constraints_file:
+
 ###############################################################################
 # Ironic Python Agent (IPA) images configuration.
 
diff --git a/etc/kayobe/overcloud-dib.yml b/etc/kayobe/overcloud-dib.yml
index bca69e92d960e729f017d7b0a9e11332838728db..3d95fa65f05af20a2588829dee8111424c4aad8b 100644
--- a/etc/kayobe/overcloud-dib.yml
+++ b/etc/kayobe/overcloud-dib.yml
@@ -79,6 +79,10 @@
 # pip_upper_constraints_file }}.
 #overcloud_dib_upper_constraints_file:
 
+# Upper constraints file for installation of DIB to build overcloud host
+# disk images. Default is empty string.
+#overcloud_dib_dib_upper_constraints_file:
+
 ###############################################################################
 # Dummy variable to allow Ansible to accept this file.
 workaround_ansible_issue_8743: yes
diff --git a/releasenotes/notes/upper_constraints_split-a9548c8127c13535.yaml b/releasenotes/notes/upper_constraints_split-a9548c8127c13535.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..948e62a3993006ce242e776dac011d101887adab
--- /dev/null
+++ b/releasenotes/notes/upper_constraints_split-a9548c8127c13535.yaml
@@ -0,0 +1,14 @@
+---
+upgrade:
+  - |
+    Updates the ``stackhpc.os-images`` to version to 0.16.0. This new releases
+    separates configuration of upper constraints for diskimage-builder (DIB)
+    from those used by the OpenStack SDK and client. This allows operators to
+    use a newer version of DIB while keeping compatible versions of the
+    OpenStack SDK and client. This is configured with the following variables:
+
+    * ``ipa_build_dib_upper_constraints_file`` in ``ipa.yml``
+    * ``overcloud_dib_dib_upper_constraints_file`` in ``overcloud-dib.yml``
+
+    The variables are empty by default in order to allow for Rocky9
+    image builds.
\ No newline at end of file
diff --git a/requirements.yml b/requirements.yml
index 9edf58cf350169295a56bacabbcfed7caed3bab0..638aa6908977b02152ac3277e126e62e0337e9be 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.15.0
+    version: v1.16.0
   - src: stackhpc.os-ironic-state
     version: v1.3.1
   - src: stackhpc.os-networks