From 0353dba39a6f8843f4918554fc22300f5f2a9341 Mon Sep 17 00:00:00 2001
From: Doug Szumski <doug@stackhpc.com>
Date: Tue, 26 Jun 2018 16:56:42 +0100
Subject: [PATCH] Add support for configuring MariaDB

This enables:

* Disabling MariaDB if external MariaDB is used
* Merging additional configuration with the default Kolla
  provided configuration for MariaDB

Story: 2002704
Task: 22545
Change-Id: I345f56d50dd64b516d563a025ec877bc4a4034e1
---
 ansible/group_vars/all/kolla                             | 3 +++
 ansible/kolla-openstack.yml                              | 2 ++
 ansible/roles/kolla-ansible/tests/test-defaults.yml      | 1 +
 ansible/roles/kolla-ansible/tests/test-extras.yml        | 2 ++
 ansible/roles/kolla-ansible/vars/main.yml                | 1 +
 ansible/roles/kolla-openstack/defaults/main.yml          | 9 +++++++++
 .../molecule/default/tests/test_default.py               | 1 +
 .../molecule/enable-everything/molecule.yml              | 4 ++++
 .../molecule/enable-everything/tests/test_default.py     | 2 ++
 ansible/roles/kolla-openstack/tasks/config.yml           | 1 +
 ansible/roles/kolla-openstack/templates/galera.cnf.j2    | 9 +++++++++
 ansible/roles/kolla-openstack/vars/main.yml              | 5 +++++
 ...support-for-configuring-mariadb-646badcc9dd07019.yaml | 4 ++++
 13 files changed, 44 insertions(+)
 create mode 100644 ansible/roles/kolla-openstack/templates/galera.cnf.j2
 create mode 100644 releasenotes/notes/add-support-for-configuring-mariadb-646badcc9dd07019.yaml

diff --git a/ansible/group_vars/all/kolla b/ansible/group_vars/all/kolla
index 60fcf9fb..77607b95 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 791f1bfe..0beda1af 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 9a430aca..8a66d484 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 5b824088..be579663 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 29dd9a65..5ff8610d 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 e50fa4ff..677d3ed9 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 f364acab..c86d96e7 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 e15854a2..c2386746 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 54c03d7d..089e27ed 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 459ea648..f53c0249 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 00000000..55122ebb
--- /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 0dcb634d..c9bc4479 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 00000000..2d5a097d
--- /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.
-- 
GitLab