diff --git a/ansible/baremetal-compute-inspect.yml b/ansible/baremetal-compute-inspect.yml
index d66061ced..45d8c3d29 100644
--- a/ansible/baremetal-compute-inspect.yml
+++ b/ansible/baremetal-compute-inspect.yml
@@ -15,8 +15,7 @@
     - role: stackhpc.os_openstacksdk
       os_openstacksdk_venv: "{{ venv }}"
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
-      os_openstacksdk_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
 
 - name: Ensure baremetal compute nodes are inspected in ironic
   hosts: baremetal-compute
diff --git a/ansible/baremetal-compute-manage.yml b/ansible/baremetal-compute-manage.yml
index 27f1fce85..2f1c586d2 100644
--- a/ansible/baremetal-compute-manage.yml
+++ b/ansible/baremetal-compute-manage.yml
@@ -15,8 +15,7 @@
     - role: stackhpc.os_openstacksdk
       os_openstacksdk_venv: "{{ venv }}"
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
-      os_openstacksdk_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
 
 - name: Ensure baremetal compute nodes are manageable in ironic
   hosts: baremetal-compute
diff --git a/ansible/baremetal-compute-provide.yml b/ansible/baremetal-compute-provide.yml
index 7361c4e66..964e9c272 100644
--- a/ansible/baremetal-compute-provide.yml
+++ b/ansible/baremetal-compute-provide.yml
@@ -15,8 +15,7 @@
     - role: stackhpc.os_openstacksdk
       os_openstacksdk_venv: "{{ venv }}"
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
-      os_openstacksdk_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
 
 - name: Ensure baremetal compute nodes are available in ironic
   hosts: baremetal-compute
diff --git a/ansible/external-net.yml b/ansible/external-net.yml
index 02b70b862..66d2adb00 100644
--- a/ansible/external-net.yml
+++ b/ansible/external-net.yml
@@ -5,8 +5,7 @@
   roles:
     - role: stackhpc.os-networks
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
-      os_openstacksdk_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       os_networks_venv: "{{ virtualenv_path }}/openstacksdk"
       os_networks_openstack_auth_type: "{{ openstack_auth_type }}"
       os_networks_openstack_auth: "{{ openstack_auth }}"
diff --git a/ansible/inventory/group_vars/all/pip b/ansible/inventory/group_vars/all/pip
index 8a9c90562..42444c091 100644
--- a/ansible/inventory/group_vars/all/pip
+++ b/ansible/inventory/group_vars/all/pip
@@ -1,3 +1,6 @@
 ---
 # Upper constraints file for installation of python packages.
 pip_upper_constraints_file: "https://releases.openstack.org/constraints/upper/{{ openstack_release }}"
+
+# Upper constraints file for installation of openstacksdk.
+openstacksdk_upper_constraints_file: "https://releases.openstack.org/constraints/upper/yoga"
\ No newline at end of file
diff --git a/ansible/overcloud-introspection-rules-dell-lldp-workaround.yml b/ansible/overcloud-introspection-rules-dell-lldp-workaround.yml
index 4f7006615..fd9e9abc7 100644
--- a/ansible/overcloud-introspection-rules-dell-lldp-workaround.yml
+++ b/ansible/overcloud-introspection-rules-dell-lldp-workaround.yml
@@ -126,7 +126,7 @@
   roles:
     - role: ironic-inspector-rules
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
+      os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       ironic_inspector_venv: "{{ virtualenv_path }}/openstacksdk"
       ironic_inspector_upper_constraints_file: "{{ pip_upper_constraints_file }}"
       ironic_inspector_auth_type: "{{ openstack_auth_type }}"
diff --git a/ansible/overcloud-introspection-rules.yml b/ansible/overcloud-introspection-rules.yml
index 982f1fd29..98d3ca8cc 100644
--- a/ansible/overcloud-introspection-rules.yml
+++ b/ansible/overcloud-introspection-rules.yml
@@ -59,9 +59,9 @@
   roles:
     - role: ironic-inspector-rules
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
+      os_openstacksdk_state: "latest"
       ironic_inspector_venv: "{{ venv }}"
-      ironic_inspector_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      ironic_inspector_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       ironic_inspector_auth_type: "{{ openstack_auth_type }}"
       ironic_inspector_auth: "{{ openstack_auth }}"
       ironic_inspector_cacert: "{{ openstack_cacert }}"
diff --git a/ansible/overcloud-ipa-images.yml b/ansible/overcloud-ipa-images.yml
index 7246faf90..0b8242a15 100644
--- a/ansible/overcloud-ipa-images.yml
+++ b/ansible/overcloud-ipa-images.yml
@@ -101,9 +101,9 @@
   roles:
     - role: ipa-images
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
+      os_openstacksdk_state: "latest"
       ipa_images_venv: "{{ virtualenv_path }}/openstacksdk"
-      ipa_images_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      ipa_images_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       ipa_images_openstack_auth_type: "{{ openstack_auth_type }}"
       ipa_images_openstack_auth: "{{ openstack_auth }}"
       ipa_images_openstack_auth_env: "{{ openstack_auth_env }}"
diff --git a/ansible/provision-net.yml b/ansible/provision-net.yml
index 54a5b4fc6..e5045f7e8 100644
--- a/ansible/provision-net.yml
+++ b/ansible/provision-net.yml
@@ -65,8 +65,8 @@
   roles:
     - role: stackhpc.os-networks
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
-      os_networks_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      os_openstacksdk_state: "latest"
+      os_networks_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       os_networks_venv: "{{ venv }}"
       os_networks_auth_type: "{{ openstack_auth_type }}"
       os_networks_auth: "{{ openstack_auth }}"
diff --git a/ansible/roles/console-allocation/library/console_allocation.py b/ansible/roles/console-allocation/library/console_allocation.py
index ee652d0ee..74ce46036 100644
--- a/ansible/roles/console-allocation/library/console_allocation.py
+++ b/ansible/roles/console-allocation/library/console_allocation.py
@@ -1,5 +1,3 @@
-#!/usr/bin/python3
-
 # Copyright (c) 2017 StackHPC Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff --git a/ansible/roles/ip-allocation/library/ip_allocation.py b/ansible/roles/ip-allocation/library/ip_allocation.py
index 1a135518d..5cf90bd05 100644
--- a/ansible/roles/ip-allocation/library/ip_allocation.py
+++ b/ansible/roles/ip-allocation/library/ip_allocation.py
@@ -1,5 +1,3 @@
-#!/usr/bin/python3
-
 # Copyright (c) 2017 StackHPC Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff --git a/ansible/roles/ipa-images/meta/main.yml b/ansible/roles/ipa-images/meta/main.yml
index a1914d381..4c62fc363 100644
--- a/ansible/roles/ipa-images/meta/main.yml
+++ b/ansible/roles/ipa-images/meta/main.yml
@@ -2,7 +2,7 @@
 dependencies:
   - role: stackhpc.os_openstacksdk
     os_openstacksdk_venv: "{{ ipa_images_venv }}"
-    os_openstacksdk_upper_constraints_file: "{{ ipa_images_upper_constraints_file }}"
+    os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
   - role: stackhpc.os-openstackclient
     os_openstackclient_venv: "{{ ipa_images_venv }}"
     os_openstackclient_upper_constraints_file: "{{ ipa_images_upper_constraints_file }}"
diff --git a/ansible/roles/ironic-inspector-rules/library/os_ironic_inspector_rule.py b/ansible/roles/ironic-inspector-rules/library/os_ironic_inspector_rule.py
index 56c26e0fc..a8a95efd1 100644
--- a/ansible/roles/ironic-inspector-rules/library/os_ironic_inspector_rule.py
+++ b/ansible/roles/ironic-inspector-rules/library/os_ironic_inspector_rule.py
@@ -1,5 +1,3 @@
-#!/usr/bin/python3
-
 # Copyright (c) 2017 StackHPC Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff --git a/ansible/roles/ironic-inspector-rules/meta/main.yml b/ansible/roles/ironic-inspector-rules/meta/main.yml
index 68a2262c3..225ec9f5c 100644
--- a/ansible/roles/ironic-inspector-rules/meta/main.yml
+++ b/ansible/roles/ironic-inspector-rules/meta/main.yml
@@ -2,4 +2,4 @@
 dependencies:
   - role: stackhpc.os_openstacksdk
     os_openstacksdk_venv: "{{ ironic_inspector_venv }}"
-    os_openstacksdk_upper_constraints_file: "{{ ironic_inspector_upper_constraints_file }}"
+    os_openstacksdk_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
\ No newline at end of file
diff --git a/ansible/roles/kolla-ansible/defaults/main.yml b/ansible/roles/kolla-ansible/defaults/main.yml
index 09dc388eb..3cee9c96c 100644
--- a/ansible/roles/kolla-ansible/defaults/main.yml
+++ b/ansible/roles/kolla-ansible/defaults/main.yml
@@ -24,7 +24,7 @@ kolla_ansible_venv_extra_requirements: []
 # Pip requirement specifier for the ansible package. NOTE: This limits the
 # version of ansible used by kolla-ansible to avoid new releases from breaking
 # tested code. Changes to this limit should be tested.
-kolla_ansible_venv_ansible: 'ansible>=4,<6.0'
+kolla_ansible_venv_ansible: 'ansible>=5,<7.0'
 
 # Path to a requirements.yml file for Ansible collections.
 kolla_ansible_requirements_yml: "{{ kolla_ansible_venv }}/share/kolla-ansible/requirements.yml"
diff --git a/ansible/roles/kolla-ansible/library/kolla_passwords.py b/ansible/roles/kolla-ansible/library/kolla_passwords.py
index 733f5e038..049f2b09f 100644
--- a/ansible/roles/kolla-ansible/library/kolla_passwords.py
+++ b/ansible/roles/kolla-ansible/library/kolla_passwords.py
@@ -1,5 +1,3 @@
-#!/usr/bin/python3
-
 # Copyright (c) 2017 StackHPC Ltd.
 #
 # Licensed under the Apache License, Version 2.0 (the "License"); you may
diff --git a/ansible/roles/wipe-disks/library/blockdevice_info.py b/ansible/roles/wipe-disks/library/blockdevice_info.py
index 4a109283f..b5fa5840c 100644
--- a/ansible/roles/wipe-disks/library/blockdevice_info.py
+++ b/ansible/roles/wipe-disks/library/blockdevice_info.py
@@ -1,5 +1,3 @@
-#!/usr/bin/python3
-
 DOCUMENTATION = '''
 ---
 module: blockdevice_info
diff --git a/ansible/seed-introspection-rules.yml b/ansible/seed-introspection-rules.yml
index f59655af6..247f2929a 100644
--- a/ansible/seed-introspection-rules.yml
+++ b/ansible/seed-introspection-rules.yml
@@ -6,9 +6,9 @@
   roles:
     - role: ironic-inspector-rules
       os_openstacksdk_install_epel: "{{ dnf_install_epel }}"
-      os_openstacksdk_state: latest
+      os_openstacksdk_state: "latest"
       ironic_inspector_venv: "{{ virtualenv_path }}/openstacksdk"
-      ironic_inspector_upper_constraints_file: "{{ pip_upper_constraints_file }}"
+      ironic_inspector_upper_constraints_file: "{{ openstacksdk_upper_constraints_file }}"
       ironic_inspector_cloud: bifrost
       ironic_inspector_rules: "{{ kolla_bifrost_inspector_rules }}"
       # These variables may be referenced in the introspection rules.
diff --git a/kayobe/plugins/action/merge_configs.py b/kayobe/plugins/action/merge_configs.py
index 1e7e9da8f..ce45bf763 100644
--- a/kayobe/plugins/action/merge_configs.py
+++ b/kayobe/plugins/action/merge_configs.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 # Copyright 2015 Sam Yaple
 # Copyright 2017 99Cloud Inc.
 #
diff --git a/kayobe/plugins/action/merge_yaml.py b/kayobe/plugins/action/merge_yaml.py
index b2e5a621a..943ca0158 100644
--- a/kayobe/plugins/action/merge_yaml.py
+++ b/kayobe/plugins/action/merge_yaml.py
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 # Copyright 2015 Sam Yaple
 # Copyright 2016 intel
 #
diff --git a/releasenotes/notes/bump-ansible-6-5d7175aa0d962268.yaml b/releasenotes/notes/bump-ansible-6-5d7175aa0d962268.yaml
new file mode 100644
index 000000000..b65317635
--- /dev/null
+++ b/releasenotes/notes/bump-ansible-6-5d7175aa0d962268.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Updates the maximum supported version of Ansible from 5.x (ansible-core
+    2.12) to 6.x (ansible-core 2.13). The minimum supported version is updated
+    from 4.x to 5.x. This is true for both Kayobe and Kolla Ansible.
diff --git a/requirements.txt b/requirements.txt
index 107802870..2f4e5b8f7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,6 @@
 pbr>=2.0 # Apache-2.0
 Jinja2>3 # BSD
-ansible>=4,<6.0 # GPLv3
+ansible>=5,<7.0 # GPLv3
 cliff>=3.1.0 # Apache
 netaddr!=0.7.16,>=0.7.13 # BSD
 PyYAML>=3.10.0 # MIT