diff --git a/ansible/roles/cinder/tasks/ceph.yml b/ansible/roles/cinder/tasks/ceph.yml
index abf4606d9bc63220ffe0d327138fc90e06e8a71e..45d6790770a8631ada3ed01a6f782a507c9f7ce3 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 cb031fa09e36bae1c91d53079a3fe63b63b38c24..ad7aa07173bba247034d456316537110159ce465 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 e5c6d9a1694488c4aa65765e638e9b42edad3d9d..79717c1ffa9241e25fe835258840268f76f4ef7d 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 36a2dfc2a44c52a151e8d4a256aa6df8510c1911..b7bd94839f4b673fda8d7444e76921b0564edbdb 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"