diff --git a/README.rst b/README.rst
index 4565f590feb1140d54587071a6619cde747ef553..a5665b7812e3eefdf5957d4f91886cf2dd90f2b6 100644
--- a/README.rst
+++ b/README.rst
@@ -87,7 +87,6 @@ Infrastructure components
 
 Kolla-Ansible deploys containers for the following infrastructure components:
 
-- `Ceph <https://ceph.com/>`__ implementation for Cinder, Glance and Nova.
 - `Collectd <https://collectd.org/>`__,
   `Telegraf <https://docs.influxdata.com/telegraf/>`__,
   `InfluxDB <https://influxdata.com/time-series-platform/influxdb/>`__,
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index cb584740d1b0e463c1925f0e4f787a8acb606df2..6421b1915f0ea34276a6afc2a8e0a0fcb2b3e0cc 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -394,7 +394,6 @@ prometheus_node_exporter_port: "9100"
 prometheus_mysqld_exporter_port: "9104"
 prometheus_haproxy_exporter_port: "9101"
 prometheus_memcached_exporter_port: "9150"
-prometheus_ceph_mgr_exporter_port: "9283"
 # Default cadvisor port of 8080 already in use
 prometheus_cadvisor_port: "18080"
 
@@ -549,11 +548,6 @@ enable_ceilometer: "no"
 enable_ceilometer_ipmi: "no"
 enable_cells: "no"
 enable_central_logging: "no"
-enable_ceph: "no"
-enable_ceph_mds: "no"
-enable_ceph_rgw: "no"
-enable_ceph_nfs: "no"
-enable_ceph_dashboard: "{{ enable_ceph | bool }}"
 enable_chrony: "yes"
 enable_cinder: "no"
 enable_cinder_backup: "yes"
@@ -812,15 +806,11 @@ openstack_auth:
 #######################
 # Glance options
 #######################
-# Using glance_backend_ceph rather than enable_ceph to determine whether to
-# use the file backend, as this allows for the external ceph case, where
-# enable_ceph is False.
 glance_backend_file: "{{ not (glance_backend_ceph | bool or glance_backend_swift | bool or glance_backend_vmware | bool) }}"
-glance_backend_ceph: "{{ enable_ceph }}"
+glance_backend_ceph: "no"
 glance_backend_vmware: "no"
 enable_glance_image_cache: "no"
-# ceph backend has priority over swift in all-ceph clusters
-glance_backend_swift: "{{ not (enable_ceph | bool) and enable_swift | bool }}"
+glance_backend_swift: "{{ enable_swift | bool }}"
 glance_file_datadir_volume: "glance"
 glance_enable_rolling_upgrade: "no"
 glance_api_hosts: "{{ [groups['glance-api']|first] if glance_backend_file | bool and glance_file_datadir_volume == 'glance' else groups['glance-api'] }}"
@@ -844,7 +834,7 @@ panko_database_type: "mysql"
 #################
 # Valid options are [ file, ceph, swift ]
 # Defaults to file if ceph and swift are enabled; explicitly set to either if required.
-gnocchi_backend_storage: "{% if enable_ceph | bool and not enable_swift | bool %}ceph{% elif enable_swift | bool and not enable_ceph | bool %}swift{% else %}file{% endif %}"
+gnocchi_backend_storage: "{% if enable_swift | bool %}swift{% else %}file{% endif %}"
 
 # Valid options are [redis, '']
 gnocchi_incoming_storage: "{{ 'redis' if enable_redis | bool else '' }}"
@@ -854,7 +844,7 @@ gnocchi_metric_datadir_volume: "gnocchi"
 #################################
 # Cinder options
 #################################
-cinder_backend_ceph: "{{ enable_ceph }}"
+cinder_backend_ceph: "no"
 cinder_backend_vmwarevc_vmdk: "no"
 cinder_volume_group: "cinder-volumes"
 cinder_target_helper: "{{ 'lioadm' if ansible_os_family == 'RedHat' and ansible_distribution_major_version is version_compare('8', '>=') else 'tgtadm' }}"
@@ -913,7 +903,7 @@ neutron_legacy_iptables: "no"
 #######################
 # Nova options
 #######################
-nova_backend_ceph: "{{ enable_ceph }}"
+nova_backend_ceph: "no"
 nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}"
 # Valid options are [ kvm, qemu, vmware, xenapi ]
 nova_compute_virt_type: "kvm"
@@ -964,43 +954,12 @@ octavia_amp_flavor_id:
 qinling_kubernetes_certificates: "no"
 
 ###################
-# Ceph options
+# External Ceph options
 ###################
-# Ceph can be setup with a caching to improve performance. To use the cache you
-# must provide separate disks than those for the OSDs
-ceph_enable_cache: "no"
-
+# External Ceph - cephx auth enabled (this is the standard nowadays, defaults to yes)
 external_ceph_cephx_enabled: "yes"
 
-# Ceph is not able to determine the size of a cache pool automatically,
-# so the configuration on the absolute size is required here, otherwise the flush/evict will not work.
-ceph_target_max_bytes: ""
-ceph_target_max_objects: ""
-
-# Valid options are [ forward, none, writeback ]
-ceph_cache_mode: "writeback"
-
-# Valid options are [ ext4, btrfs, xfs ]
-ceph_osd_filesystem: "xfs"
-
-# Set to 'yes-i-really-really-mean-it' to force wipe disks with existing partitions for OSDs. Only
-# set if you understand the consequences!
-ceph_osd_wipe_disk: ""
-
-# These are /etc/fstab options. Comma separated, no spaces (see fstab(8))
-ceph_osd_mount_options: "defaults,noatime"
-
-# A requirement for using the erasure-coded pools is you must setup a cache tier
-# Valid options are [ erasure, replicated ]
-ceph_pool_type: "replicated"
-
-# Integrate Ceph Rados Object Gateway with OpenStack keystone
-enable_ceph_rgw_keystone: "no"
-
-# Enable/disable ceph-rgw compatibility with OpenStack Swift
-# Valid options are [ True, False ]
-ceph_rgw_compatibility: "False"
-
+# External Ceph pool names
 ceph_cinder_pool_name: "volumes"
 ceph_cinder_backup_pool_name: "backups"
 ceph_glance_pool_name: "images"
@@ -1014,38 +973,13 @@ ceph_gnocchi_user: "gnocchi"
 ceph_manila_user: "manila"
 ceph_nova_user: "nova"
 
-ceph_erasure_profile: "k=4 m=2 ruleset-failure-domain=host"
-ceph_rule: "default host {{ 'indep' if ceph_pool_type == 'erasure' else 'firstn' }}"
-ceph_cache_rule: "cache host firstn"
-
-# Set the pgs and pgps for pool
-# WARNING! These values are dependant on the size and shape of your cluster -
-# the default values are not suitable for production use. Please refer to the
-# Kolla Ceph documentation for more information.
-ceph_pool_pg_num: 8
-ceph_pool_pgp_num: 8
-
-# Set the store type for ceph OSD
-# Valid options are [ filestore, bluestore]
-ceph_osd_store_type: "bluestore"
-
-# Set the host type for ceph daemons
-# Valid options are [ IP, HOSTNAME, FQDN, INVENTORY ]
-# Note: For existing clusters, please don't modify this parameter. Otherwise,
-# the existing mon will be invalidated, and the existing osd crush map will
-# be changed.
-ceph_mon_host_type: "IP"
-ceph_mgr_host_type: "INVENTORY"
-ceph_osd_host_type: "IP"
-ceph_mds_host_type: "INVENTORY"
-
 # External Ceph keyrings
 ceph_cinder_keyring: "ceph.client.cinder.keyring"
 ceph_cinder_backup_keyring: "ceph.client.cinder-backup.keyring"
 ceph_glance_keyring: "ceph.client.glance.keyring"
 ceph_gnocchi_keyring: "ceph.client.gnocchi.keyring"
 ceph_manila_keyring: "ceph.client.manila.keyring"
-ceph_nova_keyring: "{% if enable_ceph | bool %}ceph.client.nova.keyring{% else %}{{ ceph_cinder_keyring }}{% endif %}"
+ceph_nova_keyring: "{{ ceph_cinder_keyring }}"
 
 #####################
 # VMware support
@@ -1088,7 +1022,7 @@ enable_prometheus_node_exporter: "{{ enable_prometheus | bool }}"
 enable_prometheus_memcached_exporter: "{{ enable_memcached | bool }}"
 enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
 enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
-enable_prometheus_ceph_mgr_exporter: "{{ enable_ceph | bool and enable_prometheus | bool }}"
+enable_prometheus_ceph_mgr_exporter: "no"
 enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
 enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
 enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
@@ -1097,6 +1031,7 @@ prometheus_alertmanager_user: "admin"
 prometheus_openstack_exporter_interval: "60s"
 prometheus_elasticsearch_exporter_interval: "60s"
 prometheus_cmdline_extras:
+prometheus_ceph_mgr_exporter_endpoints: []
 
 ############
 # Vitrage
diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index c6ca4083438d1b7433c1d90438e6f3d106b059de..483bc94491fc62ef0d7a691d422e3e7e263b3e0a 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -145,9 +145,6 @@ control
 [murano:children]
 control
 
-[ceph:children]
-control
-
 [ironic:children]
 control
 
@@ -314,25 +311,6 @@ neutron
 [ironic-neutron-agent:children]
 neutron
 
-# Ceph
-[ceph-mds:children]
-ceph
-
-[ceph-mgr:children]
-ceph
-
-[ceph-nfs:children]
-ceph
-
-[ceph-mon:children]
-ceph
-
-[ceph-rgw:children]
-ceph
-
-[ceph-osd:children]
-storage
-
 # Cinder
 [cinder-api:children]
 cinder
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index e83aaf6de26138f69705f0cf38814d67b4b4432e..98e4f1bb188b77466e0dac984a9f879e0e414db0 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -176,9 +176,6 @@ control
 [ironic:children]
 control
 
-[ceph:children]
-control
-
 [magnum:children]
 control
 
@@ -333,25 +330,6 @@ neutron
 [ironic-neutron-agent:children]
 neutron
 
-# Ceph
-[ceph-mds:children]
-ceph
-
-[ceph-mgr:children]
-ceph
-
-[ceph-nfs:children]
-ceph
-
-[ceph-mon:children]
-ceph
-
-[ceph-rgw:children]
-ceph
-
-[ceph-osd:children]
-storage
-
 # Cinder
 [cinder-api:children]
 cinder
diff --git a/ansible/library/kolla_ceph_keyring.py b/ansible/library/kolla_ceph_keyring.py
deleted file mode 100644
index ba61d36e98bbdad36ca1dedfd711d443cedb3bdf..0000000000000000000000000000000000000000
--- a/ansible/library/kolla_ceph_keyring.py
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2018 99cloud
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import json
-import re
-import subprocess  # nosec
-
-
-DOCUMENTATION = '''
----
-module: kolla_ceph_keyring
-short_description: >
-  Module for update ceph client keyring caps in kolla.
-description:
-  - A module used to update ceph client keyring caps in kolla.
-options:
-  name:
-    description:
-      - the client name in ceph
-    required: True
-    type: str
-  container_name:
-    description:
-      - the ceph mon container name
-    required: True
-    default: ceph_mon
-    type: str
-  caps:
-    description:
-      - the ceph auth caps
-    required: True
-    type: dict
-author: Jeffrey Zhang
-'''
-
-EXAMPLES = '''
-- name: configure admin client caps
-  kolla_ceph_keyring:
-    name: client.admin
-    container_name: ceph_mon
-    caps:
-      mds: 'allow *'
-      mon: 'allow *'
-      osd: 'allow *'
-      mgr: 'allow *'
-'''
-
-
-enoent_re = re.compile(r"\bENOENT\b")
-
-
-class CephKeyring(object):
-    def __init__(self, name, caps, container_name='ceph_mon'):
-        self.name = name
-        self.caps = caps
-        self.container_name = container_name
-        self.changed = False
-        self.message = None
-
-    def _run(self, cmd):
-        _prefix = ['docker', 'exec', self.container_name]
-        cmd = _prefix + cmd
-        proc = subprocess.Popen(cmd,  # nosec
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
-        stdout, stderr = proc.communicate()
-        retcode = proc.poll()
-        if retcode != 0:
-            output = 'stdout: "%s", stderr: "%s"' % (stdout, stderr)
-            raise subprocess.CalledProcessError(retcode, cmd, output)
-        return stdout
-
-    def _format_caps(self):
-        caps = []
-        for obj in sorted(self.caps):
-            caps.extend([obj, self.caps[obj]])
-        return caps
-
-    def parse_stdout(self, stdout):
-        keyring = json.loads(stdout)
-        # there should be only one element
-        return keyring[0]
-
-    def ensure_keyring(self):
-        try:
-            stdout = self.get_keyring()
-        except subprocess.CalledProcessError as e:
-            if e.returncode != 2 or not enoent_re.search(e.output):
-                # this is not a missing keyring case
-                raise
-            # keyring doesn't exsit, try to create it
-            stdout = self.create_keyring()
-            self.changed = True
-            self.message = 'ceph keyring for %s is created' % self.name
-        keyring = self.parse_stdout(stdout)
-        if keyring['caps'] != self.caps:
-            self.update_caps()
-            stdout = self.get_keyring()
-            keyring = self.parse_stdout(stdout)
-            self.changed = True
-            self.message = 'ceph keyring for %s is updated' % self.name
-        self.keyring = keyring
-        return self.keyring
-
-    def get_keyring(self):
-        ceph_cmd = ['ceph', '--format', 'json', 'auth', 'get', self.name]
-        return self._run(ceph_cmd)
-
-    def update_caps(self):
-        ceph_cmd = ['ceph', '--format', 'json', 'auth', 'caps', self.name]
-        caps = self._format_caps()
-        ceph_cmd.extend(caps)
-        self._run(ceph_cmd)
-
-    def create_keyring(self):
-        ceph_cmd = ['ceph', '--format', 'json', 'auth',
-                    'get-or-create', self.name]
-        caps = self._format_caps()
-        ceph_cmd.extend(caps)
-        return self._run(ceph_cmd)
-
-
-def main():
-    specs = dict(
-        name=dict(type='str', required=True),
-        container_name=dict(type='str', default='ceph_mon'),
-        caps=dict(type='dict', required=True)
-    )
-    module = AnsibleModule(argument_spec=specs)  # noqa
-    params = module.params
-    ceph_keyring = CephKeyring(params['name'],
-                               params['caps'],
-                               params['container_name'])
-    try:
-        keyring = ceph_keyring.ensure_keyring()
-        module.exit_json(changed=ceph_keyring.changed,
-                         keyring=keyring,
-                         message=ceph_keyring.message)
-    except subprocess.CalledProcessError as ex:
-        msg = ('Failed to call command: %s returncode: %s output: %s' %
-               (ex.cmd, ex.returncode, ex.output))
-        module.fail_json(msg=msg)
-
-
-from ansible.module_utils.basic import *  # noqa
-if __name__ == "__main__":
-    main()
diff --git a/ansible/roles/baremetal/defaults/main.yml b/ansible/roles/baremetal/defaults/main.yml
index 50d31c4edd1b618520daca8c6b32760b53fa7453..4a28dc203450e1aca9ba0e3c3b8f8d02f41a5d44 100644
--- a/ansible/roles/baremetal/defaults/main.yml
+++ b/ansible/roles/baremetal/defaults/main.yml
@@ -53,9 +53,6 @@ easy_install_available: >-
 host_python_version: "{{ ansible_python.version.major }}.{{ ansible_python.version.minor }}"
 host_python_major_version: "{{ ansible_python.version.major }}"
 
-# Ubuntu 18+ bundles nfs-ganesha 2.6.0 with Ceph Mimic packages,
-# which does udp rpcbind test even with NFSv3 disabled - therefore
-# rpcbind needs to be installed, when Ceph NFS is enabled.
 debian_pkg_install:
  - "{{ docker_apt_package }}"
  - git
@@ -63,7 +60,6 @@ debian_pkg_install:
  - "{% if not easy_install_available %}python{% if host_python_major_version == '3' %}3{% endif %}-pip{% endif %}"
  - "{% if virtualenv is not none %}python{% if host_python_major_version == '3' %}3{% endif %}-virtualenv{% endif %}"
  - "{% if enable_host_ntp | bool %}ntp{% endif %}"
- - "{% if enable_ceph_nfs|bool %}rpcbind{% endif %}"
 
 redhat_pkg_install:
  - "{{ docker_yum_package }}"
diff --git a/ansible/roles/ceph/defaults/main.yml b/ansible/roles/ceph/defaults/main.yml
deleted file mode 100644
index a1d407af7e78349777226114a5abd946affd17ff..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/defaults/main.yml
+++ /dev/null
@@ -1,149 +0,0 @@
----
-project_name: "ceph"
-
-ceph_services:
-  ceph-rgw:
-    group: ceph-rgw
-    enabled: "{{ enable_ceph_rgw|bool }}"
-    haproxy:
-      radosgw:
-        enabled: "{{ enable_ceph|bool and enable_ceph_rgw|bool }}"
-        mode: "http"
-        external: false
-        port: "{{ rgw_port }}"
-      radosgw_external:
-        enabled: "{{ enable_ceph|bool and enable_ceph_rgw|bool }}"
-        mode: "http"
-        external: true
-        port: "{{ rgw_port }}"
-
-
-####################
-# Docker
-####################
-ceph_install_type: "{{ kolla_install_type }}"
-ceph_tag: "{{ openstack_tag }}"
-
-ceph_mds_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-mds"
-ceph_mds_tag: "{{ ceph_tag }}"
-ceph_mds_image_full: "{{ ceph_mds_image }}:{{ ceph_mds_tag }}"
-
-ceph_mon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-mon"
-ceph_mon_tag: "{{ ceph_tag }}"
-ceph_mon_image_full: "{{ ceph_mon_image }}:{{ ceph_mon_tag }}"
-
-ceph_mgr_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-mgr"
-ceph_mgr_tag: "{{ ceph_tag }}"
-ceph_mgr_image_full: "{{ ceph_mgr_image }}:{{ ceph_mgr_tag }}"
-
-ceph_nfs_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-nfs"
-ceph_nfs_tag: "{{ ceph_tag }}"
-ceph_nfs_image_full: "{{ ceph_nfs_image }}:{{ ceph_nfs_tag }}"
-
-ceph_osd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-osd"
-ceph_osd_tag: "{{ ceph_tag }}"
-ceph_osd_image_full: "{{ ceph_osd_image }}:{{ ceph_osd_tag }}"
-
-ceph_rgw_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ ceph_install_type }}-ceph-rgw"
-ceph_rgw_tag: "{{ ceph_tag }}"
-ceph_rgw_image_full: "{{ ceph_rgw_image }}:{{ ceph_rgw_tag }}"
-
-####################
-# Ceph
-####################
-osd_initial_weight: "1"
-ceph_debug: "{{ openstack_logging_debug }}"
-
-# Increase tcmalloc cache size
-ceph_tcmalloc_tc_bytes: "134217728"
-
-ceph_client_admin_keyring_caps:
-  mds: "allow *"
-  mon: "allow *"
-  osd: "allow *"
-  mgr: "allow *"
-
-ceph_client_mgr_keyring_caps:
-  mon: 'allow profile mgr'
-  osd: 'allow *'
-  mds: 'allow *'
-
-ceph_client_mds_keyring_caps:
-  mds: 'allow *'
-  osd: 'allow *'
-  mon: 'allow rwx'
-
-partition_name_osd_bootstrap: "{{ 'KOLLA_CEPH_OSD_BOOTSTRAP_BS' if ceph_osd_store_type == 'bluestore' else 'KOLLA_CEPH_OSD_BOOTSTRAP' }}"
-partition_name_cache_bootstrap: "{{ 'KOLLA_CEPH_OSD_CACHE_BOOTSTRAP_BS' if ceph_osd_store_type == 'bluestore' else 'KOLLA_CEPH_OSD_CACHE_BOOTSTRAP' }}"
-partition_name_osd_data: "{{ 'KOLLA_CEPH_DATA_BS' if ceph_osd_store_type == 'bluestore' else 'KOLLA_CEPH_DATA' }}"
-
-ceph_mon_hostname: "{%- if ceph_mon_host_type == 'HOSTNAME' -%}{{ ansible_hostname }}
-                    {%- elif ceph_mon_host_type == 'FQDN' -%}{{ ansible_fqdn }}
-                    {%- elif ceph_mon_host_type == 'INVENTORY' -%}{{ inventory_hostname }}
-                    {%- else -%}{{ storage_interface_address }}
-                    {%- endif %}"
-ceph_mgr_hostname: "{%- if ceph_mgr_host_type == 'HOSTNAME' -%}{{ ansible_hostname }}
-                    {%- elif ceph_mgr_host_type == 'FQDN' -%}{{ ansible_fqdn }}
-                    {%- elif ceph_mgr_host_type == 'INVENTORY' -%}{{ inventory_hostname }}
-                    {%- else -%}{{ storage_interface_address }}
-                    {%- endif %}"
-ceph_osd_hostname: "{%- if ceph_osd_host_type == 'HOSTNAME' -%}{{ ansible_hostname }}
-                    {%- elif ceph_osd_host_type == 'FQDN' -%}{{ ansible_fqdn }}
-                    {%- elif ceph_osd_host_type == 'INVENTORY' -%}{{ inventory_hostname }}
-                    {%- else -%}{{ storage_interface_address }}
-                    {%- endif %}"
-ceph_mds_hostname: "{%- if ceph_mds_host_type == 'HOSTNAME' -%}{{ ansible_hostname }}
-                    {%- elif ceph_mds_host_type == 'FQDN' -%}{{ ansible_fqdn }}
-                    {%- elif ceph_mds_host_type == 'INVENTORY' -%}{{ inventory_hostname }}
-                    {%- else -%}{{ storage_interface_address }}
-                    {%- endif %}"
-
-####################
-## Ceph_rgw_keystone
-####################
-swift_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
-swift_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
-swift_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
-
-ceph_rgw_keystone_user: "ceph_rgw"
-
-openstack_swift_auth: "{{ openstack_auth }}"
-openstack_ceph_rgw_auth: "{{ openstack_auth }}"
-
-##########
-# Ceph MDS
-##########
-cephfs_data_pool_name: "cephfs_data"
-cephfs_data_pool_type: "{{ ceph_pool_type }}"
-cephfs_data_pool_cache_mode: "{{ ceph_cache_mode }}"
-cephfs_data_pool_pg_num: "{{ ceph_pool_pg_num }}"
-cephfs_data_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-cephfs_metadata_pool_name: "cephfs_metadata"
-cephfs_metadata_pool_type: "{{ ceph_pool_type }}"
-cephfs_metadata_pool_cache_mode: "{{ ceph_cache_mode }}"
-cephfs_metadata_pool_pg_num: "{{ ceph_pool_pg_num }}"
-cephfs_metadata_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
-####################
-# Kolla
-####################
-kolla_ceph_use_udev: True
-
-
-####################
-# Keystone
-####################
-ceph_rgw_ks_services:
-  - name: "swift"
-    type: "object-store"
-    description: "Openstack Object Storage"
-    endpoints:
-      - {'interface': 'admin', 'url': '{{ swift_admin_endpoint }}'}
-      - {'interface': 'internal', 'url': '{{ swift_internal_endpoint }}'}
-      - {'interface': 'public', 'url': '{{ swift_public_endpoint }}'}
-
-ceph_rgw_ks_users:
-  - project: "service"
-    user: "{{ ceph_rgw_keystone_user }}"
-    password: "{{ ceph_rgw_keystone_password }}"
-    role: "admin"
diff --git a/ansible/roles/ceph/meta/main.yml b/ansible/roles/ceph/meta/main.yml
deleted file mode 100644
index 6b4fff8fef6f81d35b73a30c90de45639db41cc9..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/meta/main.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-dependencies:
-  - { role: common }
diff --git a/ansible/roles/ceph/tasks/bootstrap_mons.yml b/ansible/roles/ceph/tasks/bootstrap_mons.yml
deleted file mode 100644
index f117f60730fba5554ba9bd8ec13f2b92e55a03ec..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/bootstrap_mons.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- name: Cleaning up temp file on localhost
-  file:
-    path: /tmp/kolla_ceph_cluster
-    state: absent
-  delegate_to: localhost
-  changed_when: False
-  check_mode: no
-  run_once: True
-
-- name: Creating temp file on localhost
-  copy:
-    content: None
-    dest: /tmp/kolla_ceph_cluster
-    mode: 0644
-  delegate_to: localhost
-  changed_when: False
-  check_mode: no
-  run_once: True
-
-- name: Creating ceph_mon_config volume
-  become: true
-  kolla_docker:
-    action: "create_volume"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_mon_config"
-  register: ceph_mon_config_volume
-
-- name: Writing hostname of host with existing cluster files to temp file
-  copy:
-    content: "{{ inventory_hostname }}"
-    dest: /tmp/kolla_ceph_cluster
-    mode: 0644
-  delegate_to: localhost
-  changed_when: False
-  check_mode: no
-  when: not ceph_mon_config_volume.changed
-
-- name: Registering host from temp file
-  set_fact:
-    delegate_host: "{{ lookup('file', '/tmp/kolla_ceph_cluster') }}"
-
-- name: Cleaning up temp file on localhost
-  file:
-    path: /tmp/kolla_ceph_cluster
-    state: absent
-  delegate_to: localhost
-  changed_when: False
-  check_mode: no
-  run_once: True
-
-- include_tasks: generate_cluster.yml
-  when: delegate_host == 'None' and inventory_hostname == groups['ceph-mon'][0]
diff --git a/ansible/roles/ceph/tasks/bootstrap_osds.yml b/ansible/roles/ceph/tasks/bootstrap_osds.yml
deleted file mode 100644
index 6559f6184706b8ef0b212c313a932ffd7b426e4c..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/bootstrap_osds.yml
+++ /dev/null
@@ -1,150 +0,0 @@
----
-- name: Looking up disks to bootstrap for Ceph OSDs
-  become: true
-  command: docker exec -t kolla_toolbox sudo -E ansible localhost
-    -m find_disks
-    -a "partition_name={{ partition_name_osd_bootstrap }} match_mode='prefix' use_udev={{ kolla_ceph_use_udev }}"
-  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'
-
-- name: Parsing disk info for Ceph OSDs
-  set_fact:
-    osds_bootstrap: "{{ (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}"
-
-- name: Looking up disks to bootstrap for Ceph Cache OSDs
-  become: true
-  command: docker exec -t kolla_toolbox sudo -E ansible localhost
-    -m find_disks
-    -a "partition_name={{ partition_name_cache_bootstrap }} match_mode='prefix' use_udev={{ kolla_ceph_use_udev }}"
-  register: osd_cache_lookup
-  changed_when: osd_cache_lookup.stdout.find('localhost | SUCCESS => ') != -1 and (osd_cache_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed
-  failed_when: osd_cache_lookup.stdout.split()[2] != 'SUCCESS'
-
-- name: Parsing disk info for Ceph Cache OSDs
-  set_fact:
-    osds_cache_bootstrap: "{{ (osd_cache_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}"
-
-- name: Prompting before wiping existing partitions
-  pause:
-    prompt: |
-     WARNING: It seems {{ item.device }} is marked to be wiped and partitioned for Ceph data and
-              a co-located journal, but appears to contain other existing partitions (>1).
-
-              If you are sure you want this disk to be *wiped* for use with Ceph, press enter.
-
-              Otherwise, press Ctrl-C, then 'A'. (You can disable this check by setting
-              ceph_osd_wipe_disk: 'yes-i-really-really-mean-it' within globals.yml)
-  with_items: "{{ osds_bootstrap|default([]) }}"
-  when:
-    - not item.external_journal | bool
-    - item.device.split('/')[2] in ansible_devices  # if there is no device in setup (like loopback, we don't need to warn user
-    - ansible_devices[item.device.split('/')[2]].partitions|count > 1
-    - ceph_osd_wipe_disk != "yes-i-really-really-mean-it"
-
-- name: Bootstrapping Ceph OSDs
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    detach: False
-    environment:
-      KOLLA_BOOTSTRAP:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-      OSD_DEV: "{{ item.1.device }}"
-      OSD_PARTITION: "{{ item.1.partition }}"
-      OSD_PARTITION_NUM: "{{ item.1.partition_num }}"
-      JOURNAL_DEV: "{{ item.1.journal_device }}"
-      JOURNAL_PARTITION: "{{ item.1.journal }}"
-      JOURNAL_PARTITION_NUM: "{{ item.1.journal_num }}"
-      USE_EXTERNAL_JOURNAL: "{{ item.1.external_journal | bool }}"
-      OSD_FILESYSTEM: "{{ ceph_osd_filesystem }}"
-      OSD_INITIAL_WEIGHT: "{{ osd_initial_weight }}"
-      HOSTNAME: "{{ ceph_osd_hostname }}"
-      OSD_STORETYPE: "{{ ceph_osd_store_type }}"
-      OSD_BS_DEV: "{{ item.1.device | default('') }}"
-      OSD_BS_LABEL: "{{ item.1.partition_label | default('') }}"
-      OSD_BS_PARTNUM: "{{ item.1.partition_num | default('') }}"
-      OSD_BS_BLK_DEV: "{{ item.1.bs_blk_device | default('') }}"
-      OSD_BS_BLK_LABEL: "{{ item.1.bs_blk_label | default('') }}"
-      OSD_BS_BLK_PARTNUM: "{{ item.1.bs_blk_partition_num | default('') }}"
-      OSD_BS_WAL_DEV: "{{ item.1.bs_wal_device | default('') }}"
-      OSD_BS_WAL_LABEL: "{{ item.1.bs_wal_label | default('') }}"
-      OSD_BS_WAL_PARTNUM: "{{ item.1.bs_wal_partition_num | default('') }}"
-      OSD_BS_DB_DEV: "{{ item.1.bs_db_device | default('') }}"
-      OSD_BS_DB_LABEL: "{{ item.1.bs_db_label | default('') }}"
-      OSD_BS_DB_PARTNUM: "{{ item.1.bs_db_partition_num | default('') }}"
-    image: "{{ ceph_osd_image_full }}"
-    labels:
-      BOOTSTRAP:
-    name: "bootstrap_osd_{{ item.0 }}"
-    privileged: True
-    restart_policy: no
-    volumes:
-      - "{{ node_config_directory }}/ceph-osd/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "/dev/:/dev/"
-      - "kolla_logs:/var/log/kolla/"
-  with_indexed_items: "{{ osds_bootstrap|default([]) }}"
-
-- name: Prompting before wiping existing partitions
-  pause:
-    prompt: |
-     WARNING: It seems {{ item.device }} is marked to be wiped and partitioned for Ceph data and
-              a co-located journal, but appears to contain other existing partitions (>1).
-
-              If you are sure you want this disk to be *wiped* for use with Ceph, press enter.
-
-              Otherwise, press Ctrl-C, then 'A'. (You can disable this check by setting
-              ceph_osd_wipe_disk: 'yes-i-really-really-mean-it' within globals.yml)
-  with_items: "{{ osds_cache_bootstrap|default([]) }}"
-  when:
-    - not item.external_journal | bool
-    - ansible_devices[item.device.split('/')[2]].partitions|count > 1
-    - ceph_osd_wipe_disk != "yes-i-really-really-mean-it"
-
-- name: Bootstrapping Ceph Cache OSDs
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    detach: False
-    environment:
-      KOLLA_BOOTSTRAP:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-      CEPH_CACHE:
-      OSD_DEV: "{{ item.1.device }}"
-      OSD_PARTITION: "{{ item.1.partition }}"
-      OSD_PARTITION_NUM: "{{ item.1.partition_num }}"
-      JOURNAL_DEV: "{{ item.1.journal_device }}"
-      JOURNAL_PARTITION: "{{ item.1.journal }}"
-      JOURNAL_PARTITION_NUM: "{{ item.1.journal_num }}"
-      USE_EXTERNAL_JOURNAL: "{{ item.1.external_journal | bool }}"
-      OSD_FILESYSTEM: "{{ ceph_osd_filesystem }}"
-      OSD_INITIAL_WEIGHT: "{{ osd_initial_weight }}"
-      HOSTNAME: "{{ ceph_osd_hostname }}"
-      OSD_STORETYPE: "{{ ceph_osd_store_type }}"
-      OSD_BS_DEV: "{{ item.1.device | default('') }}"
-      OSD_BS_LABEL: "{{ item.1.partition_label | default('') }}"
-      OSD_BS_PARTNUM: "{{ item.1.partition_num | default('') }}"
-      OSD_BS_BLK_DEV: "{{ item.1.bs_blk_device | default('') }}"
-      OSD_BS_BLK_LABEL: "{{ item.1.bs_blk_label | default('') }}"
-      OSD_BS_BLK_PARTNUM: "{{ item.1.bs_blk_partition_num | default('') }}"
-      OSD_BS_WAL_DEV: "{{ item.1.bs_wal_device | default('') }}"
-      OSD_BS_WAL_LABEL: "{{ item.1.bs_wal_label|default('') }}"
-      OSD_BS_WAL_PARTNUM: "{{ item.1.bs_wal_partition_num | default('') }}"
-      OSD_BS_DB_DEV: "{{ item.1.bs_db_device | default('') }}"
-      OSD_BS_DB_LABEL: "{{ item.1.bs_db_label | default('') }}"
-      OSD_BS_DB_PARTNUM: "{{ item.1.bs_db_partition_num | default('') }}"
-    image: "{{ ceph_osd_image_full }}"
-    labels:
-      BOOTSTRAP:
-    name: "bootstrap_osd_cache_{{ item.0 }}"
-    privileged: True
-    restart_policy: no
-    volumes:
-      - "{{ node_config_directory }}/ceph-osd/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "/dev/:/dev/"
-      - "kolla_logs:/var/log/kolla/"
-  with_indexed_items: "{{ osds_cache_bootstrap|default([]) }}"
diff --git a/ansible/roles/ceph/tasks/check.yml b/ansible/roles/ceph/tasks/check.yml
deleted file mode 100644
index ed97d539c095cf1413af30cc23dea272095b97dd..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/check.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/ceph/tasks/config.yml b/ansible/roles/ceph/tasks/config.yml
deleted file mode 100644
index 6ea77cf9656932ffc3d25bcd7c1f42775a33cf1b..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/config.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-- name: Ensuring config directories exist
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    state: "directory"
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-    mode: "0770"
-  become: true
-  with_items:
-    - "ceph-mon"
-    - "ceph-osd"
-    - "ceph-rgw"
-    - "ceph-mgr"
-    - "ceph-mds"
-    - "ceph-nfs"
-
-- name: Copying over config.json files for services
-  template:
-    src: "{{ item.name }}.json.j2"
-    dest: "{{ node_config_directory }}/{{ item.name }}/config.json"
-    mode: "0660"
-  become: true
-  when:
-    - inventory_hostname in groups[item.group]
-  with_items:
-    - name: "ceph-mon"
-      group: ceph-mon
-    - name: "ceph-osd"
-      group: ceph-osd
-    - name: "ceph-rgw"
-      group: ceph-rgw
-    - name: "ceph-mgr"
-      group: ceph-mgr
-    - name: "ceph-mds"
-      group: ceph-mds
-    - name: "ceph-nfs"
-      group: ceph-nfs
-
-- name: Copying over ceph.conf
-  vars:
-    service_name: "{{ item }}"
-  merge_configs:
-    sources:
-      - "{{ role_path }}/templates/ceph.conf.j2"
-      - "{{ node_custom_config }}/ceph.conf"
-      - "{{ node_custom_config }}/ceph/{{ inventory_hostname }}/ceph.conf"
-    dest: "{{ node_config_directory }}/{{ item }}/ceph.conf"
-    mode: "0660"
-  become: true
-  with_items:
-    - "ceph-mon"
-    - "ceph-osd"
-    - "ceph-rgw"
-    - "ceph-mgr"
-    - "ceph-mds"
-    - "ceph-nfs"
-
-- name: Copying over ganesha.conf for ceph-nfs
-  template:
-    src: "{{ item }}"
-    dest: "{{ node_config_directory }}/ceph-nfs/ganesha.conf"
-    mode: "0600"
-  become: true
-  when:
-    - inventory_hostname in groups['ceph-nfs']
-  with_first_found:
-    - "{{ node_custom_config }}/ganesha.conf"
-    - "{{ node_custom_config }}/ceph-nfs/ganesha.conf"
-    - "ganesha.conf.j2"
diff --git a/ansible/roles/ceph/tasks/deploy.yml b/ansible/roles/ceph/tasks/deploy.yml
deleted file mode 100644
index d4c4a9091177bef61ad83434672a8fffa9fc935d..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/deploy.yml
+++ /dev/null
@@ -1,62 +0,0 @@
----
-# NOTE(yoctozepto): this file is used during upgrade as well
-
-- include_tasks: config.yml
-
-- include_tasks: bootstrap_mons.yml
-  when: inventory_hostname in groups['ceph-mon']
-
-- include_tasks: distribute_keyrings.yml
-  when: kolla_action != "upgrade"
-
-- include_tasks: start_mons.yml
-  when: inventory_hostname in groups['ceph-mon']
-
-# NOTE(yoctozepto): this ensures caps for admin are always up-to-date (run as earliest as possible = after MONs start)
-# this is retried because the cluster might not be fully operational yet (quorum gathering)
-- name: configuring client.admin caps
-  become: true
-  kolla_ceph_keyring:
-    name: client.admin
-    caps: "{{ ceph_client_admin_keyring_caps }}"
-  run_once: True
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  register: result
-  until: result is success
-  retries: 3
-  delay: 15
-
-- include_tasks: start_mgrs.yml
-  when: inventory_hostname in groups['ceph-mgr']
-
-- include_tasks: start_ceph_dashboard.yml
-  when:
-    - enable_ceph_dashboard | bool
-    - inventory_hostname in groups['ceph-mon']
-
-- include_tasks: bootstrap_osds.yml
-  when: inventory_hostname in groups['ceph-osd']
-
-- include_tasks: start_osds.yml
-  when: inventory_hostname in groups['ceph-osd']
-
-- include_tasks: start_rgws.yml
-  when:
-    - enable_ceph_rgw | bool
-    - inventory_hostname in groups['ceph-rgw']
-
-- include_tasks: start_rgw_keystone.yml
-  when:
-    - enable_ceph_rgw_keystone | bool
-    - inventory_hostname in groups['ceph-rgw']
-
-- include_tasks: start_mdss.yml
-  when:
-    - enable_ceph_mds | bool
-    - inventory_hostname in groups['ceph-mds']
-
-# NOTE(yoctozepto): nfs (cephfs-based) depends on mds so start it after
-- include_tasks: start_nfss.yml
-  when:
-    - enable_ceph_nfs | bool
-    - inventory_hostname in groups['ceph-nfs']
diff --git a/ansible/roles/ceph/tasks/distribute_keyrings.yml b/ansible/roles/ceph/tasks/distribute_keyrings.yml
deleted file mode 100644
index 1c28eb9826543d37b786560a5d43611e21b19d8d..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/distribute_keyrings.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-- name: Fetching Ceph keyrings
-  become: true
-  command: docker exec ceph_mon /usr/bin/python{{ distro_python_version }} /usr/bin/fetch_ceph_keys.py
-  register: ceph_files_json
-  changed_when: (ceph_files_json.stdout | from_json).changed
-  failed_when: (ceph_files_json.stdout | from_json).failed
-  delegate_to: "{{ delegate_host }}"
-  run_once: True
-
-- name: Reading json from variable
-  set_fact:
-    ceph_files: "{{ (ceph_files_json.stdout | from_json) }}"
-
-- name: Pushing Ceph keyring for OSDs
-  become: true
-  bslurp:
-    src: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/ceph-osd/{{ item.filename }}"
-    sha1: "{{ item.sha1 | default('') }}"
-    sha256: "{{ item.sha256 | default('') }}"
-    mode: 0600
-  with_items:
-    - "{{ ceph_files['ceph.client.admin.keyring'] }}"
-  when: inventory_hostname in groups['ceph-osd']
-
-- name: Pushing Ceph keyrings for Mons
-  become: true
-  bslurp:
-    src: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/ceph-mon/{{ item.filename }}"
-    sha1: "{{ item.sha1 | default('') }}"
-    sha256: "{{ item.sha256 | default('') }}"
-    mode: 0600
-  with_items:
-    - "{{ ceph_files['ceph.client.admin.keyring'] }}"
-    - "{{ ceph_files['ceph.client.mon.keyring'] }}"
-    - "{{ ceph_files['ceph.client.radosgw.keyring'] }}"
-    - "{{ ceph_files['ceph.monmap'] }}"
-  when: inventory_hostname in groups['ceph-mon']
-
-- name: Pushing Ceph keyrings for Mgrs
-  become: true
-  bslurp:
-    src: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/ceph-mgr/{{ item.filename }}"
-    sha1: "{{ item.sha1 | default('') }}"
-    sha256: "{{ item.sha256 | default('') }}"
-    mode: 0600
-  with_items:
-    - "{{ ceph_files['ceph.client.admin.keyring'] }}"
-  when: inventory_hostname in groups['ceph-mgr']
-
-- name: Pushing Ceph keyrings for RGWs
-  become: true
-  bslurp:
-    src: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/ceph-rgw/{{ item.filename }}"
-    sha1: "{{ item.sha1 | default('') }}"
-    sha256: "{{ item.sha256 | default('') }}"
-    mode: 0600
-  with_items:
-    - "{{ ceph_files['ceph.client.admin.keyring'] }}"
-    - "{{ ceph_files['ceph.client.radosgw.keyring'] }}"
-  when: inventory_hostname in groups['ceph-rgw']
-
-- name: Pushing Ceph keyrings for NFSs
-  become: true
-  bslurp:
-    src: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/ceph-nfs/{{ item.filename }}"
-    sha1: "{{ item.sha1 | default('') }}"
-    sha256: "{{ item.sha256 | default('') }}"
-    mode: 0600
-  with_items:
-    - "{{ ceph_files['ceph.client.admin.keyring'] }}"
-  when:
-    - inventory_hostname in groups['ceph-nfs']
-    - enable_ceph_nfs | bool
diff --git a/ansible/roles/ceph/tasks/generate_cluster.yml b/ansible/roles/ceph/tasks/generate_cluster.yml
deleted file mode 100644
index 886fc997420082ca0f417ebbf379c561e40e05d2..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/generate_cluster.yml
+++ /dev/null
@@ -1,29 +0,0 @@
----
-- name: Generating initial Ceph keyrings and monmap
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    detach: False
-    environment:
-      KOLLA_BOOTSTRAP:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-      MON_IP: "{{ storage_interface_address }}"
-      HOSTNAME: "{{ ceph_mon_hostname }}"
-    image: "{{ ceph_mon_image_full }}"
-    labels:
-      BOOTSTRAP:
-    name: "bootstrap_ceph_mon"
-    restart_policy: no
-    volumes:
-      - "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "ceph_mon:/var/lib/ceph"
-      - "ceph_mon_config:/etc/ceph"
-      - "kolla_logs:/var/log/kolla/"
-
-- include_tasks: start_mons.yml
-
-- name: Setting host for cluster files
-  set_fact:
-    delegate_host: "{{ inventory_hostname }}"
diff --git a/ansible/roles/ceph/tasks/loadbalancer.yml b/ansible/roles/ceph/tasks/loadbalancer.yml
deleted file mode 100644
index 9c776685e358b062118a1040cc5019c9693f2010..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/loadbalancer.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: "Configure haproxy for {{ project_name }}"
-  import_role:
-    role: haproxy-config
-  vars:
-    project_services: "{{ ceph_services }}"
-  tags: always
diff --git a/ansible/roles/ceph/tasks/main.yml b/ansible/roles/ceph/tasks/main.yml
deleted file mode 100644
index ab2a7dcfb6916b5d4665d9e4583f0afffc3019a9..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/main.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-- name: Warn about deprecation
-  debug:
-    msg: >-
-      Support for deploying Ceph via Kolla Ansible is deprecated. In a future
-      release support for deploying Ceph will be removed from Kolla Ansible. Prior
-      to this we will ensure a migration path to another tool such as Ceph
-      Ansible (http://docs.ceph.com/ceph-ansible/master/>) is available. For new
-      deployments it is recommended to use another tool to deploy Ceph to avoid a
-      future migration. This can be integrated with OpenStack by following the
-      external Ceph guide
-      (https://docs.openstack.org/kolla-ansible/latest/reference/storage/external-ceph-guide.html).
-
-- include_tasks: "{{ kolla_action }}.yml"
diff --git a/ansible/roles/ceph/tasks/precheck.yml b/ansible/roles/ceph/tasks/precheck.yml
deleted file mode 100644
index 957b0a98bbcd19a81775efd170aa01eb499adf61..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/precheck.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- name: Get container facts
-  become: true
-  kolla_container_facts:
-    name:
-      - ceph_rgw
-  register: container_facts
-
-- name: Checking free port for RadosGW
-  wait_for:
-    host: "{{ api_interface_address }}"
-    port: "{{ rgw_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - container_facts['ceph_rgw'] is not defined
-    - inventory_hostname in groups['ceph-rgw']
-
-- name: Check whether the Swift service is enabled
-  fail:
-    msg: 'Ceph-rgw conflicts with Swift, and so you should only enable one of them'
-  when: enable_swift | bool and enable_ceph_rgw | bool
-  run_once: True
diff --git a/ansible/roles/ceph/tasks/pull.yml b/ansible/roles/ceph/tasks/pull.yml
deleted file mode 100644
index 1bea1fc8a26147c96ab48c50eef9500f12de4c06..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/pull.yml
+++ /dev/null
@@ -1,53 +0,0 @@
----
-- name: Pulling ceph-mon image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_mon_image_full }}"
-  when: inventory_hostname in groups['ceph-mon']
-
-- name: Pulling ceph-osd image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_osd_image_full }}"
-  when: inventory_hostname in groups['ceph-osd']
-
-- name: Pulling ceph-rgw image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_rgw_image_full }}"
-  when: inventory_hostname in groups['ceph-rgw']
-
-- name: Pulling ceph-mgr image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_mgr_image_full }}"
-  when:
-    - inventory_hostname in groups['ceph-mgr']
-
-- name: Pulling ceph-mds image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_mds_image_full }}"
-  when:
-    - enable_ceph_mds | bool
-    - inventory_hostname in groups['ceph-mds']
-
-- name: Pulling ceph-nfs image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_nfs_image_full }}"
-  when:
-    - enable_ceph_nfs | bool
-    - inventory_hostname in groups['ceph-nfs']
diff --git a/ansible/roles/ceph/tasks/reconfigure.yml b/ansible/roles/ceph/tasks/reconfigure.yml
deleted file mode 100644
index 3b56f0f73147ca5487b898874a9c8c60d03276e0..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/reconfigure.yml
+++ /dev/null
@@ -1,235 +0,0 @@
----
-- name: Ensuring the ceph_mon container is up
-  become: true
-  kolla_docker:
-    name: "{{ item.name }}"
-    action: "get_container_state"
-  register: ceph_mon_container_state
-  failed_when: not ceph_mon_container_state.Running
-  when: inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_mon, group: ceph-mon }
-
-- name: Looking up OSDs for Ceph
-  become: true
-  command: docker exec -t kolla_toolbox sudo -E ansible localhost
-    -m find_disks
-    -a "partition_name={{ partition_name_osd_data }} match_mode='prefix' use_udev={{ kolla_ceph_use_udev }}"
-  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|default({}) }}"
-  register: osd_ids
-  changed_when: False
-  failed_when: osd_ids.rc != 0
-  when: inventory_hostname in groups['ceph-osd']
-
-- name: Ensuring the ceph_osd container is up
-  become: true
-  kolla_docker:
-    name: "ceph_osd_{{ item.stdout }}"
-    action: "get_container_state"
-  register: ceph_osd_container_state
-  failed_when: not ceph_osd_container_state.Running
-  when: inventory_hostname in groups['ceph-osd']
-  with_items: "{{ osd_ids.results|default({}) }}"
-
-- name: Ensuring the ceph_rgw container is up
-  become: true
-  kolla_docker:
-    name: "{{ item.name }}"
-    action: "get_container_state"
-  register: ceph_rgw_container_state
-  failed_when: not ceph_rgw_container_state.Running
-  when:
-    - enable_ceph_rgw | bool
-    - inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_rgw, group: ceph-rgw }
-
-- include_tasks: config.yml
-
-- name: Check the configs in ceph_mon container
-  become: true
-  command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
-  changed_when: false
-  failed_when: false
-  register: ceph_mon_check_results
-  when: inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_mon, group: ceph-mon }
-
-- name: Check the configs in the ceph_osd container
-  become: true
-  command: docker exec ceph_osd_{{ item.stdout }} /usr/local/bin/kolla_set_configs --check
-  changed_when: false
-  failed_when: false
-  register: ceph_osd_check_results
-  with_items: "{{ osd_ids.results|default({}) }}"
-  when: inventory_hostname in groups['ceph-osd']
-
-- name: Check the configs in ceph_rgw container
-  become: true
-  command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
-  changed_when: false
-  failed_when: false
-  register: ceph_rgw_check_results
-  when:
-    - enable_ceph_rgw | bool
-    - inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_rgw, group: ceph-rgw }
-
-- name: Containers config strategy for ceph_mon container
-  become: true
-  kolla_docker:
-    name: "{{ item.name }}"
-    action: "get_container_env"
-  register: ceph_mon_container_envs
-  when: inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_mon, group: ceph-mon }
-
-- name: Containers config strategy for the ceph_osd containers
-  become: true
-  kolla_docker:
-    name: "ceph_osd_{{ item.stdout }}"
-    action: "get_container_env"
-  register: ceph_osd_container_envs
-  with_items: "{{ osd_ids.results|default({}) }}"
-  when:
-    - inventory_hostname in groups['ceph-osd']
-    - osds
-
-- name: Containers config strategy for ceph_rgw container
-  become: true
-  kolla_docker:
-    name: "{{ item.name }}"
-    action: "get_container_env"
-  register: ceph_rgw_container_envs
-  when:
-    - enable_ceph_rgw | bool
-    - inventory_hostname in groups[item.group]
-  with_items:
-    - { name: ceph_rgw, group: ceph-rgw }
-
-- name: Remove the ceph_mon container
-  become: true
-  kolla_docker:
-    name: "{{ item[0]['name'] }}"
-    action: "remove_container"
-  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
-  with_together:
-    - [{ name: ceph_mon, group: ceph-mon }]
-    - "{{ ceph_mon_container_envs.results }}"
-    - "{{ ceph_mon_check_results.results }}"
-
-- name: Remove the ceph_osd containers
-  become: true
-  kolla_docker:
-    name: "ceph_osd_{{ item.0.stdout }}"
-    action: "remove_container"
-  register: remove_ceph_osd_containers
-  when:
-    - 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:
-    - "{{ osd_ids.results|default({}) }}"
-    - "{{ ceph_osd_container_envs.results }}"
-    - "{{ ceph_osd_check_results.results }}"
-
-- name: Remove the ceph_rgw container
-  become: true
-  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_tasks: start_mons.yml
-  when:
-    - inventory_hostname in groups['ceph-mon']
-    - remove_ceph_mon_container.changed
-
-- include_tasks: start_osds.yml
-  when:
-    - inventory_hostname in groups['ceph-osd']
-    - remove_ceph_osd_containers.changed
-
-- include_tasks: start_rgws.yml
-  when:
-    - inventory_hostname in groups['ceph-rgw']
-    - remove_ceph_rgw_container.changed
-
-- name: Restart the ceph_mon container
-  become: true
-  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
-  with_together:
-    - "{{ ceph_mon_container_envs.results }}"
-    - "{{ ceph_mon_check_results.results }}"
-
-- name: Restart the ceph_osd container
-  become: true
-  kolla_docker:
-    name: "ceph_osd_{{ item.0.stdout }}"
-    action: "restart_container"
-  when:
-    - inventory_hostname in groups['ceph-osd']
-    - config_strategy == 'COPY_ALWAYS'
-    - item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
-    - item[2]['rc'] == 1
-    - osds
-  with_together:
-    - "{{ osd_ids.results|default({}) }}"
-    - "{{ ceph_osd_container_envs.results }}"
-    - "{{ ceph_osd_check_results.results }}"
-
-- name: Restart the ceph_rgw container
-  become: true
-  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
-  with_together:
-    - "{{ ceph_rgw_container_envs.results }}"
-    - "{{ ceph_rgw_check_results.results }}"
-
-- include_tasks: start_rgw_keystone.yml
-  when:
-    - ceph_rgw_container_envs.results
-    - enable_ceph_rgw_keystone | bool
diff --git a/ansible/roles/ceph/tasks/start_ceph_dashboard.yml b/ansible/roles/ceph/tasks/start_ceph_dashboard.yml
deleted file mode 100644
index 4b26c6b9e392d033dc0a52b7c36cd4c0f52a0c69..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_ceph_dashboard.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: Enable ceph dashboard
-  become: true
-  command: docker exec ceph_mon ceph mgr module enable dashboard --force
-  changed_when: false
-  run_once: true
diff --git a/ansible/roles/ceph/tasks/start_mdss.yml b/ansible/roles/ceph/tasks/start_mdss.yml
deleted file mode 100644
index 9e1a66ed9dfa4b61a850bce12934e23b59a9d34b..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_mdss.yml
+++ /dev/null
@@ -1,63 +0,0 @@
----
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ item.pool_name }}"
-    pool_type: "{{ item.pool_type }}"
-    cache_mode: "{{ item.cache_mode }}"
-    pool_pg_num: "{{ item.pool_pg_num }}"
-    pool_pgp_num: "{{ item.pool_pgp_num }}"
-    pool_application: "cephfs"
-  with_items:
-    - pool_name: "{{ cephfs_data_pool_name }}"
-      pool_type: "{{ cephfs_data_pool_type }}"
-      cache_mode: "{{ cephfs_data_pool_cache_mode }}"
-      pool_pg_num: "{{ cephfs_data_pool_pg_num }}"
-      pool_pgp_num: "{{ cephfs_data_pool_pgp_num }}"
-    - pool_name: "{{ cephfs_metadata_pool_name }}"
-      pool_type: "{{ cephfs_metadata_pool_type }}"
-      cache_mode: "{{ cephfs_metadata_pool_cache_mode }}"
-      pool_pg_num: "{{ cephfs_metadata_pool_pg_num }}"
-      pool_pgp_num: "{{ cephfs_metadata_pool_pgp_num }}"
-
-- name: Geting ceph mds keyring
-  become: true
-  kolla_ceph_keyring:
-    name: "mds.{{ ceph_mds_hostname }}"
-    caps: "{{ ceph_client_mds_keyring_caps }}"
-  register: ceph_mds_auth
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-
-- name: Pushing ceph mds keyring to ceph-mds
-  become: true
-  copy:
-    content: |
-      [mds.{{ ceph_mds_hostname }}]
-          key = {{ ceph_mds_auth.keyring.key }}
-    dest: "{{ node_config_directory }}/ceph-mds/ceph.mds.{{ ceph_mds_hostname }}.keyring"
-    mode: "0600"
-
-- name: Starting ceph-mds container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_mds_image_full }}"
-    name: "ceph_mds"
-    volumes:
-      - "{{ node_config_directory }}/ceph-mds/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "kolla_logs:/var/log/kolla/"
-
-- name: Checking whether cephfs is created
-  become: true
-  command: docker exec ceph_mon ceph fs get cephfs
-  register: cephfs_stat
-  failed_when: false
-  changed_when: false
-  run_once: true
-
-- name: Creating ceph new filesystem
-  become: true
-  command: docker exec ceph_mon ceph fs new cephfs cephfs_metadata cephfs_data
-  run_once: true
-  when: cephfs_stat.rc != 0
diff --git a/ansible/roles/ceph/tasks/start_mgrs.yml b/ansible/roles/ceph/tasks/start_mgrs.yml
deleted file mode 100644
index fe0b162de17cf0d410c83f47a69a5b19ba61ae8a..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_mgrs.yml
+++ /dev/null
@@ -1,36 +0,0 @@
----
-- name: Getting ceph mgr keyring
-  become: true
-  kolla_ceph_keyring:
-    name: "mgr.{{ ceph_mgr_hostname }}"
-    caps: "{{ ceph_client_mgr_keyring_caps }}"
-  register: ceph_mgr_keyring
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-
-- name: Pushing ceph mgr keyring to ceph-mgr
-  become: true
-  copy:
-    content: |
-      [mgr.{{ ceph_mgr_hostname }}]
-          key = {{ ceph_mgr_keyring.keyring.key }}
-    dest: "{{ node_config_directory }}/ceph-mgr/ceph.mgr.{{ ceph_mgr_hostname }}.keyring"
-    mode: "0600"
-
-- name: Starting ceph-mgr container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_mgr_image_full }}"
-    name: "ceph_mgr"
-    volumes:
-      - "{{ node_config_directory }}/ceph-mgr/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "kolla_logs:/var/log/kolla"
-
-- name: Enable the ceph mgr prometheus module
-  become: true
-  command: docker exec ceph_mgr ceph mgr module enable prometheus
-  when:
-    - inventory_hostname in groups['ceph-mgr']
-    - enable_prometheus_ceph_mgr_exporter | bool
diff --git a/ansible/roles/ceph/tasks/start_mons.yml b/ansible/roles/ceph/tasks/start_mons.yml
deleted file mode 100644
index 0cb488436441e125070dfd8bc15c1b7f7e6ab948..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_mons.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- name: Starting ceph-mon container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    environment:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-      HOSTNAME: "{{ ceph_mon_hostname }}"
-    image: "{{ ceph_mon_image_full }}"
-    name: "ceph_mon"
-    volumes:
-      - "{{ node_config_directory }}/ceph-mon/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "ceph_mon:/var/lib/ceph"
-      - "ceph_mon_config:/etc/ceph"
-      - "kolla_logs:/var/log/kolla/"
diff --git a/ansible/roles/ceph/tasks/start_nfss.yml b/ansible/roles/ceph/tasks/start_nfss.yml
deleted file mode 100644
index 61eaf7ad95f29489df02058dbcf03f5af9528c9e..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_nfss.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-- name: Starting ceph-nfs container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_nfs_image_full }}"
-    name: "ceph_nfs"
-    volumes:
-      - "{{ node_config_directory }}/ceph-nfs/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "kolla_logs:/var/log/kolla/"
diff --git a/ansible/roles/ceph/tasks/start_osds.yml b/ansible/roles/ceph/tasks/start_osds.yml
deleted file mode 100644
index e89cd3c2eb520d26a3fc402fa0b5773225777255..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_osds.yml
+++ /dev/null
@@ -1,59 +0,0 @@
----
-- name: Looking up OSDs for Ceph
-  become: true
-  command: docker exec -t kolla_toolbox sudo -E ansible localhost
-    -m find_disks
-    -a "partition_name={{ partition_name_osd_data }} match_mode='prefix' use_udev={{ kolla_ceph_use_udev }}"
-  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'
-
-- name: Parsing disk info for Ceph OSDs
-  set_fact:
-    osds: "{{ (osd_lookup.stdout.split('localhost | SUCCESS => ')[1]|from_json).disks|from_json }}"
-
-- name: Mounting Ceph OSD volumes
-  become: true
-  mount:
-    src: "UUID={{ item.fs_uuid }}"
-    fstype: "{{ ceph_osd_filesystem }}"
-    state: mounted
-    name: "/var/lib/ceph/osd/{{ item['fs_uuid'] }}"
-    opts: "{{ ceph_osd_mount_options }}"
-  with_items: "{{ osds }}"
-  become_method: sudo
-
-- name: Gathering OSD IDs
-  become: true
-  command: "cat /var/lib/ceph/osd/{{ item['fs_uuid'] }}/whoami"
-  with_items: "{{ osds }}"
-  register: id
-  changed_when: False
-  failed_when: id.rc != 0
-
-- name: Starting ceph-osd container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    environment:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-      OSD_ID: "{{ item.0.stdout }}"
-      JOURNAL_PARTITION: "{{ item.1.journal }}"
-      TCMALLOC_MAX_TOTAL_THREAD_CACHE_BYTES: "{{ ceph_tcmalloc_tc_bytes }}"
-      OSD_STORETYPE: "{{ ceph_osd_store_type }}"
-      OSD_BS_FSUUID: "{{ item.1['fs_uuid'] }}"
-    image: "{{ ceph_osd_image_full }}"
-    name: "ceph_osd_{{ item.0.stdout }}"
-    pid_mode: "host"
-    privileged: True
-    volumes:
-      - "{{ node_config_directory }}/ceph-osd/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "/dev/:/dev/"
-      - "/var/lib/ceph/osd/{{ item.1['fs_uuid'] }}:/var/lib/ceph/osd/ceph-{{ item.0.stdout }}"
-      - "kolla_logs:/var/log/kolla/"
-  with_together:
-    - "{{ id.results }}"
-    - "{{ osds }}"
-  when: osds
diff --git a/ansible/roles/ceph/tasks/start_rgw_keystone.yml b/ansible/roles/ceph/tasks/start_rgw_keystone.yml
deleted file mode 100644
index 175e8614b197752a2ff35914e9bee95ad2ca0dd2..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_rgw_keystone.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- import_role:
-    name: service-ks-register
-  vars:
-    service_ks_register_auth: "{{ openstack_ceph_rgw_auth }}"
-    service_ks_register_services: "{{ ceph_rgw_ks_services }}"
-    service_ks_register_users: "{{ ceph_rgw_ks_users }}"
-  tags: always
-
-- name: Creating the ResellerAdmin role
-  become: true
-  kolla_toolbox:
-    module_name: "os_keystone_role"
-    module_args:
-      name: "ResellerAdmin"
-      region_name: "{{ openstack_region_name }}"
-      auth: "{{ openstack_ceph_rgw_auth }}"
-      endpoint_type: "{{ openstack_interface }}"
-      cacert: "{{ openstack_cacert }}"
-  run_once: True
diff --git a/ansible/roles/ceph/tasks/start_rgws.yml b/ansible/roles/ceph/tasks/start_rgws.yml
deleted file mode 100644
index 559c4c8c687884c1463c41977377ec2b239d6d4c..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/start_rgws.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-- name: Starting ceph-rgw container
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ ceph_rgw_image_full }}"
-    name: "ceph_rgw"
-    volumes:
-      - "{{ node_config_directory }}/ceph-rgw/:{{ container_config_directory }}/:ro"
-      - "/etc/localtime:/etc/localtime:ro"
-      - "kolla_logs:/var/log/kolla/"
diff --git a/ansible/roles/ceph/tasks/stop.yml b/ansible/roles/ceph/tasks/stop.yml
deleted file mode 100644
index bb4dcdf3d4c10600b6144866d745eff14a9503b0..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/stop.yml
+++ /dev/null
@@ -1,70 +0,0 @@
----
-- name: Stopping ceph-mon container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_mon"
-  when:
-    - inventory_hostname in groups['ceph-mon']
-    - "'ceph_mon' not in skip_stop_containers"
-
-- name: Find running ceph-osds containers
-  become: true
-  command: "docker ps --filter name=ceph_osd_ --format '{% raw %}{{ .Names }}{% endraw %}'"
-  register: ceph_osd_containers
-
-- name: Stopping ceph-osd container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item }}"
-  with_items: "{{ ceph_osd_containers.stdout_lines }}"
-  when:
-    - inventory_hostname in groups['ceph-osd']
-    - ceph_osd_containers.stdout_lines | length >= 1
-    - item not in skip_stop_containers
-
-- name: Stopping ceph-rgw container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_rgw"
-  when:
-    - inventory_hostname in groups['ceph-rgw']
-    - enable_ceph_rgw | bool
-    - "'ceph_rgw' not in skip_stop_containers"
-
-- name: Stopping ceph-mgr container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_mgr"
-  when:
-    - inventory_hostname in groups['ceph-mgr']
-    - "'ceph_mgr' not in skip_stop_containers"
-
-- name: Stopping ceph-mds container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_mds"
-  when:
-    - enable_ceph_mds | bool
-    - inventory_hostname in groups['ceph-mds']
-    - "'ceph_mds' not in skip_stop_containers"
-
-- name: Stopping ceph-nfs container
-  become: true
-  kolla_docker:
-    action: "stop_container"
-    common_options: "{{ docker_common_options }}"
-    name: "ceph_nfs"
-  when:
-    - enable_ceph_nfs | bool
-    - inventory_hostname in groups['ceph-nfs']
-    - "'ceph_nfs' not in skip_stop_containers"
diff --git a/ansible/roles/ceph/tasks/upgrade.yml b/ansible/roles/ceph/tasks/upgrade.yml
deleted file mode 100644
index 2239ceac04abecf1369317dfc89faf2fcdd9c778..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/tasks/upgrade.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-- include_tasks: deploy.yml
-
-- name: Check final release (as running on MONs)
-  become: true
-  command: "docker exec ceph_mon ceph -m {{ 'storage' | kolla_address }} versions"
-  changed_when: false
-  register: ceph_release_command
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: true
-
-- name: Finalize the upgrade by disallowing older OSDs
-  become: true
-  command: "docker exec ceph_mon ceph -m {{ 'storage' | kolla_address }} osd require-osd-release {{ ((ceph_release_command.stdout|from_json).mon | string).split(' ')[4] }}"
-  changed_when: false
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: true
diff --git a/ansible/roles/ceph/templates/ceph-mds.json.j2 b/ansible/roles/ceph/templates/ceph-mds.json.j2
deleted file mode 100644
index f6b2144debd53463d68248adf9f15f671988dc75..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-mds.json.j2
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "command": "/usr/bin/ceph-mds -f -c /etc/ceph/ceph.conf -i {{ ceph_mds_hostname }}",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.mds.{{ ceph_mds_hostname }}.keyring",
-            "dest": "/var/lib/ceph/mds/ceph-{{ ceph_mds_hostname }}/keyring",
-            "owner": "root",
-            "perm": "0644"
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph-mgr.json.j2 b/ansible/roles/ceph/templates/ceph-mgr.json.j2
deleted file mode 100644
index 48ce22b3b000f960026e547bcac30c6ff11c06b8..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-mgr.json.j2
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "command": "/usr/bin/ceph-mgr -f -i {{ ceph_mgr_hostname }}",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.mgr.{{ ceph_mgr_hostname }}.keyring",
-            "dest": "/var/lib/ceph/mgr/ceph-{{ ceph_mgr_hostname }}/keyring",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.admin.keyring",
-            "dest": "/etc/ceph/ceph.client.admin.keyring",
-            "owner": "ceph",
-            "perm": "0600"
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph-mon.json.j2 b/ansible/roles/ceph/templates/ceph-mon.json.j2
deleted file mode 100644
index 60b88c0e80298d5d4166451652a296cdeb665f31..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-mon.json.j2
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-    "command": "/usr/bin/ceph-mon -f {% if ceph_debug %}-d{% endif %} -i {{ ceph_mon_hostname }} --public-addr {{ storage_interface_address | put_address_in_context('url') }}:6789",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.admin.keyring",
-            "dest": "/etc/ceph/ceph.client.admin.keyring",
-            "owner": "ceph",
-            "perm": "0600",
-            "optional": true
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.mon.keyring",
-            "dest": "/etc/ceph/ceph.client.mon.keyring",
-            "owner": "ceph",
-            "perm": "0600",
-            "optional": true
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.radosgw.keyring",
-            "dest": "/etc/ceph/ceph.client.radosgw.keyring",
-            "owner": "ceph",
-            "perm": "0600",
-            "optional": true
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.monmap",
-            "dest": "/etc/ceph/ceph.monmap",
-            "owner": "ceph",
-            "perm": "0600",
-            "optional": true
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph-nfs.json.j2 b/ansible/roles/ceph/templates/ceph-nfs.json.j2
deleted file mode 100644
index 45b75d7402588d9a87298ca54cab8288810f8119..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-nfs.json.j2
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "command": "/usr/bin/ganesha.nfsd -F -f /etc/ganesha/ganesha.conf",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ganesha.conf",
-            "dest": "/etc/ganesha/ganesha.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.admin.keyring",
-            "dest": "/etc/ceph/ceph.client.admin.keyring",
-            "owner": "ceph",
-            "perm": "0600",
-            "optional": true
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph-osd.json.j2 b/ansible/roles/ceph/templates/ceph-osd.json.j2
deleted file mode 100644
index a73488e72e1d31010f1deaf24e61849b0f308df9..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-osd.json.j2
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "command": "/usr/bin/ceph-osd -f {% if ceph_debug %}-d{% endif %} --public-addr {{ storage_interface_address }} --cluster-addr {{ 'cluster' | kolla_address }}",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.admin.keyring",
-            "dest": "/etc/ceph/ceph.client.admin.keyring",
-            "owner": "ceph",
-            "perm": "0600"
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph-rgw.json.j2 b/ansible/roles/ceph/templates/ceph-rgw.json.j2
deleted file mode 100644
index 9789651da560513edf1ff223700ec1e42808a659..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph-rgw.json.j2
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "command": "/usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway -f",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/ceph.conf",
-            "dest": "/etc/ceph/ceph.conf",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.admin.keyring",
-            "dest": "/etc/ceph/ceph.client.admin.keyring",
-            "owner": "ceph",
-            "perm": "0600"
-        },
-        {
-            "source": "{{ container_config_directory }}/ceph.client.radosgw.keyring",
-            "dest": "/etc/ceph/ceph.client.radosgw.keyring",
-            "owner": "ceph",
-            "perm": "0600"
-        }
-    ]
-}
diff --git a/ansible/roles/ceph/templates/ceph.conf.j2 b/ansible/roles/ceph/templates/ceph.conf.j2
deleted file mode 100644
index 10209e1f05d35595888f684b7cfdf8cc848cb8b7..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ceph.conf.j2
+++ /dev/null
@@ -1,70 +0,0 @@
-[global]
-log file = /var/log/kolla/ceph/$cluster-$name.log
-log to syslog = false
-err to syslog = false
-log to stderr = false
-err to stderr = false
-
-fsid = {{ ceph_cluster_fsid }}
-{% if ceph_mon_host_type == 'HOSTNAME' %}
-mon initial members = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_hostname'] }}{% if not loop.last %}, {% endif %}{% endfor %}
-{% elif ceph_mon_host_type == 'FQDN' %}
-mon initial members = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_fqdn'] }}{% if not loop.last %}, {% endif %}{% endfor %}
-{% elif ceph_mon_host_type == 'INVENTORY' %}
-mon initial members = {% for host in groups['ceph-mon'] %}{{ host }}{% if not loop.last %}, {% endif %}{% endfor %}
-{%- else %}
-mon initial members = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) }}{% if not loop.last %}, {% endif %}{% endfor %}
-{% endif %}
-
-mon host = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) }}{% if not loop.last %}, {% endif %}{% endfor %}
-
-mon addr = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) | put_address_in_context('url') }}:6789{% if not loop.last %}, {% endif %}{% endfor %}
-
-{% if storage_address_family == 'ipv6' %}
-ms bind ipv6 = true
-{% endif %}
-
-auth cluster required = cephx
-auth service required = cephx
-auth client required = cephx
-
-# NOTE(inc0): This line will mean that if ceph was upgraded, it will run as root
-#             until contents of /var/lib/ceph are chowned to ceph user.
-#             This change was introduced in Jewel version and we should include
-#             chown operation in upgrade procedure. https://bugs.launchpad.net/kolla/+bug/1620702
-setuser match path = /var/lib/ceph/$type/$cluster-$id
-
-# NOTE(Jeffrey4l): kolla is using node ip as host bucket name, whereas `osd
-# crush update on start` feature depends on hostname. Disable this feature for
-# less confusion and upgrade impact.
-osd crush update on start = false
-
-[mon]
-# NOTE(SamYaple): The monitor files have been known to grow very large. The
-#                 only fix for that is to compact the files.
-mon compact on start = true
-mon cluster log file = /var/log/kolla/ceph/$cluster.log
-
-{% if service_name is defined and service_name == 'ceph-rgw' %}
-[client.radosgw.gateway]
-host = {{ 'storage' | kolla_address }}
-rgw frontends = civetweb port={{ api_interface_address | put_address_in_context('url') }}:{{ rgw_port }}
-{% if enable_ceph_rgw_keystone | bool %}
-rgw_keystone_url = {{ keystone_admin_url }}
-rgw_keystone_admin_user = {{ ceph_rgw_keystone_user }}
-rgw_keystone_admin_password = {{ ceph_rgw_keystone_password }}
-rgw_keystone_admin_project = service
-rgw_keystone_admin_domain = default
-rgw_keystone_api_version = 3
-rgw_keystone_accepted_roles = admin, {{ keystone_default_user_role }}
-rgw_keystone_accepted_admin_roles = ResellerAdmin
-rgw_swift_versioning_enabled = true
-{% endif %}
-keyring = /etc/ceph/ceph.client.radosgw.keyring
-log file = /var/log/kolla/ceph/client.radosgw.gateway.log
-{% if ceph_rgw_compatibility | bool %}
-rgw_swift_url_prefix = "/"
-rgw_enable_apis = swift,swift_auth,admin
-rgw_swift_enforce_content_length = true
-{% endif %}
-{% endif %}
diff --git a/ansible/roles/ceph/templates/ganesha.conf.j2 b/ansible/roles/ceph/templates/ganesha.conf.j2
deleted file mode 100644
index 2c51ae61d93fa4a5bf46a86df04773ae7e17c235..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph/templates/ganesha.conf.j2
+++ /dev/null
@@ -1,37 +0,0 @@
-NFS_CORE_PARAM {
-    Protocols = 4;
-    Enable_NLM = false;
-    Enable_RQUOTA = false;
-    Enable_UDP = false;
-}
-
-NFS_KRB5 {
-    Active_krb5 = false;
-}
-
-EXPORT
-{
-	Export_id=1;
-
-	Path = "/";
-
-	Pseudo = /cephfs;
-
-	Access_Type = RW;
-
-	Protocols = 4;
-
-	Transports = TCP;
-
-	FSAL {
-		Name = CEPH;
-	}
-}
-
-LOG {
-        Facility {
-                name = FILE;
-                destination = "/var/log/kolla/ceph/ceph-nfs.log";
-                enable = active;
-        }
-}
diff --git a/ansible/roles/ceph_pools.yml b/ansible/roles/ceph_pools.yml
deleted file mode 100644
index a5c30079646702c54c2121f000a48628b964ac2a..0000000000000000000000000000000000000000
--- a/ansible/roles/ceph_pools.yml
+++ /dev/null
@@ -1,117 +0,0 @@
----
-# TODO(SamYaple): Improve failed_when and changed_when tests if possible
-- name: Creating ceph erasure profile
-  become: true
-  command: docker exec ceph_mon ceph osd erasure-code-profile set erasure-profile {{ ceph_erasure_profile }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: pool_type == "erasure"
-
-- name: Creating ceph ruleset
-  become: true
-  command: docker exec ceph_mon ceph osd crush rule create-erasure disks erasure-profile
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: pool_type == "erasure"
-
-- name: Creating ceph ruleset
-  become: true
-  command: docker exec ceph_mon ceph osd crush rule create-simple disks {{ ceph_rule }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: pool_type == "replicated"
-
-- name: Creating ceph pool
-  become: true
-  command: docker exec ceph_mon ceph osd pool create {{ pool_name }} {{ pool_pg_num }} {{ pool_pgp_num }} {{ pool_type }} {{ 'erasure-profile' if pool_type == 'erasure' else '' }} disks
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  run_once: True
-
-- name: enable application for ceph pool
-  become: true
-  command: docker exec ceph_mon ceph osd pool application enable {{ pool_name }} {{ pool_application }}
-  changed_when: False
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Creating ceph ruleset for cache
-  become: true
-  command: docker exec ceph_mon ceph osd crush rule create-simple cache {{ ceph_cache_rule }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Creating ceph pool for cache
-  become: true
-  command: docker exec ceph_mon ceph osd pool create {{ pool_name }}-cache 128 128 replicated cache
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Adding cache to pool
-  become: true
-  command: docker exec ceph_mon ceph osd tier add {{ pool_name }} {{ pool_name }}-cache
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Setting cache-mode
-  become: true
-  command: docker exec ceph_mon ceph osd tier cache-mode {{ pool_name }}-cache {{ cache_mode }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Setting cache overlay for pool
-  become: true
-  command: docker exec ceph_mon ceph osd tier set-overlay {{ pool_name }} {{ pool_name }}-cache
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Setting cache hit_set_type
-  become: true
-  command: docker exec ceph_mon ceph osd pool set {{ pool_name }}-cache hit_set_type bloom
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when: ceph_enable_cache | bool
-
-- name: Setting cache target_max_bytes
-  become: true
-  command: docker exec ceph_mon ceph osd pool set {{ pool_name }}-cache target_max_bytes {{ ceph_target_max_bytes }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when:
-    - ceph_enable_cache | bool
-    - ceph_target_max_bytes != ''
-
-- name: Setting cache target_max_objects
-  become: true
-  command: docker exec ceph_mon ceph osd pool set {{ pool_name }}-cache target_max_objects {{ ceph_target_max_objects }}
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  changed_when: False
-  failed_when: False
-  run_once: True
-  when:
-    - ceph_enable_cache | bool
-    - ceph_target_max_objects != ''
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index 98c0a582bf9574414217f5995b6fe7f10a112974..88e260941c1644b67031a4e6337c20b79619646f 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -47,45 +47,6 @@ cinder_services:
     volumes: "{{ cinder_backup_default_volumes + cinder_backup_extra_volumes }}"
     dimensions: "{{ cinder_backup_dimensions }}"
 
-####################
-# Ceph
-####################
-ceph_cinder_pool_type: "{{ ceph_pool_type }}"
-ceph_cinder_cache_mode: "{{ ceph_cache_mode }}"
-ceph_cinder_backup_pool_type: "{{ ceph_pool_type }}"
-ceph_cinder_backup_cache_mode: "{{ ceph_cache_mode }}"
-
-# Due to Ansible issues on include, you cannot override these variables. Please
-# override the variables they reference instead.
-cinder_pool_name: "{{ ceph_cinder_pool_name }}"
-cinder_pool_type: "{{ ceph_cinder_pool_type }}"
-cinder_cache_mode: "{{ ceph_cinder_cache_mode }}"
-cinder_pool_pg_num: "{{ ceph_pool_pg_num }}"
-cinder_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
-cinder_backup_pool_name: "{{ ceph_cinder_backup_pool_name }}"
-cinder_backup_pool_type: "{{ ceph_cinder_backup_pool_type }}"
-cinder_backup_cache_mode: "{{ ceph_cinder_backup_cache_mode }}"
-cinder_backup_pool_pg_num: "{{ ceph_pool_pg_num }}"
-cinder_backup_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
-ceph_client_cinder_keyring_caps:
-  mon: 'profile rbd'
-  osd: >-
-    profile rbd pool={{ ceph_cinder_pool_name }},
-    profile rbd pool={{ ceph_nova_pool_name }},
-    profile rbd pool={{ ceph_glance_pool_name }},
-    profile rbd pool={{ ceph_cinder_pool_name }}-cache,
-    profile rbd pool={{ ceph_nova_pool_name }}-cache,
-    profile rbd pool={{ ceph_glance_pool_name }}-cache
-
-ceph_client_cinder_backup_keyring_caps:
-  mon: 'profile rbd'
-  osd: >-
-    profile rbd pool={{ ceph_cinder_backup_pool_name }},
-    profile rbd pool={{ ceph_cinder_backup_pool_name }}-cache
-
-
 ####################
 # Database
 ####################
diff --git a/ansible/roles/cinder/tasks/ceph.yml b/ansible/roles/cinder/tasks/ceph.yml
deleted file mode 100644
index 5e318db4808b0494dce8db501e355e665932347f..0000000000000000000000000000000000000000
--- a/ansible/roles/cinder/tasks/ceph.yml
+++ /dev/null
@@ -1,75 +0,0 @@
----
-- name: Copying over ceph.conf(s)
-  vars:
-    services_need_config:
-      - "cinder-volume"
-      - "cinder-backup"
-  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 }}/{{ item.key }}/ceph.conf"
-    mode: "0660"
-  become: true
-  when:
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-    - item.key in services_need_config
-  with_dict: "{{ cinder_services }}"
-  notify:
-    - Restart {{ item.key }} container
-
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ cinder_pool_name }}"
-    pool_type: "{{ cinder_pool_type }}"
-    cache_mode: "{{ cinder_cache_mode }}"
-    pool_pg_num: "{{ cinder_pool_pg_num }}"
-    pool_pgp_num: "{{ cinder_pool_pgp_num }}"
-    pool_application: "rbd"
-
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ cinder_backup_pool_name }}"
-    pool_type: "{{ cinder_backup_pool_type }}"
-    cache_mode: "{{ cinder_backup_cache_mode }}"
-    pool_pg_num: "{{ cinder_backup_pool_pg_num }}"
-    pool_pgp_num: "{{ cinder_backup_pool_pgp_num }}"
-    pool_application: "rbd"
-
-- name: Pulling cephx keyring for cinder
-  become: true
-  kolla_ceph_keyring:
-    name: client.cinder
-    caps: "{{ ceph_client_cinder_keyring_caps }}"
-  register: cephx_key_cinder
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pulling cephx keyring for cinder-backup
-  become: true
-  kolla_ceph_keyring:
-    name: client.cinder-backup
-    caps: "{{ ceph_client_cinder_backup_keyring_caps }}"
-  register: cephx_key_cinder_backup
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pushing cephx keyring
-  copy:
-    content: |
-      [client.{{ item.key_name }}]
-          key = {{ item.key }}
-    dest: "{{ node_config_directory }}/{{ item.service_name }}/ceph.client.{{ item.key_name }}.keyring"
-    mode: "0600"
-  become: true
-  with_items:
-    - { service_name: "cinder-volume", key_name: "cinder", key: "{{ cephx_key_cinder.keyring.key }}" }
-    - { service_name: "cinder-backup", key_name: "cinder", key: "{{ cephx_key_cinder.keyring.key }}" }
-    - { service_name: "cinder-backup", key_name: "cinder-backup", key: "{{ cephx_key_cinder_backup.keyring.key }}" }
-  when:
-    - inventory_hostname in groups[item.service_name]
-    - cinder_services[item.service_name].enabled | bool
-  notify:
-    - "Restart {{ item.service_name }} container"
diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml
index 9e9db41fd337d417e57db722d35ffe8814600d71..40505d912839461230ef4b667c01de52863d58d3 100644
--- a/ansible/roles/cinder/tasks/config.yml
+++ b/ansible/roles/cinder/tasks/config.yml
@@ -12,18 +12,9 @@
     - 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:
-    - (not enable_ceph | bool) and (cinder_backend_ceph | bool)
+    - cinder_backend_ceph | bool
     - inventory_hostname in groups['cinder-volume'] or
       inventory_hostname in groups['cinder-backup']
 
diff --git a/ansible/roles/cinder/tasks/deploy.yml b/ansible/roles/cinder/tasks/deploy.yml
index d7bd033ac9b77d75a8cbbe1faf80b6b964fc4602..ad850c58b5c06f6f37c56e44c3d5905361fabcce 100644
--- a/ansible/roles/cinder/tasks/deploy.yml
+++ b/ansible/roles/cinder/tasks/deploy.yml
@@ -3,8 +3,7 @@
   when: inventory_hostname in groups['cinder-api']
 
 - include_tasks: config.yml
-  when: inventory_hostname in groups['ceph-mon'] or
-        inventory_hostname in groups['cinder-api'] or
+  when: 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/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index 5734bd98646dc5d4ca193220a2743de7b8d230a1..d3043f9a5085e6a5b9ec3343990d7981e990e412 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -290,7 +290,6 @@
     - { name: "barbican", enabled: "{{ enable_barbican }}" }
     - { name: "blazar", enabled: "{{ enable_blazar }}" }
     - { name: "ceilometer", enabled: "{{ enable_ceilometer }}" }
-    - { name: "ceph", enabled: "{{ enable_ceph }}" }
     - { name: "chrony", enabled: "{{ enable_chrony }}" }
     - { name: "cinder", enabled: "{{ enable_cinder }}" }
     - { name: "cloudkitty", enabled: "{{ enable_cloudkitty }}" }
diff --git a/ansible/roles/common/templates/cron-logrotate-ceph.conf.j2 b/ansible/roles/common/templates/cron-logrotate-ceph.conf.j2
deleted file mode 100644
index d54a2ae9d0e8cd759e200d2fa026d136cd765de7..0000000000000000000000000000000000000000
--- a/ansible/roles/common/templates/cron-logrotate-ceph.conf.j2
+++ /dev/null
@@ -1,7 +0,0 @@
-"/var/log/kolla/ceph/*.log"
-{
-    create 644 root root
-    postrotate
-        chmod 644 /var/log/kolla/ceph/*.log
-    endscript
-}
diff --git a/ansible/roles/common/templates/cron.json.j2 b/ansible/roles/common/templates/cron.json.j2
index 63a29c812467b8fe921c3fb12d98a052be14ab0d..f207e3db3c3aa55a781bbc279071f56bd8565f15 100644
--- a/ansible/roles/common/templates/cron.json.j2
+++ b/ansible/roles/common/templates/cron.json.j2
@@ -5,7 +5,6 @@
     ( 'barbican', enable_barbican ),
     ( 'blazar', enable_blazar ),
     ( 'ceilometer', enable_ceilometer ),
-    ( 'ceph', enable_ceph ),
     ( 'chrony', enable_chrony ),
     ( 'cinder', enable_cinder ),
     ( 'cloudkitty', enable_cloudkitty ),
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index faed1b0af383d4064b6e15356387357e7f60d3cb..61478bbfeda79c8782cef74572bb731dd5c9d833 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -67,27 +67,6 @@ glance_notification_topics:
 
 glance_enabled_notification_topics: "{{ glance_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
 
-####################
-# Ceph
-####################
-ceph_glance_pool_type: "{{ ceph_pool_type }}"
-ceph_glance_cache_mode: "{{ ceph_cache_mode }}"
-
-# Due to Ansible issues on include, you cannot override these variables. Please
-# override the variables they reference instead.
-glance_pool_name: "{{ ceph_glance_pool_name }}"
-glance_pool_type: "{{ ceph_glance_pool_type }}"
-glance_cache_mode: "{{ ceph_glance_cache_mode }}"
-glance_pool_pg_num: "{{ ceph_pool_pg_num }}"
-glance_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
-ceph_client_glance_keyring_caps:
-  mon: 'profile rbd'
-  osd: >-
-    profile rbd pool={{ ceph_glance_pool_name }},
-    profile rbd pool={{ ceph_glance_pool_name }}-cache
-
-
 ####################
 # Database
 ####################
diff --git a/ansible/roles/glance/tasks/ceph.yml b/ansible/roles/glance/tasks/ceph.yml
deleted file mode 100644
index bc29bf2fb1216436a4920b4130a14a01da6fdf42..0000000000000000000000000000000000000000
--- a/ansible/roles/glance/tasks/ceph.yml
+++ /dev/null
@@ -1,60 +0,0 @@
----
-- 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"
-    mode: "0660"
-  become: true
-  when:
-    - glance_services['glance-api'].host_in_groups | bool
-    - glance_services['glance-api'].enabled | bool
-  notify:
-    - Restart glance-api container
-
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ glance_pool_name }}"
-    pool_type: "{{ glance_pool_type }}"
-    cache_mode: "{{ glance_cache_mode }}"
-    pool_pg_num: "{{ glance_pool_pg_num }}"
-    pool_pgp_num: "{{ glance_pool_pgp_num }}"
-    pool_application: "rbd"
-
-- name: Pulling cephx keyring
-  become: true
-  kolla_ceph_keyring:
-    name: client.glance
-    caps: "{{ ceph_client_glance_keyring_caps }}"
-  register: cephx_key
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pushing cephx keyring
-  copy:
-    content: |
-      [client.glance]
-          key = {{ cephx_key.keyring.key }}
-    dest: "{{ node_config_directory }}/glance-api/ceph.client.glance.keyring"
-    mode: "0600"
-  become: true
-  when:
-    - glance_services['glance-api'].host_in_groups | bool
-    - glance_services['glance-api'].enabled | bool
-  notify:
-    - Restart glance-api container
-
-- name: Ensuring config directory has correct owner and permission
-  become: true
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    recurse: yes
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-  when:
-    - glance_services[item].host_in_groups | bool
-    - glance_services[item].enabled | bool
-  with_items:
-    - "glance-api"
diff --git a/ansible/roles/glance/tasks/config.yml b/ansible/roles/glance/tasks/config.yml
index cdd589b520362648c1c40b6f3a8941f44cfca89e..d6e4ec9689b36cf267b5ddad261cf33ae8f2a0bd 100644
--- a/ansible/roles/glance/tasks/config.yml
+++ b/ansible/roles/glance/tasks/config.yml
@@ -12,14 +12,8 @@
     - 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:
-    - not enable_ceph | bool
     - glance_backend_ceph | bool
 
 - name: Check if policies shall be overwritten
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index 758e1de128856b47bb7c28ddd51c17d7d4eaf573..2f8f02600381db8bbf333ee783b399c9b2d12233 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -36,27 +36,6 @@ gnocchi_services:
     dimensions: "{{ gnocchi_statsd_dimensions }}"
 
 
-####################
-# Ceph
-####################
-ceph_gnocchi_pool_type: "{{ ceph_pool_type }}"
-ceph_gnocchi_cache_mode: "{{ ceph_cache_mode }}"
-
-# Due to Ansible issues on include, you cannot override these variables. Please
-# override the variables they reference instead.
-gnocchi_pool_name: "{{ ceph_gnocchi_pool_name }}"
-gnocchi_pool_type: "{{ ceph_gnocchi_pool_type }}"
-gnocchi_cache_mode: "{{ ceph_gnocchi_cache_mode }}"
-gnocchi_pool_pg_num: "{{ ceph_pool_pg_num }}"
-gnocchi_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
-ceph_client_gnocchi_keyring_caps:
-  mon: 'profile rbd'
-  osd: >-
-    profile rbd pool={{ ceph_gnocchi_pool_name }},
-    profile rbd pool={{ ceph_gnocchi_pool_name }}-cache
-
-
 ####################
 # Swift
 ####################
diff --git a/ansible/roles/gnocchi/tasks/ceph.yml b/ansible/roles/gnocchi/tasks/ceph.yml
deleted file mode 100644
index e26d54b04174703196c81c2caa0e844f36370f97..0000000000000000000000000000000000000000
--- a/ansible/roles/gnocchi/tasks/ceph.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-- 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 }}/{{ item }}/ceph.conf"
-    mode: "0660"
-  become: true
-  when: inventory_hostname in groups[item]
-  with_items:
-    - "gnocchi-api"
-    - "gnocchi-metricd"
-    - "gnocchi-statsd"
-  notify:
-    - Restart {{ item }} container
-
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ gnocchi_pool_name }}"
-    pool_type: "{{ gnocchi_pool_type }}"
-    cache_mode: "{{ gnocchi_cache_mode }}"
-    pool_pg_num: "{{ gnocchi_pool_pg_num }}"
-    pool_pgp_num: "{{ gnocchi_pool_pgp_num }}"
-    pool_application: "rgw"
-
-- name: Pulling cephx keyring
-  become: true
-  kolla_ceph_keyring:
-    name: client.gnocchi
-    caps: "{{ ceph_client_gnocchi_keyring_caps }}"
-  register: cephx_key
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pushing cephx keyring
-  copy:
-    content: |
-      [client.gnocchi]
-          key = {{ cephx_key.keyring.key }}
-    dest: "{{ node_config_directory }}/{{ item }}/ceph.client.gnocchi.keyring"
-    mode: "0600"
-  become: true
-  when: inventory_hostname in groups[item]
-  with_items:
-    - "gnocchi-api"
-    - "gnocchi-metricd"
-    - "gnocchi-statsd"
-  notify:
-    - Restart {{ item }} container
diff --git a/ansible/roles/gnocchi/tasks/config.yml b/ansible/roles/gnocchi/tasks/config.yml
index aa4612028bc1f303e8ddd790e3bdf98e690b95e1..c4492859f845a0c0c0c3461c6d72dab1ed24b7df 100644
--- a/ansible/roles/gnocchi/tasks/config.yml
+++ b/ansible/roles/gnocchi/tasks/config.yml
@@ -12,14 +12,8 @@
     - 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:
-    - not enable_ceph | bool
     - gnocchi_backend_storage == 'ceph'
 
 - name: Check if policies shall be overwritten
diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index 6c32157ca6c8d6d4e4098c4bbfa6c60a466ff93b..69cbf03bb084bc6b0b40aef5a4e6c369206270e1 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -858,19 +858,6 @@
     - haproxy_stat.find('outward_rabbitmq_management') == -1
     - "host_running_haproxy == 'None'"
 
-- name: Checking free port for RadosGW HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ rgw_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - enable_ceph_rgw | bool
-    - inventory_hostname in groups['haproxy']
-    - haproxy_stat.find('radosgw') == -1
-    - "host_running_haproxy == 'None'"
-
 - name: Checking free port for Sahara API HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml
index 10507a54bdbd1e5a0780560d7bdbe6607fcb9b73..50cad390da3228ee5f586159354931e40a601c22 100644
--- a/ansible/roles/manila/defaults/main.yml
+++ b/ansible/roles/manila/defaults/main.yml
@@ -45,21 +45,6 @@ manila_services:
     dimensions: "{{ manila_data_dimensions }}"
 
 
-#####################
-## Ceph
-#####################
-
-ceph_client_manila_keyring_caps:
-  mon: >-
-    allow r,
-    allow command "auth del",
-    allow command "auth caps",
-    allow command "auth get",
-    allow command "auth get-or-create"
-  osd: 'allow rw'
-  mds: 'allow *'
-
-
 #####################
 ## Database
 #####################
diff --git a/ansible/roles/manila/tasks/ceph.yml b/ansible/roles/manila/tasks/ceph.yml
deleted file mode 100644
index dc02f7e589deed1f73fdbd32c69e5701f48dbd83..0000000000000000000000000000000000000000
--- a/ansible/roles/manila/tasks/ceph.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-- name: Copying over ceph.conf for manila
-  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 }}/manila-share/ceph.conf"
-    mode: "0660"
-  become: true
-  notify:
-    - Restart manila-share container
-
-- name: Pulling cephx keyring for manila
-  become: true
-  kolla_ceph_keyring:
-    name: client.manila
-    caps: "{{ ceph_client_manila_keyring_caps }}"
-  register: cephx_key_manila
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pushing cephx keyring
-  copy:
-    content: |
-      [client.manila]
-          key = {{ cephx_key_manila.keyring.key }}
-    dest: "{{ node_config_directory }}/manila-share/ceph.client.manila.keyring"
-    mode: "0600"
-  become: true
-  notify:
-    - Restart manila-share container
diff --git a/ansible/roles/manila/tasks/config.yml b/ansible/roles/manila/tasks/config.yml
index 78eff7c59a59dbdc8f4518731332274a9c75c5f8..edf91981526252f916118ea430ac5d733486ba53 100644
--- a/ansible/roles/manila/tasks/config.yml
+++ b/ansible/roles/manila/tasks/config.yml
@@ -12,17 +12,8 @@
     - 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:
-    - not enable_ceph| bool
-    - not enable_ceph_mds| bool
     - (enable_manila_backend_cephfs_native | bool) or (enable_manila_backend_cephfs_nfs | bool)
     - inventory_hostname in groups['manila-share']
 
diff --git a/ansible/roles/manila/tasks/deploy.yml b/ansible/roles/manila/tasks/deploy.yml
index bb2457d0b52482424acfe79cb2eacb06fce2c127..b3f48817f387bf75a4878f224c10995d8219fa4b 100644
--- a/ansible/roles/manila/tasks/deploy.yml
+++ b/ansible/roles/manila/tasks/deploy.yml
@@ -19,6 +19,5 @@
 
 - include_tasks: fix_cephfs_owner.yml
   when:
-    - not enable_ceph | bool or enable_ceph_mds | bool
     - enable_manila_backend_cephfs_native | bool
     - inventory_hostname in groups['manila-share']
diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml
index 6d7161cd8e67962908641030258dad839a194cc6..36cc26b8a4663f50e72e54d8f63e104cbc072b83 100644
--- a/ansible/roles/nova-cell/defaults/main.yml
+++ b/ansible/roles/nova-cell/defaults/main.yml
@@ -66,33 +66,12 @@ nova_cell_services:
     dimensions: "{{ nova_compute_ironic_dimensions }}"
 
 ####################
-# Ceph
+# Ceph options
 ####################
-ceph_nova_pool_type: "{{ ceph_pool_type }}"
-ceph_nova_cache_mode: "{{ ceph_cache_mode }}"
-
-# Due to Ansible issues on include, you cannot override these variables. Please
-# override the variables they reference instead.
-nova_pool_name: "{{ ceph_nova_pool_name }}"
-nova_pool_type: "{{ ceph_nova_pool_type }}"
-nova_cache_mode: "{{ ceph_nova_cache_mode }}"
-nova_pool_pg_num: "{{ ceph_pool_pg_num }}"
-nova_pool_pgp_num: "{{ ceph_pool_pgp_num }}"
-
 # Discard option for nova managed disks. Requires libvirt (1, 0, 6) or later and
 # qemu (1, 6, 0) or later. Set to "" to disable.
 nova_hw_disk_discard: "unmap"
 
-ceph_client_nova_keyring_caps:
-  mon: 'profile rbd'
-  osd: >-
-    profile rbd pool={{ ceph_cinder_pool_name }},
-    profile rbd pool={{ ceph_cinder_pool_name }}-cache,
-    profile rbd pool={{ ceph_nova_pool_name }},
-    profile rbd pool={{ ceph_nova_pool_name }}-cache,
-    profile rbd pool={{ ceph_glance_pool_name }},
-    profile rbd pool={{ ceph_glance_pool_name }}-cache
-
 ####################
 # Cells Options
 ####################
diff --git a/ansible/roles/nova-cell/tasks/ceph.yml b/ansible/roles/nova-cell/tasks/ceph.yml
deleted file mode 100644
index afaca88125e3449ce0492f5867caccb63fe844c7..0000000000000000000000000000000000000000
--- a/ansible/roles/nova-cell/tasks/ceph.yml
+++ /dev/null
@@ -1,119 +0,0 @@
----
-- name: Ensuring config directory exists
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    state: "directory"
-    mode: "0770"
-  become: true
-  with_items:
-    - "nova-libvirt/secrets"
-  when: inventory_hostname in groups[nova_cell_compute_group]
-
-- name: Copying over ceph.conf(s)
-  vars:
-    service_name: "{{ item }}"
-  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 }}/{{ item }}/ceph.conf"
-    mode: "0660"
-  become: true
-  with_items:
-    - "nova-compute"
-    - "nova-libvirt"
-  when: inventory_hostname in groups[nova_cell_compute_group]
-  notify:
-    - Restart {{ item }} container
-
-- include_tasks: ../../ceph_pools.yml
-  vars:
-    pool_name: "{{ nova_pool_name }}"
-    pool_type: "{{ nova_pool_type }}"
-    cache_mode: "{{ nova_cache_mode }}"
-    pool_pg_num: "{{ nova_pool_pg_num }}"
-    pool_pgp_num: "{{ nova_pool_pgp_num }}"
-    pool_application: "rbd"
-
-- name: Pulling cephx keyring for nova
-  become: true
-  kolla_ceph_keyring:
-    name: client.nova
-    caps: "{{ ceph_client_nova_keyring_caps }}"
-  register: nova_cephx_key
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  run_once: True
-
-- name: Pulling cinder cephx keyring for libvirt
-  become: true
-  command: docker exec ceph_mon ceph auth get-key client.cinder
-  register: cinder_cephx_raw_key
-  delegate_to: "{{ groups['ceph-mon'][0] }}"
-  when:
-    - enable_cinder | bool
-    - cinder_backend_ceph | bool
-  changed_when: False
-  run_once: True
-
-- name: Pushing cephx keyring for nova
-  copy:
-    content: |
-      [client.nova]
-          key = {{ nova_cephx_key.keyring.key }}
-    dest: "{{ node_config_directory }}/nova-compute/ceph.client.nova.keyring"
-    mode: "0600"
-  become: true
-  when: inventory_hostname in groups[nova_cell_compute_group]
-  notify:
-    - Restart nova-compute container
-
-- name: Pushing secrets xml for libvirt
-  template:
-    src: "secret.xml.j2"
-    dest: "{{ node_config_directory }}/nova-libvirt/secrets/{{ item.uuid }}.xml"
-    mode: "0600"
-  become: true
-  when:
-    - inventory_hostname in groups[nova_cell_compute_group]
-    - item.enabled | bool
-  with_items:
-    - uuid: "{{ rbd_secret_uuid }}"
-      name: client.nova secret
-      enabled: true
-    - uuid: "{{ cinder_rbd_secret_uuid }}"
-      name: client.cinder secret
-      enabled: "{{ enable_cinder | bool and cinder_backend_ceph | bool }}"
-  notify:
-    - Restart nova-libvirt container
-
-- name: Pushing secrets key for libvirt
-  copy:
-    content: "{{ item.content }}"
-    dest: "{{ node_config_directory }}/nova-libvirt/secrets/{{ item.uuid }}.base64"
-    mode: "0600"
-  become: true
-  when:
-    - inventory_hostname in groups[nova_cell_compute_group]
-    - item.enabled | bool
-  with_items:
-    - uuid: "{{ rbd_secret_uuid }}"
-      content: "{{ nova_cephx_key.keyring.key }}"
-      enabled: true
-    - uuid: "{{ cinder_rbd_secret_uuid }}"
-      content: "{{ cinder_cephx_raw_key.stdout|default('') }}"
-      enabled: "{{ enable_cinder | bool and cinder_backend_ceph | bool }}"
-  notify:
-    - Restart nova-libvirt container
-
-- name: Ensuring config directory has correct owner and permission
-  become: true
-  file:
-    path: "{{ node_config_directory }}/{{ item }}"
-    recurse: yes
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-  with_items:
-    - "nova-compute"
-    - "nova-libvirt/secrets"
-  when: inventory_hostname in groups[nova_cell_compute_group]
diff --git a/ansible/roles/nova-cell/tasks/config.yml b/ansible/roles/nova-cell/tasks/config.yml
index be5ef3c9190ee55faed04393a8cda8b20613dd40..b4c19d72e6aa8c4f6ea1095c06d059438e961ce4 100644
--- a/ansible/roles/nova-cell/tasks/config.yml
+++ b/ansible/roles/nova-cell/tasks/config.yml
@@ -36,15 +36,9 @@
     - kolla_copy_ca_into_containers | bool
   with_dict: "{{ nova_cell_services }}"
 
-- include_tasks: ceph.yml
-  when:
-    - enable_ceph | bool and nova_backend == "rbd"
-    - inventory_hostname in groups[nova_cell_conductor_group] or
-        inventory_hostname in groups[nova_cell_compute_group]
-
 - include_tasks: external_ceph.yml
   when:
-    - not enable_ceph | bool and (nova_backend == "rbd" or cinder_backend_ceph | bool)
+    - (nova_backend == "rbd" or cinder_backend_ceph | bool)
     - inventory_hostname in groups[nova_cell_compute_group]
 
 - name: Check if policies shall be overwritten
diff --git a/ansible/roles/prechecks/tasks/service_checks.yml b/ansible/roles/prechecks/tasks/service_checks.yml
index 2fe630cdca24f80f4ea072b6c14efb3465b2cab9..a3bc00ff60faa566d29fa6de6e0eac5bdbe66e17 100644
--- a/ansible/roles/prechecks/tasks/service_checks.yml
+++ b/ansible/roles/prechecks/tasks/service_checks.yml
@@ -44,3 +44,10 @@
     - kolla_enable_tls_external | bool or kolla_enable_tls_internal | bool
     - not (kolla_enable_tls_external | bool and kolla_enable_tls_internal | bool)
     - kolla_same_external_internal_vip | bool
+
+- name: Validate that enable_ceph is disabled
+  run_once: True
+  fail:
+    msg: "We are sorry but enable_ceph is no longer supported. Please use external ceph support."
+  when:
+    - (enable_ceph | default()) | bool
diff --git a/ansible/roles/prometheus/templates/prometheus.yml.j2 b/ansible/roles/prometheus/templates/prometheus.yml.j2
index 2acf0764653ec822461d624671556bdc8e68974c..5384b7b5f545e445728a9eb1391110b84038962d 100644
--- a/ansible/roles/prometheus/templates/prometheus.yml.j2
+++ b/ansible/roles/prometheus/templates/prometheus.yml.j2
@@ -70,8 +70,8 @@ scrape_configs:
     honor_labels: true
     static_configs:
       - targets:
-{% for host in groups["ceph-mgr"] %}
-        - '{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ hostvars[host]['prometheus_ceph_mgr_exporter_port'] }}'
+{% for exporter in prometheus_ceph_mgr_exporter_endpoints %}
+        - '{{ exporter }}'
 {% endfor %}
 {% endif %}
 
diff --git a/ansible/site.yml b/ansible/site.yml
index 70f0f83d19ad1a9e3491f73af32ecdaac6cc665f..e71f113534b62f2d781545423b4f3a408f9ded57 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -20,7 +20,6 @@
         - enable_barbican_{{ enable_barbican | bool }}
         - enable_blazar_{{ enable_blazar | bool }}
         - enable_ceilometer_{{ enable_ceilometer | bool }}
-        - enable_ceph_{{ enable_ceph | bool }}
         - enable_chrony_{{ enable_chrony | bool }}
         - enable_cinder_{{ enable_cinder | bool }}
         - enable_cloudkitty_{{ enable_cloudkitty | bool }}
@@ -133,11 +132,6 @@
             tasks_from: loadbalancer
           tags: blazar
           when: enable_blazar | bool
-        - include_role:
-            role: ceph
-            tasks_from: loadbalancer
-          tags: ceph
-          when: enable_ceph | bool
         - include_role:
             role: cinder
             tasks_from: loadbalancer
@@ -590,22 +584,6 @@
         tags: keystone,
         when: enable_keystone | bool }
 
-- name: Apply role ceph
-  gather_facts: false
-  hosts:
-    - ceph-mds
-    - ceph-mgr
-    - ceph-mon
-    - ceph-nfs
-    - ceph-osd
-    - ceph-rgw
-    - '&enable_ceph_True'
-  serial: '{{ kolla_serial|default("0") }}'
-  roles:
-    - { role: ceph,
-        tags: ceph,
-        when: enable_ceph | bool }
-
 - name: Apply role kafka
   gather_facts: false
   hosts:
@@ -656,7 +634,6 @@
 - name: Apply role glance
   gather_facts: false
   hosts:
-    - ceph-mon
     - glance-api
     - '&enable_glance_True'
   serial: '{{ kolla_serial|default("0") }}'
@@ -682,7 +659,6 @@
 - name: Apply role cinder
   gather_facts: false
   hosts:
-    - ceph-mon
     - cinder-api
     - cinder-backup
     - cinder-scheduler
@@ -897,7 +873,6 @@
 - name: Apply role manila
   gather_facts: false
   hosts:
-    - ceph-mon
     - manila-api
     - manila-data
     - manila-share
@@ -912,7 +887,6 @@
 - name: Apply role gnocchi
   gather_facts: false
   hosts:
-    - ceph-mon
     - gnocchi-api
     - gnocchi-metricd
     - gnocchi-statsd
diff --git a/doc/source/admin/production-architecture-guide.rst b/doc/source/admin/production-architecture-guide.rst
index f2248ad498050b78e5daa47c424a97c96c38f87a..4cc858011ee1c862ebae1aa825c0c95733b450f6 100644
--- a/doc/source/admin/production-architecture-guide.rst
+++ b/doc/source/admin/production-architecture-guide.rst
@@ -25,7 +25,7 @@ A basic Kolla inventory consists of several types of nodes, known in Ansible as
 * Compute - Compute nodes for compute services. This is where guest VMs
   live.
 
-* Storage - Storage nodes, for cinder-volume, LVM or ceph-osd.
+* Storage - Storage nodes for cinder-volume, LVM or Swift.
 
 * Monitoring - Monitor nodes which host monitoring services.
 
diff --git a/doc/source/reference/shared-services/glance-guide.rst b/doc/source/reference/shared-services/glance-guide.rst
index 2b3dae4e1e6fb9dcbbc29ac538206c0dbdca804c..4896a5017541fd58ef9754024822c4ceddd07157 100644
--- a/doc/source/reference/shared-services/glance-guide.rst
+++ b/doc/source/reference/shared-services/glance-guide.rst
@@ -39,10 +39,10 @@ Usage of glance file backend under shared filesystem:
 Ceph backend
 ~~~~~~~~~~~~
 
-To make use of ``ceph`` backend in glance, simply enable ceph or external ceph.
+To make use of ``ceph`` backend in glance, simply enable external ceph.
 By default will enable backend ceph automatically.
-Please refer to :doc:`../storage/ceph-guide`
-or :doc:`../storage/external-ceph-guide` on how to configure this backend.
+Please refer to :doc:`../storage/external-ceph-guide`
+on how to configure this backend.
 
 To enable the ceph backend manually:
 
diff --git a/doc/source/reference/storage/ceph-guide.rst b/doc/source/reference/storage/ceph-guide.rst
deleted file mode 100644
index 6ce522ce4ded02efbb90bacce2a2c385070018bd..0000000000000000000000000000000000000000
--- a/doc/source/reference/storage/ceph-guide.rst
+++ /dev/null
@@ -1,532 +0,0 @@
-.. _ceph-guide:
-
-============================================
-Ceph - Software Defined Storage (Deprecated)
-============================================
-
-.. warning::
-   Support for deploying Ceph via Kolla Ansible is deprecated. In a future
-   release support for deploying Ceph will be removed from Kolla Ansible. Prior
-   to this we will ensure a migration path to another tool such as `Ceph
-   Ansible <http://docs.ceph.com/ceph-ansible/master/>`__ is available. For new
-   deployments it is recommended to use another tool to deploy Ceph to avoid a
-   future migration. This can be integrated with OpenStack by following
-   :doc:`external-ceph-guide`.
-
-.. note::
-   The out-of-the-box Ceph deployment requires 3 hosts with at least one block
-   device on each host that can be dedicated for sole use by Ceph.
-
-   However, with tweaks to the Ceph cluster you can deploy a **healthy** cluster
-   with a single host and a single block device.
-
-Requirements
-------------
-
-* A minimum of 3 hosts for a vanilla deploy
-* A minimum of 1 block device per host
-
-Preparation
------------
-
-To prepare a disk for use as a
-`Ceph OSD <http://docs.ceph.com/docs/master/man/8/ceph-osd/>`_ you must add a
-special partition label to the disk. This partition label is how Kolla detects
-the disks to format and bootstrap. Any disk with a matching partition label
-will be reformatted so use caution.
-
-Filestore
-~~~~~~~~~
-
-.. note::
-
-   From Rocky release - kolla-ansible by default creates Bluestore OSDs.
-   Please see Configuration section to change that behaviour.
-
-To prepare a filestore OSD as a storage drive, execute the following
-operations:
-
-.. warning::
-
-   ALL DATA ON $DISK will be LOST! Where $DISK is /dev/sdb or something similar.
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
-
-The following shows an example of using parted to configure ``/dev/sdb`` for
-usage with Kolla.
-
-.. code-block:: console
-
-   parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
-   parted /dev/sdb print
-   Model: VMware, VMware Virtual S (scsi)
-   Disk /dev/sdb: 10.7GB
-   Sector size (logical/physical): 512B/512B
-   Partition Table: gpt
-   Number  Start   End     Size    File system  Name                      Flags
-        1      1049kB  10.7GB  10.7GB               KOLLA_CEPH_OSD_BOOTSTRAP
-
-Bluestore
-~~~~~~~~~
-
-To prepare a bluestore OSD partition, execute the following operations:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS 1 -1
-
-If only one device is offered, Kolla Ceph will create the bluestore OSD on the
-device. Kolla Ceph will create two partitions for OSD and block separately.
-
-If more than one devices are offered for one bluestore OSD, Kolla Ceph will
-create partitions for block, block.wal and block.db according to the partition
-labels.
-
-To prepare a bluestore OSD block partition, execute the following operations:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO_B 1 -1
-
-To prepare a bluestore OSD block.wal partition, execute the following
-operations:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO_W 1 -1
-
-To prepare a bluestore OSD block.db partition, execute the following
-operations:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_FOO_D 1 -1
-
-Kolla Ceph will handle the bluestore OSD according to the above up to four
-partition labels. In Ceph bluestore OSD, the block.wal and block.db partitions
-are not mandatory.
-
-.. note::
-
-   In the case there are more than one devices in one bluestore OSD and there
-   are more than one bluestore OSD in one node, it is required to use suffixes
-   (``_42``, ``_FOO``, ``_FOO42``, ..). Kolla Ceph will gather all the
-   partition labels and deploy bluestore OSD on top of the devices which have
-   the same suffix in the partition label.
-
-
-Using an external journal drive
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. note::
-
-   The section is only meaningful for Ceph filestore OSD.
-
-The steps documented above created a journal partition of 5 GByte
-and a data partition with the remaining storage capacity on the same tagged
-drive.
-
-It is a common practice to place the journal of an OSD on a separate
-journal drive. This section documents how to use an external journal drive.
-
-Prepare the storage drive in the same way as documented above:
-
-.. warning::
-
-   ALL DATA ON $DISK will be LOST! Where $DISK is /dev/sdb or something similar.
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FOO 1 -1
-
-To prepare the journal external drive execute the following command:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_FOO_J 1 -1
-
-.. note::
-
-   Use different suffixes (``_42``, ``_FOO``, ``_FOO42``, ..) to use different external
-   journal drives for different storage drives. One external journal drive can only
-   be used for one storage drive.
-
-.. note::
-
-   The partition labels ``KOLLA_CEPH_OSD_BOOTSTRAP`` and ``KOLLA_CEPH_OSD_BOOTSTRAP_J``
-   are not working when using external journal drives. It is required to use
-   suffixes (``_42``, ``_FOO``, ``_FOO42``, ..). If you want to setup only one
-   storage drive with one external journal drive it is also necessary to use a suffix.
-
-
-Configuration
--------------
-
-Edit the ``[storage]`` group in the inventory which contains the hostname
-of the hosts that have the block devices you have prepped as shown above.
-
-.. code-block:: ini
-
-   [storage]
-   controller
-   compute1
-
-Enable Ceph in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
-   enable_ceph: "yes"
-
-Ceph RADOS Gateway
-~~~~~~~~~~~~~~~~~~
-
-RadosGW is optional, enable it in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
-   enable_ceph_rgw: "yes"
-
-You can enable RadosGW to be registered as Swift in Keystone catalog:
-
-.. code-block:: yaml
-
-   enable_ceph_rgw_keystone: "yes"
-
-.. note::
-
-    By default RadosGW supports both Swift and S3 API, and it is not
-    completely compatible with Swift API. The option `ceph_rgw_compatibility`
-    in ``/etc/kolla/globals.yml`` can enable/disable the RadosGW
-    compatibility with Swift API completely. After changing the value, run the
-    "reconfigure“ command to enable.
-
-RGW requires a healthy cluster in order to be successfully deployed. On initial
-start up, RGW will create several pools. The first pool should be in an
-operational state to proceed with the second one, and so on. So, in the case of
-an **all-in-one** deployment, it is necessary to change the default number of
-copies for the pools before deployment. Modify the file
-``/etc/kolla/config/ceph.conf`` and add the contents:
-
-.. path /etc/kolla/config/ceph.conf
-.. code-block:: ini
-
-   [global]
-   osd pool default size = 1
-   osd pool default min size = 1
-
-NFS
-~~~
-
-NFS is an optional feature, you can enable it in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
-   enable_ceph_nfs: "yes"
-
-.. note::
-
-   If you are using Ubuntu, please enable Ceph NFS before using
-   ``kolla-ansible bootstrap-servers`` command - it will install required rpcbind
-   package.
-
-Store type
-~~~~~~~~~~
-
-Configure the Ceph store type in ``/etc/kolla/globals.yml``, the default
-value is ``bluestore`` in Rocky:
-
-.. code-block:: yaml
-
-   ceph_osd_store_type: "bluestore"
-
-Recommendations
----------------
-
-Placement groups
-~~~~~~~~~~~~~~~~
-
-Regarding number of placement groups (PGs)
-
-Kolla sets very conservative values for the number of PGs per pool
-(`ceph_pool_pg_num` and `ceph_pool_pgp_num`). This is in order to ensure
-the majority of users will be able to deploy Ceph out of the box. It is
-*highly* recommended to consult the official Ceph documentation regarding
-these values before running Ceph in any kind of production scenario.
-
-Cluster Network
-~~~~~~~~~~~~~~~
-
-To build a high performance and secure Ceph Storage Cluster, the Ceph community
-recommend the use of two separate networks: public network and cluster network.
-Edit the ``/etc/kolla/globals.yml`` and configure the ``cluster_interface``:
-
-.. path /etc/kolla/globals.yml
-.. code-block:: yaml
-
-   cluster_interface: "eth2"
-
-For more details, see `NETWORK CONFIGURATION REFERENCE
-<http://docs.ceph.com/docs/master/rados/configuration/network-config-ref/#ceph-networks>`_
-of Ceph Documentation.
-
-Deployment
-----------
-
-Finally deploy the Ceph-enabled OpenStack:
-
-.. code-block:: console
-
-   kolla-ansible deploy -i path/to/inventory
-
-.. note::
-
-   Kolla Ceph supports mixed Ceph OSD deployment, i.e. some Ceph OSDs are
-   bluestore, the others are filestore. The ``ceph_osd_store_type`` of each
-   Ceph OSD can be configured under ``[storage]`` in the multinode inventory
-   file. The Ceph OSD store type is unique in one storage node. For example:
-
-.. code-block:: ini
-
-   [storage]
-   storage_node1_hostname ceph_osd_store_type=bluestore
-   storage_node2_hostname ceph_osd_store_type=bluestore
-   storage_node3_hostname ceph_osd_store_type=filestore
-   storage_node4_hostname ceph_osd_store_type=filestore
-
-Using Cache Tiering
--------------------
-
-An optional `cache tiering <http://docs.ceph.com/docs/jewel/rados/operations/cache-tiering/>`_
-can be deployed by formatting at least one cache device and enabling cache.
-tiering in the globals.yml configuration file.
-
-To prepare a filestore OSD as a cache device, execute the following
-operations:
-
-.. code-block:: console
-
-   parted $DISK -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_CACHE_BOOTSTRAP 1 -1
-
-.. note::
-
-   To prepare a bluestore OSD as a cache device, change the partition name in
-   the above command to "KOLLA_CEPH_OSD_CACHE_BOOTSTRAP_BS". The deployment of
-   bluestore cache OSD is the same as bluestore OSD.
-
-Enable the Ceph cache tier in ``/etc/kolla/globals.yml``:
-
-.. code-block:: yaml
-
-   enable_ceph: "yes"
-   ceph_enable_cache: "yes"
-   # Valid options are [ forward, none, writeback ]
-   ceph_cache_mode: "writeback"
-
-After this run the playbooks as you normally would, for example:
-
-.. code-block:: console
-
-   kolla-ansible deploy -i path/to/inventory
-
-Setting up an Erasure Coded Pool
---------------------------------
-
-`Erasure code <http://docs.ceph.com/docs/jewel/rados/operations/erasure-code/>`_
-is the new big thing from Ceph. Kolla has the ability to setup your Ceph pools
-as erasure coded pools. Due to technical limitations with Ceph, using erasure
-coded pools as OpenStack uses them requires a cache tier. Additionally, you
-must make the choice to use an erasure coded pool or a replicated pool
-(the default) when you initially deploy. You cannot change this without
-completely removing the pool and recreating it.
-
-To enable erasure coded pools add the following options to your
-``/etc/kolla/globals.yml`` configuration file:
-
-.. code-block:: yaml
-
-   # A requirement for using the erasure-coded pools is you must setup a cache tier
-   # Valid options are [ erasure, replicated ]
-   ceph_pool_type: "erasure"
-   # Optionally, you can change the profile
-   #ceph_erasure_profile: "k=4 m=2 ruleset-failure-domain=host"
-
-Managing Ceph
--------------
-
-Check the Ceph status for more diagnostic information. The sample output below
-indicates a healthy cluster:
-
-.. code-block:: console
-
-   docker exec ceph_mon ceph -s
-
-   cluster:
-     id:     f2ed6c00-c043-4e1c-81b6-07c512db26b1
-     health: HEALTH_OK
-
-   services:
-     mon: 1 daemons, quorum 172.16.31.121
-     mgr: poc12-01(active)
-     osd: 4 osds: 4 up, 4 in; 5 remapped pgs
-
-   data:
-     pools:   4 pools, 512 pgs
-     objects: 0 objects, 0 bytes
-     usage:   432 MB used, 60963 MB / 61395 MB avail
-     pgs:     512 active+clean
-
-If Ceph is run in an **all-in-one** deployment or with less than three storage
-nodes, further configuration is required. It is necessary to change the default
-number of copies for the pool. The following example demonstrates how to change
-the number of copies for the pool to 1:
-
-.. code-block:: console
-
-   docker exec ceph_mon ceph osd pool set rbd size 1
-
-All the pools must be modified if Glance, Nova, and Cinder have been deployed.
-An example of modifying the pools to have 2 copies:
-
-.. code-block:: console
-
-   for p in images vms volumes backups; do docker exec ceph_mon ceph osd pool set ${p} size 2; done
-
-If using a cache tier, these changes must be made as well:
-
-.. code-block:: console
-
-   for p in images vms volumes backups; do docker exec ceph_mon ceph osd pool set ${p}-cache size 2; done
-
-The default pool Ceph creates is named **rbd**. It is safe to remove this pool:
-
-.. code-block:: console
-
-   docker exec ceph_mon ceph osd pool delete rbd rbd --yes-i-really-really-mean-it
-
-Troubleshooting
----------------
-
-Deploy fails with 'Fetching Ceph keyrings ... No JSON object could be decoded'
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If an initial deploy of Ceph fails, perhaps due to improper configuration or
-similar, the cluster will be partially formed and will need to be reset for a
-successful deploy.
-
-In order to do this the operator should remove the `ceph_mon_config` volume
-from each Ceph monitor node:
-
-.. code-block:: console
-
-   ansible -i ansible/inventory/multinode \
-       -a 'docker volume rm ceph_mon_config' \
-       ceph-mon
-
-Simple 3 Node Example
----------------------
-
-This example will show how to deploy Ceph in a very simple setup using 3
-storage nodes. 2 of those nodes (kolla1 and kolla2) will also provide other
-services like control, network, compute, and monitoring. The 3rd
-(kolla3) node will only act as a storage node.
-
-This example will only focus on the Ceph aspect of the deployment and assumes
-that you can already deploy a fully functional environment using 2 nodes that
-does not employ Ceph yet. So we will be adding to the existing multinode
-inventory file you already have.
-
-Each of the 3 nodes are assumed to have two disk, ``/dev/sda`` (40GB)
-and ``/dev/sdb`` (10GB). Size is not all that important... but for now make
-sure each sdb disk are of the same size and are at least 10GB. This example
-will use a single disk (/dev/sdb) for both Ceph data and journal. It will not
-implement caching.
-
-Here is the top part of the multinode inventory file used in the example
-environment before adding the 3rd node for Ceph:
-
-.. code-block:: ini
-
-   [control]
-   # These hostname must be resolvable from your deployment host
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [network]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [compute]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [monitoring]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [storage]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-Configuration
-~~~~~~~~~~~~~
-
-To prepare the 2nd disk (/dev/sdb) of each nodes for use by Ceph you will need
-to add a partition label to it as shown below:
-
-.. code-block:: console
-
-   parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
-
-Make sure to run this command on each of the 3 nodes or the deployment will
-fail.
-
-Next, edit the multinode inventory file and make sure the 3 nodes are listed
-under ``[storage]``. In this example I will add kolla3.ducourrier.com to the
-existing inventory file:
-
-.. code-block:: ini
-
-   [control]
-   # These hostname must be resolvable from your deployment host
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [network]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [compute]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [monitoring]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-
-   [storage]
-   kolla1.ducourrier.com
-   kolla2.ducourrier.com
-   kolla3.ducourrier.com
-
-It is now time to enable Ceph in the environment by editing the
-``/etc/kolla/globals.yml`` file:
-
-.. code-block:: yaml
-
-   enable_ceph: "yes"
-   enable_ceph_rgw: "yes"
-   enable_cinder: "yes"
-   glance_backend_file: "no"
-   glance_backend_ceph: "yes"
-
-Deployment
-~~~~~~~~~~
-
-Finally deploy the Ceph-enabled configuration:
-
-.. code-block:: console
-
-   kolla-ansible deploy -i path/to/inventory-file
-
diff --git a/doc/source/reference/storage/external-ceph-guide.rst b/doc/source/reference/storage/external-ceph-guide.rst
index 11879c7a593075ea973ec4fef32fc44a7717e566..1b34e2bfb27cf558deed822676646211221e5f77 100644
--- a/doc/source/reference/storage/external-ceph-guide.rst
+++ b/doc/source/reference/storage/external-ceph-guide.rst
@@ -22,17 +22,8 @@ creating the pool and keyrings with appropriate permissions for each service.
 Enabling External Ceph
 ~~~~~~~~~~~~~~~~~~~~~~
 
-Using external Ceph with Kolla means not to deploy Ceph via Kolla. Therefore,
-disable Ceph deployment in ``/etc/kolla/globals.yml``
-
-.. code-block:: yaml
-
-   enable_ceph: "no"
-
-There are flags indicating individual services to use ceph or not which default
-to the value of ``enable_ceph``. Those flags now need to be activated in order
-to activate external Ceph integration. This can be done individually per
-service in ``/etc/kolla/globals.yml``:
+To activate external Ceph integration you need to enable Ceph backend.
+This can be done individually per service in ``/etc/kolla/globals.yml``:
 
 .. code-block:: yaml
 
@@ -42,9 +33,6 @@ service in ``/etc/kolla/globals.yml``:
    gnocchi_backend_storage: "ceph"
    enable_manila_backend_cephfs_native: "yes"
 
-The combination of ``enable_ceph: "no"`` and ``<service>_backend_ceph: "yes"``
-triggers the activation of external ceph mechanism in Kolla.
-
 Edit the Inventory File
 ~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/doc/source/reference/storage/index.rst b/doc/source/reference/storage/index.rst
index e17e82836cc3f42f42074c50765f51635ae3f69b..4729164675d3d27fdd7173e7dcb505ce8eb97632 100644
--- a/doc/source/reference/storage/index.rst
+++ b/doc/source/reference/storage/index.rst
@@ -8,7 +8,6 @@ supported by kolla.
 .. toctree::
    :maxdepth: 1
 
-   ceph-guide
    external-ceph-guide
    cinder-guide
    cinder-guide-hnas
diff --git a/doc/source/reference/storage/manila-guide.rst b/doc/source/reference/storage/manila-guide.rst
index 3183f590db18a31492ef93a6949ef6c5c64a9b96..363848178eb1714a836d884b32dc808c079cb0fa 100644
--- a/doc/source/reference/storage/manila-guide.rst
+++ b/doc/source/reference/storage/manila-guide.rst
@@ -35,12 +35,11 @@ services are properly working.
 Preparation and Deployment
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Cinder and Ceph are required, enable it in ``/etc/kolla/globals.yml``:
+Cinder is required, enable it in ``/etc/kolla/globals.yml``:
 
 .. code-block:: console
 
    enable_cinder: "yes"
-   enable_ceph: "yes"
 
 Enable Manila and generic back end in ``/etc/kolla/globals.yml``:
 
diff --git a/doc/source/user/quickstart.rst b/doc/source/user/quickstart.rst
index 9c8fa32251d78cd318d1e592e856db5f60fc6a72..e99f828c7c65a190449a63fd3864ad8823138071 100644
--- a/doc/source/user/quickstart.rst
+++ b/doc/source/user/quickstart.rst
@@ -388,7 +388,7 @@ There are a few options that are required to deploy Kolla-Ansible:
 
   .. note::
 
-     This only affects OpenStack services. Infrastructure services like Ceph are
+     This only affects OpenStack services. Infrastructure services are
      always "binary".
 
   .. note::
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 807f6581efff17400de14be499d18fe9997b4a56..104e02a9983919a7be17e793a75b53f66ce1b174 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -232,11 +232,6 @@
 #enable_ceilometer_ipmi: "no"
 #enable_cells: "no"
 #enable_central_logging: "no"
-#enable_ceph: "no"
-#enable_ceph_mds: "no"
-#enable_ceph_rgw: "no"
-#enable_ceph_nfs: "no"
-#enable_ceph_dashboard: "{{ enable_ceph | bool }}"
 #enable_chrony: "yes"
 #enable_cinder: "no"
 #enable_cinder_backup: "yes"
@@ -367,37 +362,34 @@
 # to configure IPv6 in RabbitMQ server.
 #rabbitmq_server_additional_erl_args: ""
 
-##############
-# Ceph options
-##############
-# Ceph can be setup with a caching to improve performance. To use the cache you
-# must provide separate disks than those for the OSDs
-#ceph_enable_cache: "no"
-
-# Set to no if using external Ceph without cephx.
+#######################
+# External Ceph options
+#######################
+# External Ceph - cephx auth enabled (this is the standard nowadays, defaults to yes)
 #external_ceph_cephx_enabled: "yes"
 
-# Ceph is not able to determine the size of a cache pool automatically,
-# so the configuration on the absolute size is required here, otherwise the flush/evict will not work.
-#ceph_target_max_bytes: ""
-#ceph_target_max_objects: ""
-
-# Valid options are [ forward, none, writeback ]
-#ceph_cache_mode: "writeback"
-
-# A requirement for using the erasure-coded pools is you must setup a cache tier
-# Valid options are [ erasure, replicated ]
-#ceph_pool_type: "replicated"
-
-# Integrate ceph rados object gateway with openstack keystone
-#enable_ceph_rgw_keystone: "no"
-
-# Set the pgs and pgps for pool
-# WARNING! These values are dependant on the size and shape of your cluster -
-# the default values are not suitable for production use. Please refer to the
-# Kolla Ceph documentation for more information.
-#ceph_pool_pg_num: 8
-#ceph_pool_pgp_num: 8
+# Glance
+#ceph_glance_keyring: "ceph.client.glance.keyring"
+#ceph_glance_user: "glance"
+#ceph_glance_pool_name: "images"
+# Cinder
+#ceph_cinder_keyring: "ceph.client.cinder.keyring"
+#ceph_cinder_user: "cinder"
+#ceph_cinder_pool_name: "volumes"
+#ceph_cinder_backup_keyring: "ceph.client.cinder-backup.keyring"
+#ceph_cinder_backup_user: "cinder-backup"
+#ceph_cinder_backup_pool_name: "backups"
+# Nova
+#ceph_nova_keyring: "{{ ceph_cinder_keyring }}"
+#ceph_nova_user: "nova"
+#ceph_nova_pool_name: "vms"
+# Gnocchi
+#ceph_gnocchi_keyring: "ceph.client.gnocchi.keyring"
+#ceph_gnocchi_user: "gnocchi"
+#ceph_gnocchi_pool_name: "gnocchi"
+# Manila
+#ceph_manila_keyring: "ceph.client.manila.keyring"
+#ceph_manila_user: "manila"
 
 #############################
 # Keystone - Identity Options
@@ -455,7 +447,7 @@
 # Gnocchi options
 #################
 # Valid options are [ file, ceph ]
-#gnocchi_backend_storage: "{{ 'ceph' if enable_ceph|bool else 'file' }}"
+#gnocchi_backend_storage: "file"
 
 # Valid options are [redis, '']
 #gnocchi_incoming_storage: "{{ 'redis' if enable_redis | bool else '' }}"
@@ -464,7 +456,7 @@
 # Cinder - Block Storage Options
 ################################
 # Enable / disable Cinder backends
-#cinder_backend_ceph: "{{ enable_ceph }}"
+#cinder_backend_ceph: "no"
 #cinder_backend_vmwarevc_vmdk: "no"
 #cinder_volume_group: "cinder-volumes"
 # Valid options are [ '', redis, etcd ]
@@ -499,7 +491,7 @@
 ########################
 # Nova - Compute Options
 ########################
-#nova_backend_ceph: "{{ enable_ceph }}"
+#nova_backend_ceph: "no"
 
 # Valid options are [ qemu, kvm, vmware, xenapi ]
 #nova_compute_virt_type: "kvm"
@@ -632,7 +624,7 @@
 #enable_prometheus_cadvisor: "{{ enable_prometheus | bool }}"
 #enable_prometheus_memcached: "{{ enable_prometheus | bool }}"
 #enable_prometheus_alertmanager: "{{ enable_prometheus | bool }}"
-#enable_prometheus_ceph_mgr_exporter: "{{ enable_prometheus | bool and enable_ceph | bool }}"
+#enable_prometheus_ceph_mgr_exporter: "no"
 #enable_prometheus_openstack_exporter: "{{ enable_prometheus | bool }}"
 #enable_prometheus_elasticsearch_exporter: "{{ enable_prometheus | bool and enable_elasticsearch | bool }}"
 #enable_prometheus_blackbox_exporter: "{{ enable_prometheus | bool }}"
@@ -640,6 +632,12 @@
 # List of extra parameters passed to prometheus. You can add as many to the list.
 #prometheus_cmdline_extras:
 
+# Example of setting endpoints for prometheus ceph mgr exporter.
+# You should add all ceph mgr's in your external ceph deployment.
+#prometheus_ceph_mgr_exporter_endpoints:
+#  - host1:port1
+#  - host2:port2
+
 #########
 # Freezer
 #########
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml
index 28e7a2516dbffb52b744f537b6f2cf3bfa25e3b8..f4d4928c17988b32fe1713a50ad1aa261ebad392 100644
--- a/etc/kolla/passwords.yml
+++ b/etc/kolla/passwords.yml
@@ -1,11 +1,9 @@
 ---
 ###################
-# Ceph options
+# External Ceph options
 ####################
 # These options must be UUID4 values in string format
 # XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX
-ceph_cluster_fsid:
-ceph_rgw_keystone_password:
 # for backward compatible consideration, rbd_secret_uuid is only used for nova,
 # cinder_rbd_secret_uuid is used for cinder
 rbd_secret_uuid:
diff --git a/kolla_ansible/cmd/genpwd.py b/kolla_ansible/cmd/genpwd.py
index 6e9ec49778a8c9bd5ad343c6d17a8563e0319512..60e508397b45690a2c8c812cd04d5972f6f1bbce 100755
--- a/kolla_ansible/cmd/genpwd.py
+++ b/kolla_ansible/cmd/genpwd.py
@@ -103,8 +103,7 @@ def main():
     passwords_file = os.path.expanduser(args.passwords)
 
     # These keys should be random uuids
-    uuid_keys = ['ceph_cluster_fsid',
-                 'rbd_secret_uuid',
+    uuid_keys = ['rbd_secret_uuid',
                  'cinder_rbd_secret_uuid',
                  'gnocchi_project_id',
                  'gnocchi_resource_id',
diff --git a/releasenotes/notes/remove-kolla-ceph-adbb5d66bd0192f3.yaml b/releasenotes/notes/remove-kolla-ceph-adbb5d66bd0192f3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9e5c8a1141164c3fb2c66f82eb300074a119b620
--- /dev/null
+++ b/releasenotes/notes/remove-kolla-ceph-adbb5d66bd0192f3.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    Support for deploying Ceph has been removed, after it was deprecated in
+    Stein. Please use an external tool to deploy Ceph and integrate it with
+    Kolla-Ansible deployed OpenStack by following the `external Ceph guide
+    <https://docs.openstack.org/kolla-ansible/latest/reference/storage/external-ceph-guide.html>`__.
diff --git a/tests/get_logs.sh b/tests/get_logs.sh
index ae6b10c05c2753e7c6ce03397781a6f3b1fdc2c4..9b619dc1a726693f415f3335f93dd15be0447a65 100644
--- a/tests/get_logs.sh
+++ b/tests/get_logs.sh
@@ -77,20 +77,14 @@ copy_logs() {
     # docker related information
     (docker info && docker images && docker ps -a && docker network ls && docker inspect $(docker ps -aq)) > ${LOG_DIR}/system_logs/docker-info.txt
 
-    # ceph related logs
-    # NOTE(mnasiadka): regex to match both ceph_mon and ceph-mon-$hostname
-    for container in $(docker ps --filter name=ceph.\?mon --format "{{.Names}}"); do
-        if [ $container == "ceph_mon" ]; then
-            CEPH_LOG_DIR="${LOG_DIR}/kolla/ceph"
-        else
-            CEPH_LOG_DIR="${LOG_DIR}/ceph"
-            mkdir -p ${CEPH_LOG_DIR}
-        fi
-        docker exec ${container} ceph --connect-timeout 5 -s > ${CEPH_LOG_DIR}/ceph_s.txt
+    # ceph-ansible related logs
+    mkdir -p ${LOG_DIR}/ceph
+    for container in $(docker ps --filter name=ceph-mon --format "{{.Names}}"); do
+        docker exec ${container} ceph --connect-timeout 5 -s > ${LOG_DIR}/ceph/ceph_s.txt
         # NOTE(yoctozepto): osd df removed on purpose to avoid CI POST_FAILURE due to a possible hang:
         # as of ceph mimic it hangs when MON is operational but MGR not
         # its usefulness is mediocre and having POST_FAILUREs is bad
-        docker exec ${container} ceph --connect-timeout 5 osd tree > ${CEPH_LOG_DIR}/ceph_osd_tree.txt
+        docker exec ${container} ceph --connect-timeout 5 osd tree > ${LOG_DIR}/ceph/ceph_osd_tree.txt
     done
 
     # bifrost related logs
diff --git a/tests/run.yml b/tests/run.yml
index 82ce3aa5de261928bf4e3075ba6612e0d1605ad7..8af4bb5f723f43edbfa7ad74e5a196ff4b427001 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -21,7 +21,7 @@
         need_build_image: false
         build_image_tag: "change_{{ zuul.change | default('none') }}"
         openstack_core_enabled: "{{ openstack_core_enabled }}"
-        openstack_core_tested: "{{ scenario in ['core', 'ceph', 'ceph-ansible', 'zun', 'cells', 'swift'] }}"
+        openstack_core_tested: "{{ scenario in ['core', 'ceph-ansible', 'zun', 'cells', 'swift'] }}"
         dashboard_enabled: "{{ openstack_core_enabled }}"
         # TODO(mgoddard): Remove when previous_release is ussuri.
         playbook_python_version: "{{ '2' if is_upgrade and previous_release == 'train' else '3' }}"
@@ -34,10 +34,10 @@
 
     - name: Prepare disks for a storage service
       script: "setup_disks.sh {{ disk_type }}"
-      when: scenario in ['ceph', 'ceph-ansible', 'zun', 'swift']
+      when: scenario in ['ceph-ansible', 'zun', 'swift']
       become: true
       vars:
-        disk_type: "{{ ceph_storetype if scenario in ['ceph', 'ceph-ansible'] else scenario }}"
+        disk_type: "{{ ceph_storetype if scenario in ['ceph-ansible'] else scenario }}"
         ceph_storetype: "{{ hostvars[inventory_hostname].get('ceph_osd_storetype') }}"
 
 - hosts: primary
@@ -124,10 +124,6 @@
         - src: "tests/templates/nova-compute-overrides.j2"
           dest: /etc/kolla/config/nova/nova-compute.conf
           when: "{{ openstack_core_enabled }}"
-        # ceph.conf
-        - src: "tests/templates/ceph-overrides.j2"
-          dest: /etc/kolla/config/ceph.conf
-          when: "{{ scenario == 'ceph' }}"
         # bifrost/dib.yml
         - src: "tests/templates/bifrost-dib-overrides.j2"
           dest: /etc/kolla/config/bifrost/dib.yml
@@ -474,10 +470,6 @@
             # nova-compute.conf
             - src: "tests/templates/nova-compute-overrides.j2"
               dest: /etc/kolla/config/nova/nova-compute.conf
-            # ceph.conf
-            - src: "tests/templates/ceph-overrides.j2"
-              dest: /etc/kolla/config/ceph.conf
-              when: "{{ scenario == 'ceph' }}"
           when: item.when | default(true)
 
         # TODO(mgoddard): Remove this block when previous_release is ussuri.
diff --git a/tests/setup_disks.sh b/tests/setup_disks.sh
index 3f4fe0169de89ad7a52161ebf566f41460ec61e8..670f642e860269afced72ca350f1abd624851cbe 100644
--- a/tests/setup_disks.sh
+++ b/tests/setup_disks.sh
@@ -22,38 +22,6 @@ elif [ $1 = 'swift' ]; then
     parted $free_device -s -- mklabel gpt mkpart KOLLA_SWIFT_DATA 1 -1
     free_partition=${free_device}p1
     mkfs.xfs -L d0 $free_partition
-elif [ $1 = 'filestore' ]; then
-    #setup devices for Kolla Ceph filestore OSD
-    dd if=/dev/zero of=/opt/data/kolla/ceph-osd1.img bs=5M count=1000
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-osd1.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_OSD1 1 -1
-
-    dd if=/dev/zero of=/opt/data/kolla/ceph-journal1.img bs=5M count=512
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-journal1.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_OSD1_J 1 -1
-elif [ $1 = 'bluestore' ]; then
-    # Setup devices for Kolla Ceph bluestore OSD
-    dd if=/dev/zero of=/opt/data/kolla/ceph-osd0.img bs=5M count=100
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-osd0.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_OSD0 1 -1
-
-    dd if=/dev/zero of=/opt/data/kolla/ceph-osd0-b.img bs=5M count=1000
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-osd0-b.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_OSD0_B 1 -1
-
-    dd if=/dev/zero of=/opt/data/kolla/ceph-osd0-w.img bs=5M count=200
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-osd0-w.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_OSD0_W 1 -1
-
-    dd if=/dev/zero of=/opt/data/kolla/ceph-osd0-d.img bs=5M count=200
-    LOOP=$(losetup -f)
-    losetup $LOOP /opt/data/kolla/ceph-osd0-d.img
-    parted $LOOP -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS_OSD0_D 1 -1
 elif [ $1 = 'ceph-lvm' ]; then
     free_device=$(losetup -f)
     fallocate -l 10G /var/lib/ceph-osd1.img
diff --git a/tests/templates/ceph-inventory.j2 b/tests/templates/ceph-inventory.j2
index 17edcdbdca149b0dec5f9da023af35576526b44d..b9f87dcb43f635006e1223452412286d9de92005 100644
--- a/tests/templates/ceph-inventory.j2
+++ b/tests/templates/ceph-inventory.j2
@@ -1,6 +1,6 @@
 [storage]
 {% for host in hostvars %}
-{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} ansible_user=kolla ansible_ssh_private_key_file={{ ansible_env.HOME ~ '/.ssh/id_rsa_kolla' }} ceph_osd_store_type={{ 'filestore' if host == 'primary' else 'bluestore' }}
+{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} ansible_user=kolla ansible_ssh_private_key_file={{ ansible_env.HOME ~ '/.ssh/id_rsa_kolla' }}
 {% endfor %}
 
 # Ceph-Ansible hosts
diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2
index c1e79e0c15faf6ba5fe23ecdc331bb14503f8add..664be05b24fbc0862221b14f6e757279b89563e8 100644
--- a/tests/templates/globals-default.j2
+++ b/tests/templates/globals-default.j2
@@ -53,27 +53,6 @@ openstack_release: "{{ previous_release }}"
 {% endif %}
 {% endif %}
 
-{% if scenario == "ceph" %}
-enable_ceph: "yes"
-enable_ceph_mds: "yes"
-enable_ceph_rgw: "yes"
-enable_ceph_rgw_keystone: "yes"
-enable_ceph_nfs: "yes"
-enable_cinder: "yes"
-ceph_pool_pg_num: 8
-ceph_pool_pgp_num: 8
-{% if address_family == 'ipv6' %}
-# NOTE(yoctozepto): ceph won't accept IPv6 address as hostname (due to ':', '.' were fine)
-# hence use inventory name as the others do
-# this is Train feature so would fail upgrades from Stein
-ceph_mon_host_type: "INVENTORY"
-ceph_osd_host_type: "INVENTORY"
-{% endif %}
-# This is experimental feature, disable if gate fail.
-# In multinode jobs without ceph rolling upgrade fails.
-glance_enable_rolling_upgrade: "yes"
-{% endif %}
-
 {% if scenario == "zun" %}
 enable_zun: "yes"
 enable_kuryr: "yes"
diff --git a/tests/templates/inventory.j2 b/tests/templates/inventory.j2
index f63db24abb90c94cf87a770338bed1ab59e9bc0a..7441f4e01992980c8227f81877659eb0d725d0ea 100644
--- a/tests/templates/inventory.j2
+++ b/tests/templates/inventory.j2
@@ -17,7 +17,7 @@
 
 [storage]
 {% for host in hostvars %}
-{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} ansible_user=kolla ansible_ssh_private_key_file={{ ansible_env.HOME ~ '/.ssh/id_rsa_kolla' }} ceph_osd_store_type={{ 'filestore' if host == 'primary' else 'bluestore' }}
+{{ host }} ansible_host={{ hostvars[host]['ansible_host'] }} ansible_user=kolla ansible_ssh_private_key_file={{ ansible_env.HOME ~ '/.ssh/id_rsa_kolla' }}
 {% endfor %}
 
 [monitoring]
@@ -156,8 +156,11 @@ control
 [murano:children]
 control
 
+{# TODO(mnasiadka): Remove in Victoria #}
+{% if scenario == 'ceph-ansible' and is_previous_release and previous_release == 'train' %}
 [ceph:children]
 control
+{% endif %}
 
 [ironic:children]
 control
@@ -321,6 +324,8 @@ neutron
 [ironic-neutron-agent:children]
 neutron
 
+{# TODO(mnasiadka): Remove in Victoria #}
+{% if scenario == 'ceph-ansible' and is_previous_release and previous_release == 'train' %}
 # Ceph
 [ceph-mds:children]
 ceph
@@ -339,6 +344,7 @@ ceph
 
 [ceph-osd:children]
 storage
+{% endif %}
 
 # Cinder
 [cinder-api:children]
diff --git a/tests/test-core-openstack.sh b/tests/test-core-openstack.sh
index c479ce5d3794919c2bb7f3f9495fd11cfd4454ff..29334b58eb12962f6b0306d7244594b02416eabe 100755
--- a/tests/test-core-openstack.sh
+++ b/tests/test-core-openstack.sh
@@ -11,7 +11,7 @@ function test_smoke {
     openstack --debug compute service list
     openstack --debug network agent list
     openstack --debug orchestration service list
-    if [[ $SCENARIO == "ceph" ]] || [[ $SCENARIO == "ceph-ansible" ]] || [[ $SCENARIO == "zun" ]]; then
+    if [[ $SCENARIO == "ceph-ansible" ]] | [[ $SCENARIO == "zun" ]]; then
         openstack --debug volume service list
     fi
 }
@@ -28,7 +28,7 @@ function test_instance_boot {
     fi
     echo "SUCCESS: Server creation"
 
-    if [[ $SCENARIO == "ceph" ]] || [ $SCENARIO == "ceph-ansible" ] || [[ $SCENARIO == "zun" ]]; then
+    if [[ $SCENARIO == "ceph-ansible" ]] || [[ $SCENARIO == "zun" ]]; then
         echo "TESTING: Cinder volume attachment"
         openstack volume create --size 2 test_volume
         attempt=1
diff --git a/tools/cleanup-host b/tools/cleanup-host
index cc885558cf617c6de6a35bac2a23f312b6e6a574..dfffa6157f39052d512b9d93fb4aa49247d9b88f 100755
--- a/tools/cleanup-host
+++ b/tools/cleanup-host
@@ -37,14 +37,6 @@ fi
 echo "Creating a fstab backup..."
 sudo cp /etc/fstab /etc/fstab_backup
 
-echo "Unmounting Ceph OSD disks"
-for mount in $(mount | awk '/\/var\/lib\/ceph/ { print $3 }'); do
-    umount $mount
-done
-
-echo "Removing ceph references from fstab..."
-sudo sed -i '/\/var\/lib\/ceph\/osd\//d' /etc/fstab
-
 if [[ "$enable_swift" == "yes" ]]; then
     echo "Removing swift references from fstab..."
     cat /etc/fstab | grep "/srv/node/d*" | xargs umount
diff --git a/tools/setup_gate.sh b/tools/setup_gate.sh
index 36e768cae66743696627085a6165f287a8084788..d30d829eac0f361422a3df549c84cf01cfa10910 100755
--- a/tools/setup_gate.sh
+++ b/tools/setup_gate.sh
@@ -35,10 +35,6 @@ function setup_config {
         GATE_IMAGES="bifrost"
     fi
 
-    if [[ $SCENARIO == "ceph" ]]; then
-        GATE_IMAGES+=",^ceph,^cinder"
-    fi
-
     if [[ $SCENARIO == "ceph-ansible" ]]; then
         GATE_IMAGES+=",^cinder"
     fi
diff --git a/tools/validate-all-file.py b/tools/validate-all-file.py
index 6acbc08a72f8f7d570cc40905bf34c077e0606d0..21e5bef841ca089cfb57e5a941f7a5962d6ba495 100755
--- a/tools/validate-all-file.py
+++ b/tools/validate-all-file.py
@@ -150,8 +150,7 @@ def check_docker_become():
                           for x in YAML_INCLUDE_PATTERNS])
     excludes = r'|'.join([fnmatch.translate(x)
                           for x in YAML_EXCLUDE_PATTERNS])
-    docker_modules = ('kolla_docker', 'kolla_ceph_keyring',
-                      'kolla_container_facts', 'kolla_toolbox')
+    docker_modules = ('kolla_docker', 'kolla_container_facts', 'kolla_toolbox')
     cmd_modules = ('command', 'shell')
     return_code = 0
     roles_path = os.path.join(PROJECT_ROOT, 'ansible', 'roles')
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 53a1ec4bfcecf0dcc76a303080b460bb11665781..43ccddeb9ceb14e70e074bd0154641479604ffc9 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -78,24 +78,6 @@
       base_distro: ubuntu
       install_type: binary
 
-- job:
-    name: kolla-ansible-ubuntu-source-ceph
-    parent: kolla-ansible-ceph-base
-    nodeset: kolla-ansible-bionic-multi
-    timeout: 9000
-    vars:
-      base_distro: ubuntu
-      install_type: source
-
-- job:
-    name: kolla-ansible-centos-source-ceph
-    parent: kolla-ansible-ceph-base
-    nodeset: kolla-ansible-centos-multi
-    timeout: 9000
-    vars:
-      base_distro: centos
-      install_type: source
-
 - job:
     name: kolla-ansible-centos-source-ceph-ansible
     parent: kolla-ansible-ceph-ansible-base
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index d351bb0478f2e0dd09a66e1853093fb93a308705..723d1911d40e87d6b7bca49ce88138ee7b3e5d0c 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -16,8 +16,6 @@
         - kolla-ansible-debian-source
         - kolla-ansible-ubuntu-source
         - kolla-ansible-ubuntu-source-multinode-ipv6
-        - kolla-ansible-ubuntu-source-ceph
-        - kolla-ansible-centos-source-ceph
         - kolla-ansible-bifrost-centos-source
         # FIXME(mgoddard): Bifrost CentOS 8 support in progress.
         # - kolla-ansible-centos8-source-bifrost
@@ -40,8 +38,6 @@
         - kolla-ansible-ubuntu-source-ironic
         - kolla-ansible-centos-source-upgrade
         - kolla-ansible-ubuntu-source-upgrade
-        - kolla-ansible-centos-source-upgrade-ceph
-        - kolla-ansible-ubuntu-source-upgrade-ceph
         - kolla-ansible-centos-binary
         - kolla-ansible-centos8-binary
         - kolla-ansible-ubuntu-binary
@@ -80,7 +76,5 @@
         - kolla-ansible-ubuntu-source-ironic
         - kolla-ansible-centos-source-upgrade
         - kolla-ansible-ubuntu-source-upgrade
-        - kolla-ansible-centos-source-upgrade-ceph
-        - kolla-ansible-ubuntu-source-upgrade-ceph
         - kolla-ansible-centos-source-mariadb
         - kolla-ansible-ubuntu-source-mariadb