diff --git a/ansible/roles/ceph/tasks/do_reconfigure.yml b/ansible/roles/ceph/tasks/do_reconfigure.yml
index e74d8e2f95cddbf761d788cf79aebf91b1eb9f94..7d18527f0e51a7fc2005ecbbc38da270e9d90a58 100644
--- a/ansible/roles/ceph/tasks/do_reconfigure.yml
+++ b/ansible/roles/ceph/tasks/do_reconfigure.yml
@@ -1,145 +1,214 @@
 ---
-- name: Ensuring the containers ceph_mon and ceph_rgw are up
+- name: Ensuring the ceph_mon container is up
   kolla_docker:
     name: "{{ item.name }}"
     action: "get_container_state"
-  register: container_state
+  register: ceph_mon_container_state
   failed_when: container_state.Running == false
   when: inventory_hostname in groups[item.group]
   with_items:
     - { name: ceph_mon, group: ceph-mon }
-    - { name: ceph_rgw, group: ceph-rgw }
+
+- name: Looking up OSDs for Ceph
+  command: docker exec -t kolla_toolbox /usr/bin/ansible localhost
+    -m find_disks
+    -a "partition_name='KOLLA_CEPH_DATA' match_mode='prefix'"
+  register: osd_lookup
+  changed_when: "{{ osd_lookup.stdout.find('localhost | SUCCESS => ') != -1 and (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
+  failed_when: osd_lookup.stdout.split()[2] != 'SUCCESS'
+  when: inventory_hostname in groups['ceph-osd']
+
+- name: Reading data from variable
+  set_fact:
+    osds: "{{ (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}"
+  when: inventory_hostname in groups['ceph-osd']
 
 - name: Gathering OSD IDs
   command: "cat /var/lib/ceph/osd/{{ item['fs_uuid'] }}/whoami"
   with_items: osds
-  register: id
+  register: osd_ids
   changed_when: False
-  failed_when: id.rc != 0
+  failed_when: osd_ids.rc != 0
+  when: inventory_hostname in groups['ceph-osd']
 
 - name: Ensuring the ceph_osd container is up
   kolla_docker:
-    name: "ceph_osd_{{ item.0.stdout }}"
+    name: "ceph_osd_{{ item.stdout }}"
+    action: "get_container_state"
+  register: ceph_osd_container_state
+  failed_when: ceph_osd_container_state.Running == false
+  when: inventory_hostname in groups['ceph-osd']
+  with_items: osd_ids.results
+
+- name: Ensuring the ceph_rgw container is up
+  kolla_docker:
+    name: "{{ item.name }}"
     action: "get_container_state"
-  register: container_state
+  register: ceph_rgw_container_state
   failed_when: container_state.Running == false
-  with_together:
-    - id.results
-    - osds
-  when: osds
+  when:
+    - enable_ceph_rgw | bool
+    - inventory_hostname in groups[item.group]
+  with_items:
+    - { name: ceph_rgw, group: ceph-rgw }
 
 - include: config.yml
 
-- name: Check the configs in ceph_mon and ceph_rgw containers
+- name: Check the configs in ceph_mon container
   command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
   changed_when: false
   failed_when: false
-  register: check_results
+  register: ceph_mon_check_results
   when: inventory_hostname in groups[item.group]
   with_items:
     - { name: ceph_mon, group: ceph-mon }
-    - { name: ceph_rgw, group: ceph-rgw }
 
 - name: Check the configs in the ceph_osd container
-  command: docker exec ceph_osd_{{ item.0.stdout }} /usr/local/bin/kolla_set_configs --check
+  command: docker exec ceph_osd_{{ item.stdout }} /usr/local/bin/kolla_set_configs --check
   changed_when: false
   failed_when: false
-  with_together:
-    - id.results
-    - osds
-  when: osds
+  register: ceph_osd_check_results
+  with_items: osd_ids.results
+  when: inventory_hostname in groups['ceph-osd']
+
+- name: Check the configs in ceph_rgw container
+  command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
+  changed_when: false
+  failed_when: false
+  register: ceph_rgw_check_results
+  when:
+    - inventory_hostname in groups[item.group]
+    - enable_ceph_rgw | bool
+  with_items:
+    - { name: ceph_rgw, group: ceph-rgw}
 
-# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS'
-# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE',
-# just remove the container and start again
-- name: Containers config strategy for ceph_mon and ceph_rgw containers
+- name: Containers config strategy for ceph_mon container
   kolla_docker:
     name: "{{ item.name }}"
     action: "get_container_env"
-  register: container_envs
+  register: ceph_mon_container_envs
   when: inventory_hostname in groups[item.group]
   with_items:
     - { name: ceph_mon, group: ceph-mon }
-    - { name: ceph_rgw, group: ceph-rgw }
 
-- name: Containers config strategy for the ceph_osd container
+- name: Containers config strategy for the ceph_osd containers
   kolla_docker:
-    name: "ceph_osd_{{ item.0.stdout }}"
+    name: "ceph_osd_{{ item.stdout }}"
     action: "get_container_env"
-  with_together:
-    - id.results
+  register: ceph_osd_container_envs
+  with_items: osd_ids.results
+  when:
+    - inventory_hostname in groups['ceph-osd']
     - osds
-  when: osds
 
-- name: Remove the ceph_mon and ceph_rgw containers
+- name: Containers config strategy for ceph_rgw container
+  kolla_docker:
+    name: "{{ item.name }}"
+    action: "get_container_env"
+  register: ceph_rgw_container_envs
+  when:
+    - inventory_hostname in groups[item.group]
+    - enable_ceph_rgw | bool
+  with_items:
+    - { name: ceph_rgw, group: ceph-rgw }
+
+- name: Remove the ceph_mon container
   kolla_docker:
     name: "{{ item[0]['name'] }}"
     action: "remove_container"
-  register: remove_containers
+  register: remove_ceph_mon_container
   when:
+    - inventory_hostname in groups[item[0]['group']]
     - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
     - item[2]['rc'] == 1
-    - inventory_hostname in groups[item[0]['group']]
   with_together:
-    - [{ name: ceph_mon, group: ceph-mon },
-       { name: ceph_rgw, group: ceph-rgw }]
-    - container_envs.results
-    - check_results.results
+    - [{ name: ceph_mon, group: ceph-mon }]
+    - ceph_mon_container_envs.results
+    - ceph_mon_check_results.results
 
-- name: Remove the ceph_osd container
+- name: Remove the ceph_osd containers
   kolla_docker:
     name: "ceph_osd_{{ item.0.stdout }}"
     action: "remove_container"
+  register: remove_ceph_osd_containers
   when:
-    - config_strategy == "COPY_ONCE" or item[2]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
-    - item[3]['rc'] == 1
+    - inventory_hostname in groups['ceph-osd']
+    - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
+    - item[2]['rc'] == 1
     - osds
   with_together:
-    - id.results
-    - osds
-    - container_envs.results
-    - check_results.results
+    - osd_ids.results
+    - ceph_osd_container_envs.results
+    - ceph_osd_check_results.results
+
+- name: Remove the ceph_rgw container
+  kolla_docker:
+    name: "{{ item[0]['name'] }}"
+    action: "remove_container"
+  register: remove_ceph_rgw_container
+  when:
+    - enable_ceph_rgw | bool
+    - inventory_hostname in groups[item[0]['group']]
+    - config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
+    - item[2]['rc'] == 1
+  with_together:
+    - [{ name: ceph_rgw, group: ceph-rgw }]
+    - ceph_rgw_container_envs.results
+    - ceph_rgw_check_results.results
+
+- include: start_mons.yml
+  when:
+    - inventory_hostname in groups['ceph-mon']
+    - remove_ceph_mon_container.changed
 
-- include: deploy.yml
-  when: remove_containers.changed
+- include: start_osds.yml
+  when:
+    - inventory_hostname in groups['ceph-osd']
+    - remove_ceph_osd_containers.changed
+
+- include: start_rgws.yml
+  when:
+    - inventory_hostname in groups['ceph-rgw']
+    - remove_ceph_rgw_container.changed
 
 - name: Restart the ceph_mon container
   kolla_docker:
     name: "ceph_mon"
     action: "restart_container"
   when:
+    - inventory_hostname in groups['ceph-mon']
     - config_strategy == 'COPY_ALWAYS'
     - item[0]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
     - item[1]['rc'] == 1
-    - inventory_hostname in groups['ceph-mon']
   with_together:
-    - container_envs.results
-    - check_results.results
+    - ceph_mon_container_envs.results
+    - ceph_mon_check_results.results
 
 - name: Restart the ceph_osd container
   kolla_docker:
     name: "ceph_osd_{{ item.0.stdout }}"
     action: "restart_container"
   when:
+    - inventory_hostname in groups['ceph-osd']
     - config_strategy == 'COPY_ALWAYS'
-    - item[2]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
-    - item[3]['rc'] == 1
+    - item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
+    - item[2]['rc'] == 1
     - osds
   with_together:
-    - id.results
-    - osds
-    - container_envs.results
-    - check_results.results
+    - osd_ids.results
+    - ceph_osd_container_envs.results
+    - ceph_osd_check_results.results
 
 - name: Restart the ceph_rgw container
   kolla_docker:
     name: "ceph_rgw"
     action: "restart_container"
   when:
+    - enable_ceph_rgw | bool
+    - inventory_hostname in groups['ceph-rgw']
     - config_strategy == 'COPY_ALWAYS'
     - item[0]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
     - item[1]['rc'] == 1
-    - inventory_hostname in groups['ceph-rgw']
   with_together:
-    - container_envs.results
-    - check_results.results
+    - ceph_rgw_container_envs.results
+    - ceph_rgw_check_results.results