From b25c6b15fea6b5114cf417152ead0abade08ffc1 Mon Sep 17 00:00:00 2001
From: jackning <ningyougang@navercorp.com>
Date: Fri, 13 Jan 2017 11:13:35 +0800
Subject: [PATCH] Render ceph.conf using merge_configs

At present, cinder/nova/glance/gnocchi relative containers's
ceph.conf aren't be merge from user custom's config.
In some condition, we should add extra parameter to custom's
ceph.conf, for example:rbd_default_features = 1.

So, it is necessary to use merge_configs instead of template.
Closes-Bug: #1656162

Change-Id: I824e0c68af270b85c52382ae35987213266fc6f6
---
 ansible/roles/cinder/tasks/ceph.yml  | 11 ++++++++---
 ansible/roles/glance/tasks/ceph.yml  |  9 ++++++---
 ansible/roles/gnocchi/tasks/ceph.yml | 11 ++++++++---
 ansible/roles/nova/tasks/ceph.yml    | 11 ++++++++---
 4 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/ansible/roles/cinder/tasks/ceph.yml b/ansible/roles/cinder/tasks/ceph.yml
index abf4606d9b..45d6790770 100644
--- a/ansible/roles/cinder/tasks/ceph.yml
+++ b/ansible/roles/cinder/tasks/ceph.yml
@@ -8,9 +8,14 @@
     - "cinder-backup"
   when: inventory_hostname in groups['cinder-volume']
 
-- name: Copying over config(s)
-  template:
-    src: roles/ceph/templates/ceph.conf.j2
+- name: Copying over ceph.conf(s)
+  merge_configs:
+    vars:
+      service_name: "{{ item }}"
+    sources:
+      - "{{ role_path }}/../ceph/templates/ceph.conf.j2"
+      - "{{ node_custom_config }}/ceph.conf"
+      - "{{ node_custom_config }}/ceph/{{ inventory_hostname }}/ceph.conf"
     dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
   with_items:
     - "cinder-volume"
diff --git a/ansible/roles/glance/tasks/ceph.yml b/ansible/roles/glance/tasks/ceph.yml
index cb031fa09e..ad7aa07173 100644
--- a/ansible/roles/glance/tasks/ceph.yml
+++ b/ansible/roles/glance/tasks/ceph.yml
@@ -5,9 +5,12 @@
     state: "directory"
   when: inventory_hostname in groups['glance-api']
 
-- name: Copying over config(s)
-  template:
-    src: roles/ceph/templates/ceph.conf.j2
+- name: Copying over ceph.conf(s)
+  merge_configs:
+    sources:
+      - "{{ role_path }}/../ceph/templates/ceph.conf.j2"
+      - "{{ node_custom_config }}/ceph.conf"
+      - "{{ node_custom_config }}/ceph/{{ inventory_hostname }}/ceph.conf"
     dest: "{{ node_config_directory }}/glance-api/ceph.conf"
   when: inventory_hostname in groups['glance-api']
 
diff --git a/ansible/roles/gnocchi/tasks/ceph.yml b/ansible/roles/gnocchi/tasks/ceph.yml
index e5c6d9a169..79717c1ffa 100644
--- a/ansible/roles/gnocchi/tasks/ceph.yml
+++ b/ansible/roles/gnocchi/tasks/ceph.yml
@@ -9,9 +9,14 @@
     - "gnocchi-metricd"
     - "gnocchi-statsd"
 
-- name: Copying over config(s)
-  template:
-    src: roles/ceph/templates/ceph.conf.j2
+- name: Copying over ceph.conf(s)
+  merge_configs:
+    vars:
+      service_name: "{{ item }}"
+    sources:
+      - "{{ role_path }}/../ceph/templates/ceph.conf.j2"
+      - "{{ node_custom_config }}/ceph.conf"
+      - "{{ node_custom_config }}/ceph/{{ inventory_hostname }}/ceph.conf"
     dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
   when: inventory_hostname in groups[item]
   with_items:
diff --git a/ansible/roles/nova/tasks/ceph.yml b/ansible/roles/nova/tasks/ceph.yml
index 36a2dfc2a4..b7bd94839f 100644
--- a/ansible/roles/nova/tasks/ceph.yml
+++ b/ansible/roles/nova/tasks/ceph.yml
@@ -8,9 +8,14 @@
     - "nova-libvirt/secrets"
   when: inventory_hostname in groups['compute']
 
-- name: Copying over config(s)
-  template:
-    src: roles/ceph/templates/ceph.conf.j2
+- name: Copying over ceph.conf(s)
+  merge_configs:
+    vars:
+      service_name: "{{ item }}"
+    sources:
+      - "{{ role_path }}/../ceph/templates/ceph.conf.j2"
+      - "{{ node_custom_config }}/ceph.conf"
+      - "{{ node_custom_config }}/ceph/{{ inventory_hostname }}/ceph.conf"
     dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
   with_items:
     - "nova-compute"