diff --git a/ansible/roles/cinder/tasks/ceph.yml b/ansible/roles/cinder/tasks/ceph.yml
index 952ebeddcf4da5ebaa14adf1ee2e2c461e6807b8..719458fc8ad54992af5d21c78cbcc4c5dde041d2 100644
--- a/ansible/roles/cinder/tasks/ceph.yml
+++ b/ansible/roles/cinder/tasks/ceph.yml
@@ -1,22 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  vars:
-    services_need_directory:
-      - "cinder-volume"
-      - "cinder-backup"
-  file:
-    path: "{{ node_config_directory }}/{{ item.key }}"
-    state: "directory"
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-    mode: "0770"
-  become: true
-  when:
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-    - item.key in services_need_directory
-  with_dict: "{{ cinder_services }}"
-
 - name: Copying over ceph.conf(s)
   vars:
     services_need_config:
diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml
index 348f5674dd22c4d4dddbbe1a367c8663741232ff..c7b69411e888f45ee7b3a173aaa326d2c04d8192 100644
--- a/ansible/roles/cinder/tasks/config.yml
+++ b/ansible/roles/cinder/tasks/config.yml
@@ -12,6 +12,21 @@
     - item.value.enabled | bool
   with_dict: "{{ cinder_services }}"
 
+- include_tasks: ceph.yml
+  when:
+    - (enable_ceph | bool) and (cinder_backend_ceph | bool)
+    - inventory_hostname in groups['ceph-mon'] or
+        inventory_hostname in groups['cinder-api'] or
+        inventory_hostname in groups['cinder-volume'] or
+        inventory_hostname in groups['cinder-scheduler'] or
+        inventory_hostname in groups['cinder-backup']
+
+- include_tasks: external_ceph.yml
+  when:
+    - (enable_ceph | bool == False) and (cinder_backend_ceph | bool)
+    - inventory_hostname in groups['cinder-volume'] or
+      inventory_hostname in groups['cinder-backup']
+
 - name: Check if policies shall be overwritten
   local_action: stat path="{{ item }}"
   run_once: True
diff --git a/ansible/roles/cinder/tasks/deploy.yml b/ansible/roles/cinder/tasks/deploy.yml
index 9a5765f17e5eb368c00b50fe78a9d9d8bbaeab00..d7bd033ac9b77d75a8cbbe1faf80b6b964fc4602 100644
--- a/ansible/roles/cinder/tasks/deploy.yml
+++ b/ansible/roles/cinder/tasks/deploy.yml
@@ -1,24 +1,10 @@
 ---
-- include_tasks: ceph.yml
-  when:
-    - (enable_ceph | bool) and (cinder_backend_ceph | bool)
-    - inventory_hostname in groups['ceph-mon'] or
-        inventory_hostname in groups['cinder-api'] or
-        inventory_hostname in groups['cinder-volume'] or
-        inventory_hostname in groups['cinder-scheduler'] or
-        inventory_hostname in groups['cinder-backup']
-
-- include_tasks: external_ceph.yml
-  when:
-    - (enable_ceph | bool == False) and (cinder_backend_ceph | bool)
-    - inventory_hostname in groups['cinder-volume'] or
-      inventory_hostname in groups['cinder-backup']
-
 - include_tasks: register.yml
   when: inventory_hostname in groups['cinder-api']
 
 - include_tasks: config.yml
-  when: inventory_hostname in groups['cinder-api'] or
+  when: inventory_hostname in groups['ceph-mon'] or
+        inventory_hostname in groups['cinder-api'] or
         inventory_hostname in groups['cinder-volume'] or
         inventory_hostname in groups['cinder-scheduler'] or
         inventory_hostname in groups['cinder-backup']
diff --git a/ansible/roles/cinder/tasks/external_ceph.yml b/ansible/roles/cinder/tasks/external_ceph.yml
index d23b20d2d9df4bc6be7d60d72e27fd2ba4ebabdc..2d63d06d9e1f0e9f989c0bc79f7212260cedef44 100644
--- a/ansible/roles/cinder/tasks/external_ceph.yml
+++ b/ansible/roles/cinder/tasks/external_ceph.yml
@@ -1,22 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  vars:
-    services_need_directory:
-      - "cinder-volume"
-      - "cinder-backup"
-  file:
-    path: "{{ node_config_directory }}/{{ item.key }}"
-    state: "directory"
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-    mode: "0770"
-  become: true
-  when:
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-    - item.key in services_need_directory
-  with_dict: "{{ cinder_services }}"
-
 - name: Copying over ceph.conf for Cinder
   vars:
     services_need_config:
diff --git a/ansible/roles/glance/tasks/ceph.yml b/ansible/roles/glance/tasks/ceph.yml
index 04ff51af3eeb639c1b2a82ad8645c974cc8f0b9b..49f43bd2c74f204a94dcb81672b499054b8cb861 100644
--- a/ansible/roles/glance/tasks/ceph.yml
+++ b/ansible/roles/glance/tasks/ceph.yml
@@ -1,12 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/glance-api"
-    state: "directory"
-    mode: "0770"
-  become: true
-  when: inventory_hostname in groups['glance-api']
-
 - name: Copying over ceph.conf(s)
   merge_configs:
     sources:
diff --git a/ansible/roles/glance/tasks/config.yml b/ansible/roles/glance/tasks/config.yml
index f39a879bd45e43a0c76945f7c0c7f11b75d856bd..e7c459555fc343a984608659e0810a7ff447cb71 100644
--- a/ansible/roles/glance/tasks/config.yml
+++ b/ansible/roles/glance/tasks/config.yml
@@ -1,14 +1,4 @@
 ---
-- include_tasks: ceph.yml
-  when:
-    - enable_ceph | bool
-    - glance_backend_ceph | bool
-
-- include_tasks: external_ceph.yml
-  when:
-    - enable_ceph | bool == False
-    - glance_backend_ceph | bool
-
 - name: Ensuring config directories exist
   file:
     path: "{{ node_config_directory }}/{{ item.key }}"
@@ -22,6 +12,16 @@
     - item.value.enabled | bool
   with_dict: "{{ glance_services }}"
 
+- include_tasks: ceph.yml
+  when:
+    - enable_ceph | bool
+    - glance_backend_ceph | bool
+
+- include_tasks: external_ceph.yml
+  when:
+    - enable_ceph | bool == False
+    - glance_backend_ceph | bool
+
 - name: Check if policies shall be overwritten
   local_action: stat path="{{ item }}"
   run_once: True
diff --git a/ansible/roles/glance/tasks/external_ceph.yml b/ansible/roles/glance/tasks/external_ceph.yml
index 513e0635086487ee9b558f7b0ce86320542a4fe4..33b20731b8691dbd3eaa220a149d38a4a97cdf21 100644
--- a/ansible/roles/glance/tasks/external_ceph.yml
+++ b/ansible/roles/glance/tasks/external_ceph.yml
@@ -1,12 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/glance-api"
-    state: "directory"
-    mode: "0770"
-  become: true
-  when: inventory_hostname in groups['glance-api']
-
 - name: Copy over ceph files
   copy:
     src: "{{ item }}"
diff --git a/ansible/roles/gnocchi/tasks/ceph.yml b/ansible/roles/gnocchi/tasks/ceph.yml
index d6bed838e328087018e1c956214edfb78f06a4b6..f85eae2c0f945bd72bcbfc0bbea164ae93a628f1 100644
--- a/ansible/roles/gnocchi/tasks/ceph.yml
+++ b/ansible/roles/gnocchi/tasks/ceph.yml
@@ -1,15 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    state: "directory"
-  become: true
-  when: inventory_hostname in groups[item]
-  with_items:
-    - "gnocchi-api"
-    - "gnocchi-metricd"
-    - "gnocchi-statsd"
-
 - name: Copying over ceph.conf(s)
   merge_configs:
     sources:
diff --git a/ansible/roles/gnocchi/tasks/config.yml b/ansible/roles/gnocchi/tasks/config.yml
index 6922dfff0cf243e2d4b39ea0975ce2ccab06948a..87c4e87f230b2629c9f8e0170f8464bc0f620261 100644
--- a/ansible/roles/gnocchi/tasks/config.yml
+++ b/ansible/roles/gnocchi/tasks/config.yml
@@ -12,6 +12,16 @@
     - item.value.enabled | bool
   with_dict: "{{ gnocchi_services }}"
 
+- include_tasks: ceph.yml
+  when:
+    - enable_ceph | bool
+    - gnocchi_backend_storage == 'ceph'
+
+- include_tasks: external_ceph.yml
+  when:
+    - enable_ceph | bool == False
+    - gnocchi_backend_storage == 'ceph'
+
 - name: Check if policies shall be overwritten
   local_action: stat path="{{ item }}"
   run_once: True
diff --git a/ansible/roles/gnocchi/tasks/deploy.yml b/ansible/roles/gnocchi/tasks/deploy.yml
index e80952cb85ebf7c29f491de8466dab3464626a85..f371e4f03ee14bb0d2f44eec34b35a2b074754ae 100644
--- a/ansible/roles/gnocchi/tasks/deploy.yml
+++ b/ansible/roles/gnocchi/tasks/deploy.yml
@@ -1,14 +1,4 @@
 ---
-- include_tasks: ceph.yml
-  when:
-    - enable_ceph | bool
-    - gnocchi_backend_storage == 'ceph'
-
-- include_tasks: external_ceph.yml
-  when:
-    - enable_ceph | bool == False
-    - gnocchi_backend_storage == 'ceph'
-
 - include_tasks: register.yml
   when: inventory_hostname in groups['gnocchi-api']
 
diff --git a/ansible/roles/gnocchi/tasks/external_ceph.yml b/ansible/roles/gnocchi/tasks/external_ceph.yml
index e3bf801ad0898971535af835dedc3a8d981ee4f9..0e54c73b11728d7c20d704dd3246a35c95424541 100644
--- a/ansible/roles/gnocchi/tasks/external_ceph.yml
+++ b/ansible/roles/gnocchi/tasks/external_ceph.yml
@@ -1,15 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    state: "directory"
-  become: true
-  when: inventory_hostname in groups[item]
-  with_items:
-    - "gnocchi-api"
-    - "gnocchi-metricd"
-    - "gnocchi-statsd"
-
 - name: Copy over ceph.conf file
   template:
     src: "{{ node_custom_config }}/gnocchi/ceph.conf"
diff --git a/ansible/roles/manila/tasks/ceph.yml b/ansible/roles/manila/tasks/ceph.yml
index 2cbc0b343c8a2f7d6511ce72994dae82a8d68ae1..eb1870cb7a36ebfb3dea81ce081d1f71363521c0 100644
--- a/ansible/roles/manila/tasks/ceph.yml
+++ b/ansible/roles/manila/tasks/ceph.yml
@@ -1,10 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/manila-share"
-    state: "directory"
-  become: true
-
 - name: Copying over ceph.conf for manila
   merge_configs:
     sources:
diff --git a/ansible/roles/manila/tasks/config.yml b/ansible/roles/manila/tasks/config.yml
index aa54addb6e62c2233b6530d7f22d59f9c0a8a28f..15da1faf849a5e054f9c37f7534f74e0da37ee4c 100644
--- a/ansible/roles/manila/tasks/config.yml
+++ b/ansible/roles/manila/tasks/config.yml
@@ -12,6 +12,20 @@
     - item.value.enabled | bool
   with_dict: "{{ manila_services }}"
 
+- include_tasks: ceph.yml
+  when:
+    - enable_ceph | bool
+    - enable_ceph_mds | bool
+    - (enable_manila_backend_cephfs_native | bool) or (enable_manila_backend_cephfs_nfs | bool)
+    - inventory_hostname in groups['manila-share']
+
+- include_tasks: external_ceph.yml
+  when:
+    - enable_ceph| bool == False
+    - enable_ceph_mds| bool == False
+    - (enable_manila_backend_cephfs_native | bool) or (enable_manila_backend_cephfs_nfs | bool)
+    - inventory_hostname in groups['manila-share']
+
 - name: Check if policies shall be overwritten
   local_action: stat path="{{ item }}"
   run_once: True
diff --git a/ansible/roles/manila/tasks/deploy.yml b/ansible/roles/manila/tasks/deploy.yml
index 00060bb0ce90f091b5f44af18e5b7a6ee11c2aac..1f703768e091eb3818e23ade2c91ac2ae9e9f620 100644
--- a/ansible/roles/manila/tasks/deploy.yml
+++ b/ansible/roles/manila/tasks/deploy.yml
@@ -1,18 +1,4 @@
 ---
-- include_tasks: ceph.yml
-  when:
-    - enable_ceph | bool
-    - enable_ceph_mds | bool
-    - (enable_manila_backend_cephfs_native | bool) or (enable_manila_backend_cephfs_nfs | bool)
-    - inventory_hostname in groups['manila-share']
-
-- include_tasks: external_ceph.yml
-  when:
-    - enable_ceph| bool == False
-    - enable_ceph_mds| bool == False
-    - (enable_manila_backend_cephfs_native | bool) or (enable_manila_backend_cephfs_nfs | bool)
-    - inventory_hostname in groups['manila-share']
-
 - include_tasks: clone.yml
   when: manila_dev_mode | bool
 
diff --git a/ansible/roles/manila/tasks/external_ceph.yml b/ansible/roles/manila/tasks/external_ceph.yml
index 10b89d42048807a682b0cfc5742cfb3d3b6786ee..2ffb04c038887b507a3796e008eb39861d2c77fd 100644
--- a/ansible/roles/manila/tasks/external_ceph.yml
+++ b/ansible/roles/manila/tasks/external_ceph.yml
@@ -1,12 +1,4 @@
 ---
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/manila-share"
-    state: "directory"
-  become: true
-  when:
-    - inventory_hostname in groups['manila-share']
-
 - name: Copying over ceph.conf for manila
   template:
     src: "{{ node_custom_config }}/manila/ceph.conf"
diff --git a/ansible/roles/nova/tasks/ceph.yml b/ansible/roles/nova/tasks/ceph.yml
index ec3122b35269890aa6e98bd12c42053efd646616..76aa128447f4d10476ca175c5ae0c322f73323d1 100644
--- a/ansible/roles/nova/tasks/ceph.yml
+++ b/ansible/roles/nova/tasks/ceph.yml
@@ -6,7 +6,6 @@
     mode: "0770"
   become: true
   with_items:
-    - "nova-compute"
     - "nova-libvirt/secrets"
   when: inventory_hostname in groups['compute']
 
diff --git a/ansible/roles/nova/tasks/config.yml b/ansible/roles/nova/tasks/config.yml
index b2d956f7e00f0d4592c0c99b9581560a91602d7d..9c9a2e75aeaaf6e74ccb8efcb63c094a1d4b070c 100644
--- a/ansible/roles/nova/tasks/config.yml
+++ b/ansible/roles/nova/tasks/config.yml
@@ -24,6 +24,22 @@
     - item.value.enabled | bool
   with_dict: "{{ nova_services }}"
 
+- include_tasks: ceph.yml
+  when:
+    - enable_ceph | bool and nova_backend == "rbd"
+    - inventory_hostname in groups['ceph-mon'] or
+        inventory_hostname in groups['compute'] or
+        inventory_hostname in groups['nova-api'] or
+        inventory_hostname in groups['nova-conductor'] or
+        inventory_hostname in groups['nova-consoleauth'] or
+        inventory_hostname in groups['nova-novncproxy'] or
+        inventory_hostname in groups['nova-scheduler']
+
+- include_tasks: external_ceph.yml
+  when:
+    - not enable_ceph | bool and (nova_backend == "rbd" or cinder_backend_ceph | bool)
+    - inventory_hostname in groups['compute']
+
 - name: Check if policies shall be overwritten
   local_action: stat path="{{ item }}"
   run_once: True
diff --git a/ansible/roles/nova/tasks/deploy.yml b/ansible/roles/nova/tasks/deploy.yml
index 74d3e50007ca24af6e7b3d1c8505f1477a58fccb..0ea76bd066f323feb15f5f2863c077037b663060 100644
--- a/ansible/roles/nova/tasks/deploy.yml
+++ b/ansible/roles/nova/tasks/deploy.yml
@@ -1,20 +1,4 @@
 ---
-- include_tasks: ceph.yml
-  when:
-    - enable_ceph | bool and nova_backend == "rbd"
-    - inventory_hostname in groups['ceph-mon'] or
-        inventory_hostname in groups['compute'] or
-        inventory_hostname in groups['nova-api'] or
-        inventory_hostname in groups['nova-conductor'] or
-        inventory_hostname in groups['nova-consoleauth'] or
-        inventory_hostname in groups['nova-novncproxy'] or
-        inventory_hostname in groups['nova-scheduler']
-
-- include_tasks: external_ceph.yml
-  when:
-    - not enable_ceph | bool and (nova_backend == "rbd" or cinder_backend_ceph | bool)
-    - inventory_hostname in groups['compute']
-
 - include_tasks: register.yml
   when: inventory_hostname in groups['nova-api']
 
diff --git a/ansible/roles/nova/tasks/external_ceph.yml b/ansible/roles/nova/tasks/external_ceph.yml
index 93950f621eccd22643921916be205e55a37818fc..bbba9997d516278ed4b2206588251f3244ebadd3 100644
--- a/ansible/roles/nova/tasks/external_ceph.yml
+++ b/ansible/roles/nova/tasks/external_ceph.yml
@@ -6,7 +6,6 @@
     mode: "0770"
   become: true
   with_items:
-    - "nova-compute"
     - "nova-libvirt/secrets"
   when: inventory_hostname in groups['compute']