diff --git a/ansible/roles/kolla-openstack/tasks/config.yml b/ansible/roles/kolla-openstack/tasks/config.yml
index b13a47099..5123bcda0 100644
--- a/ansible/roles/kolla-openstack/tasks/config.yml
+++ b/ansible/roles/kolla-openstack/tasks/config.yml
@@ -115,6 +115,7 @@
     - item.0.item.enabled | bool
     - item.1.path | basename not in item.0.item.ignore | default([])
     - item.1.path | basename not in item.0.item.untemplated | default([])
+    - (item.1.path | dirname | relpath(item.0.item.src)).split("/")[0] not in item.0.item.untemplated_dirs | default([])
 
 - name: Ensure untemplated extra configuration files exist
   copy:
@@ -128,7 +129,8 @@
   when:
     - item.0.item.enabled | bool
     - item.1.path | basename not in item.0.item.ignore | default([])
-    - item.1.path | basename in item.0.item.untemplated | default([])
+    - (item.1.path | basename in item.0.item.untemplated | default([])) or
+      ((item.1.path | dirname | relpath(item.0.item.src)).split("/")[0] in item.0.item.untemplated_dirs | default([]))
 
 - name: Ensure unnecessary extra configuration files are absent
   file:
diff --git a/ansible/roles/kolla-openstack/vars/main.yml b/ansible/roles/kolla-openstack/vars/main.yml
index 5a53c844f..e7252a137 100644
--- a/ansible/roles/kolla-openstack/vars/main.yml
+++ b/ansible/roles/kolla-openstack/vars/main.yml
@@ -98,6 +98,9 @@ kolla_openstack_custom_config:
     dest: "{{ kolla_node_custom_config_path }}/horizon"
     patterns: "*"
     enabled: "{{ kolla_enable_horizon }}"
+    untemplated_dirs:
+    # Do not attempt to template themes directory.
+      - "themes"
   # InfluxDB.
   - src: "{{ kolla_extra_config_path }}/"
     dest: "{{ kolla_node_custom_config_path }}/"
diff --git a/releasenotes/notes/add-support-for-custom-horizon-themes-5da1d99c1b8107b9.yaml b/releasenotes/notes/add-support-for-custom-horizon-themes-5da1d99c1b8107b9.yaml
new file mode 100644
index 000000000..a422a837f
--- /dev/null
+++ b/releasenotes/notes/add-support-for-custom-horizon-themes-5da1d99c1b8107b9.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds support for custom Horizon themes.