diff --git a/ansible/group_vars/all/kolla b/ansible/group_vars/all/kolla
index 60fcf9fbdfde8fb55a1ea863be375b0a3c25a777..77607b95e8a4972480b5f4b323513554a296e2a5 100644
--- a/ansible/group_vars/all/kolla
+++ b/ansible/group_vars/all/kolla
@@ -162,6 +162,8 @@ overcloud_container_image_regex_map:
     enabled: "{{ kolla_enable_magnum | bool }}"
   - regex: manila
     enabled: "{{ kolla_enable_manila | bool }}"
+  - regex: mariadb
+    enabled: "{{ kolla_enable_mariadb | bool }}"
   - regex: murano
     enabled: "{{ kolla_enable_murano | bool }}"
   - regex: mariadb
@@ -319,6 +321,7 @@ kolla_enable_kafka: "no"
 kolla_enable_kibana: "{{ 'yes' if kolla_enable_central_logging | bool else 'no' }}"
 kolla_enable_magnum: "no"
 kolla_enable_manila: "no"
+kolla_enable_mariadb: "yes"
 # Support for Monasca in Kolla is a work in progress. This currently relies
 # on an out-of-band Monasca installation.
 kolla_enable_monasca: "no"
diff --git a/ansible/kolla-openstack.yml b/ansible/kolla-openstack.yml
index 791f1bfe07b4a92560eb1f8f8997f6f7cb15a42e..0beda1af0a5b899fbfbef6286d90d653d25a84cc 100644
--- a/ansible/kolla-openstack.yml
+++ b/ansible/kolla-openstack.yml
@@ -110,6 +110,7 @@
             - { name: ironic_dnsmasq, file: ironic/ironic-dnsmasq.conf }
             - { name: kafka, file: kafka.server.properties }
             - { name: magnum, file: magnum.conf }
+            - { name: mariadb, file: galera.cnf }
             - { name: murano, file: murano.conf }
             - { name: neutron, file: neutron.conf }
             - { name: neutron_ml2, file: neutron/ml2_conf.ini }
@@ -213,6 +214,7 @@
       kolla_extra_ironic_dnsmasq: "{{ kolla_extra_config.ironic_dnsmasq | default }}"
       kolla_extra_kafka: "{{ kolla_extra_config.kafka | default }}"
       kolla_extra_magnum: "{{ kolla_extra_config.magnum | default }}"
+      kolla_extra_mariadb: "{{ kolla_extra_config.mariadb | default }}"
       kolla_extra_murano: "{{ kolla_extra_config.murano | default }}"
       kolla_extra_neutron: "{{ kolla_extra_config.neutron | default }}"
       kolla_extra_neutron_ml2: "{{ kolla_extra_config.neutron_ml2 | default }}"
diff --git a/ansible/roles/kolla-ansible/tests/test-defaults.yml b/ansible/roles/kolla-ansible/tests/test-defaults.yml
index 9a430aca6c30c7733b79707b8bd36c5eea634986..8a66d4846656cd2b24440e03e8f20a5fa26304dd 100644
--- a/ansible/roles/kolla-ansible/tests/test-defaults.yml
+++ b/ansible/roles/kolla-ansible/tests/test-defaults.yml
@@ -117,6 +117,7 @@
               - enable_ironic
               - enable_kafka
               - enable_influxdb
+              - enable_mariadb
               - enable_neutron
               - enable_nova
               - enable_zookeeper
diff --git a/ansible/roles/kolla-ansible/tests/test-extras.yml b/ansible/roles/kolla-ansible/tests/test-extras.yml
index 5b8240887ecf18e569e4010439878a456443abc7..be579663d04d934625802de2922a59c6b434e407 100644
--- a/ansible/roles/kolla-ansible/tests/test-extras.yml
+++ b/ansible/roles/kolla-ansible/tests/test-extras.yml
@@ -93,6 +93,7 @@
             kolla_enable_manila: True
             kolla_enable_manila_backend_generic: True
             kolla_enable_manila_backend_hnas: True
+            kolla_enable_mariadb: True
             kolla_enable_mistral: True
             kolla_enable_monasca: True
             kolla_enable_mongodb: True
@@ -227,6 +228,7 @@
               #enable_manila: True
               #enable_manila_backend_generic: True
               #enable_manila_backend_hnas: True
+              #enable_mariadb: True
               #enable_mistral: True
               #enable_mongodb: True
               #enable_murano: True
diff --git a/ansible/roles/kolla-ansible/vars/main.yml b/ansible/roles/kolla-ansible/vars/main.yml
index 29dd9a65702fe1d4c64b2a186db8360acacda9a1..5ff8610d9acb57d96fafc8a4189b155822941da6 100644
--- a/ansible/roles/kolla-ansible/vars/main.yml
+++ b/ansible/roles/kolla-ansible/vars/main.yml
@@ -99,6 +99,7 @@ kolla_feature_flags:
   - manila_backend_hnas
   - manila_backend_cephfs_native
   - manila_backend_cephfs_nfs
+  - mariadb
   - mistral
   - mongodb
   - monasca
diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml
index e50fa4ffc6ce85c4920f9721a63a94f39b778a37..677d3ed96bb4072b8e98e05010d627e0a814db25 100644
--- a/ansible/roles/kolla-openstack/defaults/main.yml
+++ b/ansible/roles/kolla-openstack/defaults/main.yml
@@ -273,6 +273,15 @@ kolla_enable_magnum:
 # Free form extra configuration to append to magnum.conf.
 kolla_extra_magnum:
 
+###############################################################################
+# MariaDB configuration.
+
+# Whether to enable MariaDB.
+kolla_enable_mariadb:
+
+# Free form extra configuration to append to galera.cnf.
+kolla_extra_mariadb:
+
 ###############################################################################
 # Manila configuration.
 
diff --git a/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py b/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
index f364acab50f4de2c67e50e55d61261e7f73250bd..c86d96e7d543ad3dcb6273696161e322ad2ec92d 100644
--- a/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
+++ b/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
@@ -49,6 +49,7 @@ def test_service_config_directory(host, path):
      'kafka',
      'magnum',
      'manila',
+     'mariadb',
      'murano',
      'neutron',
      'nova',
diff --git a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
index e15854a23e263e081f308abd8069819a358f03ad..c23867463c3a9913dc00576fa01ac3691ae88ea9 100644
--- a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
+++ b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
@@ -63,6 +63,10 @@ provisioner:
           [extra-magnum.conf]
           foo=bar
         kolla_enable_manila: true
+        kolla_enable_mariadb: true
+        kolla_extra_mariadb: |
+          [extra-galera.cnf]
+          foo=bar
         kolla_enable_murano: true
         kolla_enable_monasca: true
         kolla_extra_murano: |
diff --git a/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py b/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
index 54c03d7d3837bbd590d05e5cc5a031cd49afebae..089e27edd703a284b4d131e39a0bf75143bac466 100644
--- a/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
+++ b/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
@@ -42,6 +42,7 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
      'keystone',
      'magnum',
      'manila',
+     'mariadb',
      'murano',
      'neutron',
      'nova',
@@ -58,6 +59,7 @@ def test_service_config_directory(host, path):
     ['ceph.conf',
      'cinder.conf',
      'designate.conf',
+     'galera.cnf',
      'glance.conf',
      'grafana.ini',
      'heat.conf',
diff --git a/ansible/roles/kolla-openstack/tasks/config.yml b/ansible/roles/kolla-openstack/tasks/config.yml
index 459ea6483e9f3def4ea268728352f732ff3bbbf9..f53c02498402bb75fa4513e94d29e16f724ef038 100644
--- a/ansible/roles/kolla-openstack/tasks/config.yml
+++ b/ansible/roles/kolla-openstack/tasks/config.yml
@@ -16,6 +16,7 @@
     - { src: ceph.conf.j2, dest: ceph.conf, enabled: "{{ kolla_enable_ceph }}" }
     - { src: cinder.conf.j2, dest: cinder.conf, enabled: "{{ kolla_enable_cinder }}" }
     - { src: designate.conf.j2, dest: designate.conf, enabled: "{{ kolla_enable_designate }}" }
+    - { src: galera.cnf.j2, dest: galera.cnf, enabled: "{{ kolla_enable_mariadb }}" }
     - { src: glance.conf.j2, dest: glance.conf, enabled: "{{ kolla_enable_glance }}" }
     - { src: grafana.ini.j2, dest: grafana.ini, enabled: "{{ kolla_enable_grafana }}" }
     - { src: heat.conf.j2, dest: heat.conf, enabled: "{{ kolla_enable_heat }}" }
diff --git a/ansible/roles/kolla-openstack/templates/galera.cnf.j2 b/ansible/roles/kolla-openstack/templates/galera.cnf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..55122ebb04ca590d17cae9f39c547b0213b86ee7
--- /dev/null
+++ b/ansible/roles/kolla-openstack/templates/galera.cnf.j2
@@ -0,0 +1,9 @@
+# {{ ansible_managed }}
+
+{% if kolla_extra_mariadb %}
+#######################
+# Extra configuration
+#######################
+
+{{ kolla_extra_mariadb }}
+{% endif %}
diff --git a/ansible/roles/kolla-openstack/vars/main.yml b/ansible/roles/kolla-openstack/vars/main.yml
index 0dcb634d54d950334202baec488b8c9becc8a440..c9bc44795747328ecc3725d126084da5a1d3ffa7 100644
--- a/ansible/roles/kolla-openstack/vars/main.yml
+++ b/ansible/roles/kolla-openstack/vars/main.yml
@@ -90,6 +90,11 @@ kolla_openstack_custom_config:
     dest: "{{ kolla_node_custom_config_path }}/manila"
     patterns: "*"
     enabled: "{{ kolla_enable_manila }}"
+  # MariaDB.
+  - src: "{{ kolla_extra_config_path }}/mariadb"
+    dest: "{{ kolla_node_custom_config_path }}/mariadb"
+    patterns: "*"
+    enabled: "{{ kolla_enable_mariadb }}"
   # Murano.
   - src: "{{ kolla_extra_config_path }}/murano"
     dest: "{{ kolla_node_custom_config_path }}/murano"
diff --git a/releasenotes/notes/add-support-for-configuring-mariadb-646badcc9dd07019.yaml b/releasenotes/notes/add-support-for-configuring-mariadb-646badcc9dd07019.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2d5a097d60d6024279306da75785693bcf415139
--- /dev/null
+++ b/releasenotes/notes/add-support-for-configuring-mariadb-646badcc9dd07019.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add support for configuring MariaDB to support customising the Kolla
+    deployment, or using an external DB.