From 4667fd4e549d5d46684fef6aea92cef8da702759 Mon Sep 17 00:00:00 2001
From: Pierre Riteau <pierre@stackhpc.com>
Date: Mon, 17 Jun 2019 18:19:08 +0100
Subject: [PATCH] Add support for overriding OpenStack configuration globally

This commit allows Kayobe to generate a global.conf file for use by
Kolla Ansible to override configuration across all OpenStack services.

Change-Id: I6d144a945e1cde06fa9fdd03c30102458c0c9f8d
Story: 2005904
Task: 34153
---
 ansible/kolla-openstack.yml                              | 2 ++
 ansible/roles/kolla-openstack/defaults/main.yml          | 6 ++++++
 .../molecule/enable-everything/molecule.yml              | 2 ++
 ansible/roles/kolla-openstack/tasks/config.yml           | 1 +
 ansible/roles/kolla-openstack/templates/global.conf.j2   | 9 +++++++++
 doc/source/configuration/kolla-ansible.rst               | 1 +
 .../add-support-for-global-conf-411316a7250611b4.yaml    | 6 ++++++
 7 files changed, 27 insertions(+)
 create mode 100644 ansible/roles/kolla-openstack/templates/global.conf.j2
 create mode 100644 releasenotes/notes/add-support-for-global-conf-411316a7250611b4.yaml

diff --git a/ansible/kolla-openstack.yml b/ansible/kolla-openstack.yml
index 220896dc..ebe33441 100644
--- a/ansible/kolla-openstack.yml
+++ b/ansible/kolla-openstack.yml
@@ -107,6 +107,7 @@
             - { name: cinder, file: cinder.conf }
             - { name: designate, file: designate.conf }
             - { name: glance, file: glance.conf }
+            - { name: global, file: global.conf }
             - { name: gnocchi, file: gnocchi.conf }
             - { name: grafana, file: grafana.ini }
             - { name: heat, file: heat.conf }
@@ -214,6 +215,7 @@
       kolla_extra_cinder: "{{ kolla_extra_config.cinder | default }}"
       kolla_extra_designate: "{{ kolla_extra_config.designate | default }}"
       kolla_extra_glance: "{{ kolla_extra_config.glance | default }}"
+      kolla_extra_global: "{{ kolla_extra_config.global | default }}"
       kolla_extra_gnocchi: "{{ kolla_extra_config.gnocchi | default }}"
       kolla_extra_grafana: "{{ kolla_extra_config.grafana | default }}"
       kolla_extra_heat: "{{ kolla_extra_config.heat | default }}"
diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml
index e1bedebc..c7ccc410 100644
--- a/ansible/roles/kolla-openstack/defaults/main.yml
+++ b/ansible/roles/kolla-openstack/defaults/main.yml
@@ -5,6 +5,12 @@ kolla_extra_config_path:
 # Directory where Kolla custom configuration files will be installed.
 kolla_node_custom_config_path: /etc/kolla/config
 
+###############################################################################
+# Global configuration.
+
+# Free form extra configuration to append to global.conf.
+kolla_extra_global:
+
 ###############################################################################
 # Barbican configuration.
 
diff --git a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
index bcf3bb6a..cc057943 100644
--- a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
+++ b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
@@ -34,6 +34,8 @@ provisioner:
         kolla_extra_glance: |
           [extra-glance.conf]
           foo=bar
+        kolla_extra_global: |
+          [extra-global.conf]
         kolla_enable_gnocchi: true
         kolla_extra_gnocchi: |
           [extra-gnocchi.conf]
diff --git a/ansible/roles/kolla-openstack/tasks/config.yml b/ansible/roles/kolla-openstack/tasks/config.yml
index 1396fa34..2e5d9e29 100644
--- a/ansible/roles/kolla-openstack/tasks/config.yml
+++ b/ansible/roles/kolla-openstack/tasks/config.yml
@@ -19,6 +19,7 @@
     - { 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: global.conf.j2, dest: global.conf, enabled: true }
     - { src: gnocchi.conf.j2, dest: gnocchi.conf, enabled: "{{ kolla_enable_gnocchi }}" }
     - { 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/global.conf.j2 b/ansible/roles/kolla-openstack/templates/global.conf.j2
new file mode 100644
index 00000000..5b27f362
--- /dev/null
+++ b/ansible/roles/kolla-openstack/templates/global.conf.j2
@@ -0,0 +1,9 @@
+# {{ ansible_managed }}
+
+{% if kolla_extra_global %}
+#######################
+# Extra configuration
+#######################
+
+{{ kolla_extra_global }}
+{% endif %}
diff --git a/doc/source/configuration/kolla-ansible.rst b/doc/source/configuration/kolla-ansible.rst
index 35ac2bda..6c5cc15a 100644
--- a/doc/source/configuration/kolla-ansible.rst
+++ b/doc/source/configuration/kolla-ansible.rst
@@ -164,6 +164,7 @@ which files are supported.
    ``fluentd/output``              Fluentd output configuration.
    ``glance.conf``                 Glance configuration.
    ``glance/*``                    Extended Glance configuration.
+   ``global.conf``                 Global configuration for all OpenStack services.
    ``gnocchi.conf``                Gnocchi configuration.
    ``gnocchi/*``                   Extended Gnocchi configuration.
    ``grafana/*``                   Extended Grafana configuration.
diff --git a/releasenotes/notes/add-support-for-global-conf-411316a7250611b4.yaml b/releasenotes/notes/add-support-for-global-conf-411316a7250611b4.yaml
new file mode 100644
index 00000000..384b78d0
--- /dev/null
+++ b/releasenotes/notes/add-support-for-global-conf-411316a7250611b4.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - Adds support for overriding configuration globally for all OpenStack
+    services by generating a ``global.conf`` file for use by Kolla Ansible.
+    See `story 2005904 <https://storyboard.openstack.org/#!/story/2005904>`__
+    for details.
-- 
GitLab