diff --git a/ansible/ceph-block-devices.yml b/ansible/ceph-block-devices.yml
deleted file mode 100644
index 88c3a4e19..000000000
--- a/ansible/ceph-block-devices.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-- name: Ensure Ceph disk are tagged
-  hosts: overcloud
-  tags:
-    - kolla-ceph
-  roles:
-    - role: kolla-ceph
-      when: kolla_enable_ceph | bool
diff --git a/ansible/group_vars/all/ceph b/ansible/group_vars/all/ceph
deleted file mode 100644
index cae8ff725..000000000
--- a/ansible/group_vars/all/ceph
+++ /dev/null
@@ -1,7 +0,0 @@
----
-###############################################################################
-# OpenStack Ceph configuration.
-
-# Ansible host pattern matching hosts on which Ceph storage services
-# are deployed. The default is to use hosts in the 'storage' group.
-ceph_hosts: "storage"
diff --git a/ansible/group_vars/all/compute b/ansible/group_vars/all/compute
index bd771c31c..244eac119 100644
--- a/ansible/group_vars/all/compute
+++ b/ansible/group_vars/all/compute
@@ -19,7 +19,6 @@ compute_default_network_interfaces: >
   {{ ([admin_oc_net_name,
        internal_net_name,
        storage_net_name,
-       ceph_storage_net_name,
        tunnel_net_name] +
       (external_net_names if kolla_enable_neutron_provider_networks | bool else [])) | reject('none') | unique | list }}
 
@@ -110,16 +109,6 @@ compute_lvm_group_data_lv_docker_volumes_size: 75%VG
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 compute_lvm_group_data_lv_docker_volumes_fs: ext4
 
-###############################################################################
-# Compute node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-compute_ceph_disks: []
-
 ###############################################################################
 # Compute node sysctl configuration.
 
diff --git a/ansible/group_vars/all/controllers b/ansible/group_vars/all/controllers
index 4cdb50685..d8d5e4d88 100644
--- a/ansible/group_vars/all/controllers
+++ b/ansible/group_vars/all/controllers
@@ -24,7 +24,6 @@ controller_default_network_interfaces: >
       inspection_net_name,
       internal_net_name,
       storage_net_name,
-      ceph_storage_net_name,
       swift_storage_net_name,
       cleaning_net_name] | reject('none') | unique | list }}
 
@@ -121,16 +120,6 @@ controller_lvm_group_data_lv_docker_volumes_size: 75%VG
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 controller_lvm_group_data_lv_docker_volumes_fs: ext4
 
-###############################################################################
-# Controller node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-controller_ceph_disks: []
-
 ###############################################################################
 # Controller node sysctl configuration.
 
diff --git a/ansible/group_vars/all/kolla b/ansible/group_vars/all/kolla
index 542f58664..97a898343 100644
--- a/ansible/group_vars/all/kolla
+++ b/ansible/group_vars/all/kolla
@@ -118,8 +118,6 @@ overcloud_container_image_regex_map:
     enabled: "{{ kolla_enable_blazar | bool }}"
   - regex: ceilometer
     enabled: "{{ kolla_enable_ceilometer | bool }}"
-  - regex: ceph
-    enabled: "{{ kolla_enable_ceph | bool }}"
   - regex: cinder
     enabled: "{{ kolla_enable_cinder | bool }}"
   - regex: cloudkitty
@@ -346,7 +344,6 @@ kolla_enable_aodh: "no"
 kolla_enable_barbican: "no"
 kolla_enable_blazar: "no"
 kolla_enable_central_logging: "no"
-kolla_enable_ceph: "no"
 kolla_enable_ceilometer: "no"
 # The chrony container is disabled by default on CentOS 7 because we enable an
 # NTP daemon on the host. On CentOS 8 the chrony container is enabled by
diff --git a/ansible/group_vars/all/network b/ansible/group_vars/all/network
index ce531a26c..86f1d497a 100644
--- a/ansible/group_vars/all/network
+++ b/ansible/group_vars/all/network
@@ -49,12 +49,6 @@ storage_net_name: 'storage_net'
 # Name of the network used to carry storage management traffic.
 storage_mgmt_net_name: 'storage_mgmt_net'
 
-# Name of the network used to carry ceph storage data traffic.
-ceph_storage_net_name: "{{ storage_net_name }}"
-
-# Name of the network used to carry ceph storage management traffic.
-ceph_storage_mgmt_net_name: "{{ storage_mgmt_net_name }}"
-
 # Name of the network used to carry swift storage data traffic.
 swift_storage_net_name: "{{ storage_net_name }}"
 
diff --git a/ansible/group_vars/all/storage b/ansible/group_vars/all/storage
index 3deb1f3b3..74b3339d0 100644
--- a/ansible/group_vars/all/storage
+++ b/ansible/group_vars/all/storage
@@ -13,10 +13,6 @@ storage_bootstrap_user: "{{ lookup('env', 'USER') }}"
 storage_network_interfaces: >
   {{ (storage_default_network_interfaces +
       storage_extra_network_interfaces +
-      ([ceph_storage_net_name]
-       if storage_needs_ceph_network else []) +
-      ([ceph_storage_mgmt_net_name]
-       if storage_needs_ceph_mgmt_network else []) +
       ([swift_storage_net_name]
        if storage_needs_swift_network else []) +
       ([swift_storage_replication_net_name]
@@ -32,15 +28,6 @@ storage_default_network_interfaces: >
 # List of extra networks to which storage nodes are attached.
 storage_extra_network_interfaces: []
 
-# Whether this host requires access to Ceph networks.
-storage_needs_ceph_network: >-
-  {{ kolla_enable_ceph | bool and
-     inventory_hostname in query('inventory_hostnames', ceph_hosts) }}
-
-storage_needs_ceph_mgmt_network: >-
-  {{ kolla_enable_ceph | bool and
-     inventory_hostname in query('inventory_hostnames', ceph_hosts) }}
-
 # Whether this host requires access to Swift networks.
 storage_needs_swift_network: >-
   {{ kolla_enable_swift | bool and
@@ -134,16 +121,6 @@ storage_lvm_group_data_lv_docker_volumes_size: 75%VG
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 storage_lvm_group_data_lv_docker_volumes_fs: ext4
 
-###############################################################################
-# Storage node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-storage_ceph_disks: []
-
 ###############################################################################
 # Storage node sysctl configuration.
 
diff --git a/ansible/group_vars/compute/ceph b/ansible/group_vars/compute/ceph
deleted file mode 100644
index 9f8e30b00..000000000
--- a/ansible/group_vars/compute/ceph
+++ /dev/null
@@ -1,6 +0,0 @@
----
-###############################################################################
-# Compute node Ceph configuration.
-
-# List of Ceph disks.
-ceph_disks: "{{ compute_ceph_disks }}"
diff --git a/ansible/group_vars/controllers/ceph b/ansible/group_vars/controllers/ceph
deleted file mode 100644
index d2c4eefdd..000000000
--- a/ansible/group_vars/controllers/ceph
+++ /dev/null
@@ -1,6 +0,0 @@
----
-###############################################################################
-# Controller node Ceph configuration.
-
-# List of Ceph disks.
-ceph_disks: "{{ controller_ceph_disks }}"
diff --git a/ansible/group_vars/storage/ceph b/ansible/group_vars/storage/ceph
deleted file mode 100644
index dca397fa9..000000000
--- a/ansible/group_vars/storage/ceph
+++ /dev/null
@@ -1,6 +0,0 @@
----
-###############################################################################
-# Storage node Ceph configuration.
-
-# List of Ceph disks.
-ceph_disks: "{{ storage_ceph_disks }}"
diff --git a/ansible/kolla-ansible.yml b/ansible/kolla-ansible.yml
index ef3ce3870..56927e653 100644
--- a/ansible/kolla-ansible.yml
+++ b/ansible/kolla-ansible.yml
@@ -33,16 +33,6 @@
         kolla_cluster_interface: "{{ storage_mgmt_net_name | net_interface | replace('-', '_')  }}"
       when: storage_mgmt_net_name in network_interfaces
 
-    - name: Set Ceph storage network interface
-      set_fact:
-        kolla_ceph_storage_interface: "{{ ceph_storage_net_name | net_interface | replace('-', '_')  }}"
-      when: ceph_storage_net_name in network_interfaces
-
-    - name: Set Ceph cluster network interface
-      set_fact:
-        kolla_ceph_cluster_interface: "{{ ceph_storage_mgmt_net_name | net_interface | replace('-', '_')  }}"
-      when: ceph_storage_mgmt_net_name in network_interfaces
-
     - name: Set Swift storage network interface
       set_fact:
         kolla_swift_storage_interface: "{{ swift_storage_net_name | net_interface | replace('-', '_')  }}"
diff --git a/ansible/kolla-openstack.yml b/ansible/kolla-openstack.yml
index c04c1d97d..4d2671217 100644
--- a/ansible/kolla-openstack.yml
+++ b/ansible/kolla-openstack.yml
@@ -106,7 +106,6 @@
           with_items:
             - { name: blazar, file: blazar.conf }
             - { name: ceilometer, file: ceilometer.conf }
-            - { name: ceph, file: ceph.conf }
             - { name: cinder, file: cinder.conf }
             - { name: cloudkitty, file: cloudkitty.conf }
             - { name: designate, file: designate.conf }
@@ -215,7 +214,6 @@
       # Extra free-form user-provided configuration.
       kolla_extra_blazar: "{{ kolla_extra_config.blazar | default }}"
       kolla_extra_ceilometer: "{{ kolla_extra_config.ceilometer | default }}"
-      kolla_extra_ceph: "{{ kolla_extra_config.ceph | default }}"
       kolla_extra_cinder: "{{ kolla_extra_config.cinder | default }}"
       kolla_extra_cloudkitty: "{{ kolla_extra_config.cloudkitty | default }}"
       kolla_extra_designate: "{{ kolla_extra_config.designate | default }}"
diff --git a/ansible/roles/kolla-ansible/defaults/main.yml b/ansible/roles/kolla-ansible/defaults/main.yml
index 206e2646d..13e1eb94d 100644
--- a/ansible/roles/kolla-ansible/defaults/main.yml
+++ b/ansible/roles/kolla-ansible/defaults/main.yml
@@ -120,8 +120,6 @@ kolla_overcloud_inventory_pass_through_host_vars:
   - "kolla_api_interface"
   - "kolla_storage_interface"
   - "kolla_cluster_interface"
-  - "kolla_ceph_storage_interface"
-  - "kolla_ceph_cluster_interface"
   - "kolla_swift_storage_interface"
   - "kolla_swift_replication_interface"
   - "kolla_provision_interface"
@@ -141,8 +139,6 @@ kolla_overcloud_inventory_pass_through_host_vars_map:
   kolla_api_interface: "api_interface"
   kolla_storage_interface: "storage_interface"
   kolla_cluster_interface: "cluster_interface"
-  kolla_ceph_storage_interface: "ceph_storage_interface"
-  kolla_ceph_cluster_interface: "ceph_cluster_interface"
   kolla_swift_storage_interface: "swift_storage_interface"
   kolla_swift_replication_interface: "swift_replication_interface"
   kolla_provision_interface: "provision_interface"
@@ -249,8 +245,6 @@ kolla_openstack_logging_debug:
 #kolla_enable_blazar:
 #kolla_enable_ceilometer:
 #kolla_enable_central_logging:
-#kolla_enable_ceph:
-#kolla_enable_ceph_rgw:
 #kolla_enable_cinder:
 #kolla_enable_cinder_backend_iscsi:
 #kolla_enable_cinder_backend_lvm:
diff --git a/ansible/roles/kolla-ansible/templates/overcloud-components.j2 b/ansible/roles/kolla-ansible/templates/overcloud-components.j2
index 212f9ed46..b03ac6cef 100644
--- a/ansible/roles/kolla-ansible/templates/overcloud-components.j2
+++ b/ansible/roles/kolla-ansible/templates/overcloud-components.j2
@@ -152,9 +152,6 @@ control
 [ironic:children]
 control
 
-[ceph:children]
-control
-
 [magnum:children]
 control
 
diff --git a/ansible/roles/kolla-ansible/templates/overcloud-services.j2 b/ansible/roles/kolla-ansible/templates/overcloud-services.j2
index 988f61288..334f9fdbd 100644
--- a/ansible/roles/kolla-ansible/templates/overcloud-services.j2
+++ b/ansible/roles/kolla-ansible/templates/overcloud-services.j2
@@ -89,25 +89,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/roles/kolla-ansible/tests/test-extras.yml b/ansible/roles/kolla-ansible/tests/test-extras.yml
index f3671e0d3..d33c42daf 100644
--- a/ansible/roles/kolla-ansible/tests/test-extras.yml
+++ b/ansible/roles/kolla-ansible/tests/test-extras.yml
@@ -26,8 +26,6 @@
         kolla_provision_interface: "eth8"
         kolla_inspector_dnsmasq_interface: "eth9"
         kolla_tunnel_interface: "eth10"
-        kolla_ceph_storage_interface: "eth11"
-        kolla_ceph_cluster_interface: "eth12"
         kolla_swift_storage_interface: "eth13"
         kolla_swift_replication_interface: "eth14"
 
@@ -42,7 +40,6 @@
         kolla_neutron_external_interfaces: "eth4,eth5"
         kolla_neutron_bridge_names: "br0,br1"
         kolla_tunnel_interface: "eth6"
-        kolla_ceph_storage_interface: "eth7"
 
     - name: Create a temporary directory
       tempfile:
@@ -129,8 +126,6 @@
             kolla_enable_blazar: True
             kolla_enable_ceilometer: True
             kolla_enable_central_logging: True
-            kolla_enable_ceph: True
-            kolla_enable_ceph_rgw: True
             kolla_enable_chrony: True
             kolla_enable_cinder: True
             kolla_enable_cinder_backend_hnas_iscsi: True
@@ -266,8 +261,6 @@
               #enable_blazar: True
               #enable_ceilometer: True
               #enable_central_logging: True
-              #enable_ceph: True
-              #enable_ceph_rgw: True
               #enable_chrony: True
               #enable_cinder: True
               #enable_cinder_backend_iscsi: True
@@ -355,8 +348,6 @@
               - kolla_external_vip_interface
               - storage_interface
               - cluster_interface
-              - ceph_storage_interface
-              - ceph_cluster_interface
               - swift_storage_interface
               - swift_replication_interface
               - provision_interface
@@ -494,8 +485,6 @@
                 api_interface: "eth2"
                 storage_interface: "eth3"
                 cluster_interface: "eth4"
-                ceph_storage_interface: "eth11"
-                ceph_cluster_interface: "eth12"
                 swift_storage_interface: "eth13"
                 swift_replication_interface: "eth14"
                 provision_interface: "eth8"
@@ -511,7 +500,6 @@
                 network_interface: "eth0"
                 api_interface: "eth2"
                 storage_interface: "eth3"
-                ceph_storage_interface: "eth7"
                 tunnel_interface: "eth6"
                 neutron_external_interface: "eth4,eth5"
                 neutron_bridge_name: "br0,br1"
diff --git a/ansible/roles/kolla-ansible/vars/main.yml b/ansible/roles/kolla-ansible/vars/main.yml
index 4bc14628d..aea6ed1b9 100644
--- a/ansible/roles/kolla-ansible/vars/main.yml
+++ b/ansible/roles/kolla-ansible/vars/main.yml
@@ -79,11 +79,6 @@ kolla_feature_flags:
   - ceilometer_ipmi
   - cells
   - central_logging
-  - ceph
-  - ceph_mds
-  - ceph_rgw
-  - ceph_nfs
-  - ceph_dashboard
   - chrony
   - cinder
   - cinder_backup
diff --git a/ansible/roles/kolla-ceph/defaults/main.yml b/ansible/roles/kolla-ceph/defaults/main.yml
deleted file mode 100644
index 83c5eee90..000000000
--- a/ansible/roles/kolla-ceph/defaults/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-
-# List of Ceph disks.
-ceph_disks: []
diff --git a/ansible/roles/kolla-ceph/tasks/config.yml b/ansible/roles/kolla-ceph/tasks/config.yml
deleted file mode 100644
index 9325c3818..000000000
--- a/ansible/roles/kolla-ceph/tasks/config.yml
+++ /dev/null
@@ -1,85 +0,0 @@
----
-
-- name: Ensure required packages are installed
-  package:
-    name: parted
-    state: present
-  become: True
-  when: ceph_disks | length > 0
-
-- name: Check the presence of a partition on the OSD disks
-  become: True
-  parted:
-    device: "{{ item.osd }}"
-  with_items: "{{ ceph_disks }}"
-  register: "disk_osd_info"
-
-- name: Check the presence of a partition on the journal disks
-  become: True
-  parted:
-    device: "{{ item.journal }}"
-  with_items: "{{ ceph_disks }}"
-  register: "disk_journal_info"
-  when:
-    - item.journal is defined
-
-- name: Fail if the Ceph OSD disks have already a partition
-  fail:
-    msg: >
-      The physical disk {{ item.item }} already has a partition.
-      Ensure that each disk in 'ceph_disks' does not have any partitions.
-  with_items: "{{ disk_osd_info.results }}"
-  when:
-    - item.partitions | length > 0
-    - not item.partitions.0.name.startswith('KOLLA_CEPH')
-  loop_control:
-    label: "{{item.item}}"
-
-- name: Fail if the Ceph journal disks have already a partition
-  fail:
-    msg: >
-      The physical disk {{ item.item }} already has a partition.
-      Ensure that each disk in 'ceph_disks' does not have any partitions.
-  with_items: "{{ disk_journal_info.results }}"
-  when:
-    - item is not skipped
-    - item.partitions | length > 0
-    - not item.partitions.0.name.startswith('KOLLA_CEPH')
-  loop_control:
-    label: "{{item.item}}"
-
-- name: Create tag partition for Ceph OSD
-  become: True
-  parted:
-    device: "{{ item.item.osd }}"
-    number: 1
-    label: gpt
-    name: "{{ part_label }}"
-    state: present
-  with_items: "{{ disk_osd_info.results }}"
-  when: item.partitions | length == 0
-  loop_control:
-    label: "{{item.item}}"
-  vars:
-      part_label: "{% if item.item.journal is defined %}{{ part_label_with_journal }}{% else %}KOLLA_CEPH_OSD_BOOTSTRAP{% endif %}"
-      part_label_with_journal: "KOLLA_CEPH_OSD_BOOTSTRAP_{{ (osd_id | hash('md5'))[:9] }}"
-      osd_id: "{{ item.item.osd | basename }}{{ ansible_hostname }}"
-
-- name: Create tag partition for Ceph external journal
-  become: True
-  parted:
-    device: "{{ item.item.journal }}"
-    number: 1
-    label: gpt
-    name: "{{ part_label }}"
-    state: present
-  with_items: "{{ disk_journal_info.results }}"
-  when:
-    - item is not skipped
-    - item.partitions | length == 0
-  loop_control:
-    label: "{{item.item}}"
-  vars:
-      part_label: "KOLLA_CEPH_OSD_BOOTSTRAP_{{ (osd_id | hash('md5'))[:9] }}_J"
-      osd_id: "{{ item.item.osd | basename }}{{ ansible_hostname }}"
-
diff --git a/ansible/roles/kolla-ceph/tasks/main.yml b/ansible/roles/kolla-ceph/tasks/main.yml
deleted file mode 100644
index 5739e64d0..000000000
--- a/ansible/roles/kolla-ceph/tasks/main.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-# NOTE: Use import_tasks here, since tags are not applied to tasks included via
-# include_tasks.
-- import_tasks: config.yml
-  tags:
-    - config
diff --git a/ansible/roles/kolla-ceph/tests/main.yml b/ansible/roles/kolla-ceph/tests/main.yml
deleted file mode 100644
index 49b8afae1..000000000
--- a/ansible/roles/kolla-ceph/tests/main.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-- import_playbook: test-no-journal.yml
-- import_playbook: test-journal.yml
-- import_playbook: test-bootstrapped-journal.yml
-- import_playbook: test-data-journal.yml
-
-- hosts: localhost
-  connection: local
-  tasks:
-    - name: Fail if any tests failed
-      fail:
-        msg: >
-          Test failures: {{ test_failures }}
-      when: test_failures is defined
diff --git a/ansible/roles/kolla-ceph/tests/test-bootstrapped-journal.yml b/ansible/roles/kolla-ceph/tests/test-bootstrapped-journal.yml
deleted file mode 100644
index 077dfa53a..000000000
--- a/ansible/roles/kolla-ceph/tests/test-bootstrapped-journal.yml
+++ /dev/null
@@ -1,114 +0,0 @@
----
-# Test case with an OSD and external journal that have already been tagged by
-# kayobe with the kolla-ansible bootstrap label, but have not yet been
-# converted to use the in-use label.
-
-- hosts: localhost
-  connection: local
-  tasks:
-    - name: Allocate a temporary file for a fake OSD
-      tempfile:
-      register: osd_tempfile
-
-    - name: Allocate a temporary file for a fake journal
-      tempfile:
-      register: journal_tempfile
-
-    - name: Allocate a fake OSD file
-      command: fallocate -l 10M {{ osd_tempfile.path }}
-
-    - name: Allocate a fake journal file
-      command: fallocate -l 10M {{ journal_tempfile.path }}
-
-    - name: Create tag partition for the fake OSD
-      become: True
-      parted:
-        device: "{{ osd_tempfile.path }}"
-        number: 1
-        label: gpt
-        name: "{{ part_label }}"
-        state: present
-      vars:
-        part_label: "KOLLA_CEPH_OSD_BOOTSTRAP_{{ (osd_id | hash('md5'))[:9] }}"
-        osd_id: "{{ osd_tempfile.path | basename }}{{ ansible_hostname }}"
-
-    - name: Create tag partition for the fake journal
-      become: True
-      parted:
-        device: "{{ journal_tempfile.path }}"
-        number: 1
-        label: gpt
-        name: "{{ part_label }}"
-        state: present
-      vars:
-        part_label: "KOLLA_CEPH_OSD_BOOTSTRAP_{{ (osd_id | hash('md5'))[:9] }}_J"
-        osd_id: "{{ osd_tempfile.path | basename }}{{ ansible_hostname }}"
-
-    - block:
-        - name: Test the kolla-ceph role
-          include_role:
-            name:  ../../kolla-ceph
-          vars:
-              ceph_disks:
-                 - osd: "{{ osd_tempfile.path }}"
-                   journal: "{{ journal_tempfile.path }}"
-
-        - name: Get name of fake OSD partition
-          parted:
-            device: "{{ osd_tempfile.path }}"
-          register: "disk_osd_info"
-          become: True
-
-        - name: Validate number of OSD partitions
-          assert:
-            that: disk_osd_info.partitions | length == 1
-            msg: >
-              Number of OSD partitions is not correct. Expected 1,
-              actual {{ disk_osd_info.partitions | length }}
-
-        - name: Validate OSD tag is present
-          assert:
-            that: "disk_osd_info.partitions.0.name == expected"
-            msg: >
-              Name of OSD partition is not correct. Expected {{ expected }},
-              actual {{ disk_osd_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_OSD_BOOTSTRAP_' ~ ((osd_tempfile.path | basename ~ ansible_hostname) | hash('md5'))[:9] }}"
-
-        - name: Get name of fake journal partition
-          parted:
-            device: "{{ journal_tempfile.path }}"
-          register: "disk_journal_info"
-          become: True
-
-        - name: Validate number of journal partitions
-          assert:
-            that: disk_journal_info.partitions | length == 1
-            msg: >
-              Number of journal partitions is not correct. Expected 1,
-              actual {{ disk_journal_info.partitions | length }}
-
-        - name: Validate journal tag is present
-          assert:
-            that: "disk_journal_info.partitions.0.name == expected"
-            msg: >
-              Name of journal partition is not correct. Expected {{ expected }},
-              actual {{ disk_journal_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_OSD_BOOTSTRAP_' ~ (( osd_tempfile.path | basename ~ ansible_hostname) | hash('md5'))[:9] ~ '_J' }}"
-
-      always:
-        - name: Remove the fake OSD file
-          file:
-            name: "{{ osd_tempfile.path }}"
-            state: absent
-
-        - name: Remove the fake journal file
-          file:
-            name: "{{ journal_tempfile.path }}"
-            state: absent
-
-      rescue:
-        - name: Flag that a failure occurred
-          set_fact:
-            test_failures: "{{ test_failures | default(0) | int + 1 }}"
diff --git a/ansible/roles/kolla-ceph/tests/test-data-journal.yml b/ansible/roles/kolla-ceph/tests/test-data-journal.yml
deleted file mode 100644
index 30b94caf0..000000000
--- a/ansible/roles/kolla-ceph/tests/test-data-journal.yml
+++ /dev/null
@@ -1,113 +0,0 @@
----
-# Test case with an OSD and external journal that have been converted by
-# kolla-ansible to use the in-use label.
-
-- hosts: localhost
-  connection: local
-  tasks:
-    - name: Allocate a temporary file for a fake OSD
-      tempfile:
-      register: osd_tempfile
-
-    - name: Allocate a temporary file for a fake journal
-      tempfile:
-      register: journal_tempfile
-
-    - name: Allocate a fake OSD file
-      command: fallocate -l 10M {{ osd_tempfile.path }}
-
-    - name: Allocate a fake journal file
-      command: fallocate -l 10M {{ journal_tempfile.path }}
-
-    - name: Create tag partition for the fake OSD
-      become: True
-      parted:
-        device: "{{ osd_tempfile.path }}"
-        number: 1
-        label: gpt
-        name: "{{ part_label }}"
-        state: present
-      vars:
-        part_label: "KOLLA_CEPH_DATA_{{ (osd_id | hash('md5'))[:9]}}"
-        osd_id: "{{ (osd_tempfile.path | basename ~ ansible_hostname) }}"
-
-    - name: Create tag partition for the fake journal
-      become: True
-      parted:
-        device: "{{ journal_tempfile.path }}"
-        number: 1
-        label: gpt
-        name: "{{ part_label }}"
-        state: present
-      vars:
-        part_label: "KOLLA_CEPH_DATA_{{ (osd_id | hash('md5'))[:9] }}_J"
-        osd_id: "{{ (osd_tempfile.path | basename ~ ansible_hostname) }}"
-
-    - block:
-        - name: Test the kolla-ceph role
-          include_role:
-            name:  ../../kolla-ceph
-          vars:
-              ceph_disks:
-                 - osd: "{{ osd_tempfile.path }}"
-                   journal: "{{ journal_tempfile.path }}"
-
-        - name: Get name of fake OSD partition
-          parted:
-            device: "{{ osd_tempfile.path }}"
-          register: "disk_osd_info"
-          become: True
-
-        - name: Validate number of OSD partitions
-          assert:
-            that: disk_osd_info.partitions | length == 1
-            msg: >
-              Number of OSD partitions is not correct. Expected 1,
-              actual {{ disk_osd_info.partitions | length }}
-
-        - name: Validate OSD tag is present
-          assert:
-            that: "disk_osd_info.partitions.0.name == expected"
-            msg: >
-              Name of OSD partition is not correct. Expected {{ expected }},
-              actual {{ disk_osd_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_DATA_' ~ ((osd_tempfile.path | basename ~ ansible_hostname)| hash('md5'))[:9] }}"
-
-        - name: Get name of fake journal partition
-          parted:
-            device: "{{ journal_tempfile.path }}"
-          register: "disk_journal_info"
-          become: True
-
-        - name: Validate number of journal partitions
-          assert:
-            that: disk_journal_info.partitions | length == 1
-            msg: >
-              Number of journal partitions is not correct. Expected 1,
-              actual {{ disk_journal_info.partitions | length }}
-
-        - name: Validate journal tag is present
-          assert:
-            that: "disk_journal_info.partitions.0.name == expected"
-            msg: >
-              Name of journal partition is not correct. Expected {{ expected }},
-              actual {{ disk_journal_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_DATA_' ~ ((osd_tempfile.path | basename ~ ansible_hostname)| hash('md5'))[:9] ~ '_J' }}"
-
-      always:
-        - name: Remove the fake OSD file
-          file:
-            name: "{{ osd_tempfile.path }}"
-            state: absent
-
-        - name: Remove the fake journal file
-          file:
-            name: "{{ journal_tempfile.path }}"
-            state: absent
-
-      rescue:
-        - name: Flag that a failure occurred
-          set_fact:
-            test_failures: "{{ test_failures | default(0) | int + 1 }}"
diff --git a/ansible/roles/kolla-ceph/tests/test-journal.yml b/ansible/roles/kolla-ceph/tests/test-journal.yml
deleted file mode 100644
index 8e568210e..000000000
--- a/ansible/roles/kolla-ceph/tests/test-journal.yml
+++ /dev/null
@@ -1,89 +0,0 @@
----
-# Test case with an OSD and external journal that have not yet been tagged by
-# kayobe with the kolla-ansible bootstrap label.
-
-- hosts: localhost
-  connection: local
-  tasks:
-    - name: Allocate a temporary file for a fake OSD
-      tempfile:
-      register: osd_tempfile
-
-    - name: Allocate a temporary file for a fake journal
-      tempfile:
-      register: journal_tempfile
-
-    - name: Allocate a fake OSD file
-      command: fallocate -l 10M {{ osd_tempfile.path }}
-
-    - name: Allocate a fake journal file
-      command: fallocate -l 10M {{ journal_tempfile.path }}
-
-    - block:
-        - name: Test the kolla-ceph role
-          include_role:
-            name:  ../../kolla-ceph
-          vars:
-              ceph_disks:
-                 - osd: "{{ osd_tempfile.path }}"
-                   journal: "{{ journal_tempfile.path }}"
-
-        - name: Get name of fake OSD partition
-          parted:
-            device: "{{ osd_tempfile.path }}"
-          register: "disk_osd_info"
-          become: True
-
-        - name: Validate number of OSD partitions
-          assert:
-            that: disk_osd_info.partitions | length == 1
-            msg: >
-              Number of OSD partitions is not correct. Expected 1,
-              actual {{ disk_osd_info.partitions | length }}
-
-        - name: Validate OSD tag is present
-          assert:
-            that: "disk_osd_info.partitions.0.name == expected"
-            msg: >
-              Name of OSD partition is not correct. Expected {{ expected }},
-              actual {{ disk_osd_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_OSD_BOOTSTRAP_' ~ ((osd_tempfile.path | basename ~ ansible_hostname)| hash('md5'))[:9] }}"
-
-        - name: Get name of fake journal partition
-          parted:
-            device: "{{ journal_tempfile.path }}"
-          register: "disk_journal_info"
-          become: True
-
-        - name: Validate number of journal partitions
-          assert:
-            that: disk_journal_info.partitions | length == 1
-            msg: >
-              Number of journal partitions is not correct. Expected 1,
-              actual {{ disk_journal_info.partitions | length }}
-
-        - name: Validate journal tag is present
-          assert:
-            that: "disk_journal_info.partitions.0.name == expected"
-            msg: >
-              Name of journal partition is not correct. Expected {{ expected }},
-              actual {{ disk_journal_info.partitions.0.name }}.
-          vars:
-            expected: "{{ 'KOLLA_CEPH_OSD_BOOTSTRAP_' ~ ((osd_tempfile.path | basename ~ ansible_hostname)| hash('md5'))[:9] ~ '_J' }}"
-
-      always:
-        - name: Remove the fake OSD file
-          file:
-            name: "{{ osd_tempfile.path }}"
-            state: absent
-
-        - name: Remove the fake journal file
-          file:
-            name: "{{ journal_tempfile.path }}"
-            state: absent
-
-      rescue:
-        - name: Flag that a failure occurred
-          set_fact:
-            test_failures: "{{ test_failures | default(0) | int + 1 }}"
diff --git a/ansible/roles/kolla-ceph/tests/test-no-journal.yml b/ansible/roles/kolla-ceph/tests/test-no-journal.yml
deleted file mode 100644
index ec164f4a1..000000000
--- a/ansible/roles/kolla-ceph/tests/test-no-journal.yml
+++ /dev/null
@@ -1,50 +0,0 @@
----
-# Test case with an OSD and no external journal that has not yet been tagged by
-# kayobe with the kolla-ansible bootstrap label.
-
-- hosts: localhost
-  connection: local
-  tasks:
-    - name: Allocate a temporary file for a fake OSD
-      tempfile:
-      register: tempfile
-
-    - name: Allocate a fake OSD file
-      command: fallocate -l 10M {{ tempfile.path }}
-
-    - block:
-        - name: Test the kolla-ceph role
-          include_role:
-            name:  ../../kolla-ceph
-          vars:
-              ceph_disks:
-                 - osd: "{{ tempfile.path }}"
-
-        - name: Get name of fake partition
-          parted:
-            device: "{{ tempfile.path }}"
-          register: "disk_osd_info"
-          become: True
-
-        - name: Validate number of partition
-          assert:
-            that: disk_osd_info.partitions | length == 1
-            msg: >
-              Number of partition is not correct.
-
-        - name: Validate OSD tag is present
-          assert:
-            that: "disk_osd_info.partitions.0.name == 'KOLLA_CEPH_OSD_BOOTSTRAP'"
-            msg: >
-              Name of partition is not correct.
-
-      always:
-        - name: Remove the fake OSD file
-          file:
-            name: "{{ tempfile.path }}"
-            state: absent
-
-      rescue:
-        - name: Flag that a failure occurred
-          set_fact:
-            test_failures: "{{ test_failures | default(0) | int + 1 }}"
diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml
index 7e14baf76..42d16bb6e 100644
--- a/ansible/roles/kolla-openstack/defaults/main.yml
+++ b/ansible/roles/kolla-openstack/defaults/main.yml
@@ -35,15 +35,6 @@ kolla_enable_ceilometer:
 # Free form extra configuration to append to ceilometer.conf.
 kolla_extra_ceilometer:
 
-###############################################################################
-# ceph configuration.
-
-# Whether to enable ceph.
-kolla_enable_ceph:
-
-# Free form extra configuration to append to ceph.conf.
-kolla_extra_ceph:
-
 ###############################################################################
 # cinder configuration.
 
diff --git a/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py b/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
index 113c35442..04233d0f3 100644
--- a/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
+++ b/ansible/roles/kolla-openstack/molecule/default/tests/test_default.py
@@ -37,8 +37,7 @@ def test_service_config_directory(host, path):
 
 @pytest.mark.parametrize(
     'path',
-    ['ceph',
-     'cinder',
+    ['cinder',
      'cloudkitty',
      'designate',
      'glance',
diff --git a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
index 7d90228b3..8560ac49f 100644
--- a/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
+++ b/ansible/roles/kolla-openstack/molecule/enable-everything/molecule.yml
@@ -22,10 +22,6 @@ provisioner:
         kolla_extra_ceilometer: |
           [extra-ceilometer.conf]
           foo=bar
-        kolla_enable_ceph: true
-        kolla_extra_ceph: |
-          [extra-ceph.conf]
-          foo=bar
         kolla_enable_cinder: true
         kolla_extra_cinder: |
           [extra-cinder.conf]
diff --git a/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py b/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
index 50c680ff8..649608c7b 100644
--- a/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
+++ b/ansible/roles/kolla-openstack/molecule/enable-everything/tests/test_default.py
@@ -27,8 +27,7 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
 
 @pytest.mark.parametrize(
     'path',
-    ['ceph',
-     'cinder',
+    ['cinder',
      'cloudkitty',
      'designate',
      'fluentd/filter',
@@ -61,8 +60,7 @@ def test_service_config_directory(host, path):
 
 @pytest.mark.parametrize(
     'path',
-    ['ceph.conf',
-     'cinder.conf',
+    ['cinder.conf',
      'cloudkitty.conf',
      'designate.conf',
      'galera.cnf',
diff --git a/ansible/roles/kolla-openstack/tasks/config.yml b/ansible/roles/kolla-openstack/tasks/config.yml
index bf931b7b8..60a9b6053 100644
--- a/ansible/roles/kolla-openstack/tasks/config.yml
+++ b/ansible/roles/kolla-openstack/tasks/config.yml
@@ -15,7 +15,6 @@
   with_items:
     - { src: blazar.conf.j2, dest: blazar.conf, enabled: "{{ kolla_enable_blazar }}" }
     - { src: ceilometer.conf.j2, dest: ceilometer.conf, enabled: "{{ kolla_enable_ceilometer }}" }
-    - { src: ceph.conf.j2, dest: ceph.conf, enabled: "{{ kolla_enable_ceph }}" }
     - { src: cinder.conf.j2, dest: cinder.conf, enabled: "{{ kolla_enable_cinder }}" }
     - { src: cloudkitty.conf.j2, dest: cloudkitty.conf, enabled: "{{ kolla_enable_cloudkitty }}" }
     - { src: designate.conf.j2, dest: designate.conf, enabled: "{{ kolla_enable_designate }}" }
diff --git a/ansible/roles/kolla-openstack/templates/ceph.conf.j2 b/ansible/roles/kolla-openstack/templates/ceph.conf.j2
deleted file mode 100644
index cb043a62d..000000000
--- a/ansible/roles/kolla-openstack/templates/ceph.conf.j2
+++ /dev/null
@@ -1,9 +0,0 @@
-# {{ ansible_managed }}
-
-{% if kolla_extra_ceph %}
-#######################
-# Extra configuration
-#######################
-
-{{ kolla_extra_ceph }}
-{% endif %}
diff --git a/ansible/roles/kolla-openstack/vars/main.yml b/ansible/roles/kolla-openstack/vars/main.yml
index 01549a092..07942f2d2 100644
--- a/ansible/roles/kolla-openstack/vars/main.yml
+++ b/ansible/roles/kolla-openstack/vars/main.yml
@@ -24,11 +24,6 @@ kolla_openstack_custom_config:
     dest: "{{ kolla_node_custom_config_path }}/ceilometer"
     patterns: "*"
     enabled: "{{ kolla_enable_ceilometer }}"
-  # Ceph.
-  - src: "{{ kolla_extra_config_path }}/ceph"
-    dest: "{{ kolla_node_custom_config_path }}/ceph"
-    patterns: "*"
-    enabled: "{{ kolla_enable_ceph }}"
   # Cinder.
   - src: "{{ kolla_extra_config_path }}/cinder"
     dest: "{{ kolla_node_custom_config_path }}/cinder"
diff --git a/doc/source/configuration/hosts.rst b/doc/source/configuration/hosts.rst
index a13d5bfb6..09523a0e2 100644
--- a/doc/source/configuration/hosts.rst
+++ b/doc/source/configuration/hosts.rst
@@ -674,32 +674,3 @@ Ansible's containers do), but may be necessary when building images.
 Docker's live restore feature can be configured via
 ``docker_daemon_live_restore``, although it is disabled by default due to
 issues observed.
-
-Ceph Block Devices
-==================
-*tags:*
-  | ``kolla-ceph``
-
-If using Kolla Ansible to deploy Ceph, some preparation of block devices is
-required. The list of disks to configure for use by Ceph is specified via
-``ceph_disks``. This is mapped to the following variables:
-
-* ``compute_ceph_disks``
-* ``controller_ceph_disks``
-* ``storage_ceph_disks``
-
-The format of the variable is a list of dict/mapping objects. Each mapping
-should contain an ``osd`` item that defines the full path to a block device to
-use for data. Optionally, each mapping may contain a ``journal`` item that
-specifies the full path to a block device to use for journal data.
-
-The following example defines two OSDs for use by controllers, one of which has
-a journal:
-
-.. code-block:: yaml
-   :caption: ``controller.yml``
-
-   controller_ceph_disks:
-     - osd: /dev/sdb
-     - osd: /dev/sdc
-       journal: /dev/sdd
diff --git a/doc/source/configuration/kolla-ansible.rst b/doc/source/configuration/kolla-ansible.rst
index c413243a2..6ac667c98 100644
--- a/doc/source/configuration/kolla-ansible.rst
+++ b/doc/source/configuration/kolla-ansible.rst
@@ -427,8 +427,6 @@ which files are supported.
    ``blazar/*``                    Extended Blazar configuration.
    ``ceilometer.conf``             Ceilometer configuration.
    ``ceilometer/*``                Extended Ceilometer configuration.
-   ``ceph.conf``                   Ceph configuration.
-   ``ceph/*``                      Extended Ceph configuration.
    ``cinder.conf``                 Cinder configuration.
    ``cinder/*``                    Extended Cinder configuration.
    ``cloudkitty.conf``             CloudKitty configuration.
diff --git a/doc/source/configuration/network.rst b/doc/source/configuration/network.rst
index 1d8f45c9d..847955cdc 100644
--- a/doc/source/configuration/network.rst
+++ b/doc/source/configuration/network.rst
@@ -506,12 +506,6 @@ Storage network (``storage_net_name``)
     Name of the network used to carry storage data traffic.
 Storage management network (``storage_mgmt_net_name``)
     Name of the network used to carry storage management traffic.
-Ceph storage network (``ceph_storage_net_name``)
-    Name of the network used to carry Ceph storage data traffic.
-    Defaults to the storage network (``storage_net_name``).
-Ceph storage management network (``ceph_storage_mgmt_net_name``)
-    Name of the network used to carry storage management traffic.
-    Defaults to the storage management network (``storage_mgmt_net_name``)
 Swift storage network (``swift_storage_net_name``)
     Name of the network used to carry Swift storage data traffic.
     Defaults to the storage network (``storage_net_name``).
@@ -544,8 +538,6 @@ To configure network roles in a system with two networks, ``example1`` and
    external_net_name: example2
    storage_net_name: example2
    storage_mgmt_net_name: example2
-   ceph_storage_net_name: example2
-   ceph_storage_mgmt_net_name: example2
    swift_storage_net_name: example2
    swift_replication_net_name: example2
    inspection_net_name: example2
@@ -789,8 +781,8 @@ By default, the storage hosts are attached to the following networks:
 * storage network
 * storage management network
 
-In addition, if Ceph or Swift is enabled, they can also be attached to the Ceph and Swift
-mangagment and replication networks.
+In addition, if Swift is enabled, they can also be attached to the Swift
+management and replication networks.
 
 Virtualised Compute Hosts
 -------------------------
diff --git a/doc/source/control-plane-service-placement.rst b/doc/source/control-plane-service-placement.rst
index 86cf8b26b..d3dd82208 100644
--- a/doc/source/control-plane-service-placement.rst
+++ b/doc/source/control-plane-service-placement.rst
@@ -59,7 +59,6 @@ hosts in the ``monitoring`` group.
    ``ansible_user``       Username with which to access the host via SSH.
    ``bootstrap_user``     Username with which to access the host before
                           ``ansible_user`` is configured.
-   ``ceph_disks``         List of Ceph disks.
    ``lvm_groups``         List of LVM volume groups to configure.  See
                           `mrlesmithjr.manage-lvm role
                           <https://galaxy.ansible.com/mrlesmithjr/manage-lvm/>`_
@@ -189,7 +188,6 @@ providing the necessary variables for a control plane host.
 
    ansible_user: "{{ kayobe_ansible_user }}"
    bootstrap_user: "{{ controller_bootstrap_user }}"
-   ceph_disks: "{{ controller_ceph_disks }}"
    lvm_groups: "{{ controller_lvm_groups }}"
    mdadm_arrays: "{{ controller_mdadm_arrays }}"
    network_interfaces: "{{ controller_network_host_network_interfaces }}"
diff --git a/etc/kayobe/ceph.yml b/etc/kayobe/ceph.yml
deleted file mode 100644
index b54faf3de..000000000
--- a/etc/kayobe/ceph.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-###############################################################################
-# OpenStack Ceph configuration.
-
-# Ansible host pattern matching hosts on which Ceph storage services
-# are deployed. The default is to use hosts in the 'storage' group.
-#ceph_hosts:
-
-###############################################################################
-# Dummy variable to allow Ansible to accept this file.
-workaround_ansible_issue_8743: yes
diff --git a/etc/kayobe/compute.yml b/etc/kayobe/compute.yml
index d66c4d56b..c744722a8 100644
--- a/etc/kayobe/compute.yml
+++ b/etc/kayobe/compute.yml
@@ -89,16 +89,6 @@
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 #compute_lvm_group_data_lv_docker_volumes_fs:
 
-###############################################################################
-# Compute node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-#compute_ceph_disks:
-
 ###############################################################################
 # Compute node sysctl configuration.
 
diff --git a/etc/kayobe/controllers.yml b/etc/kayobe/controllers.yml
index 3b617b777..c0dfbcda8 100644
--- a/etc/kayobe/controllers.yml
+++ b/etc/kayobe/controllers.yml
@@ -92,16 +92,6 @@
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 #controller_lvm_group_data_lv_docker_volumes_fs:
 
-###############################################################################
-# Controller node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-#controller_ceph_disks:
-
 ###############################################################################
 # Controller node sysctl configuration.
 
diff --git a/etc/kayobe/inventory/group_vars/compute/network-interfaces b/etc/kayobe/inventory/group_vars/compute/network-interfaces
index 1aab473f4..421f69d39 100644
--- a/etc/kayobe/inventory/group_vars/compute/network-interfaces
+++ b/etc/kayobe/inventory/group_vars/compute/network-interfaces
@@ -22,11 +22,6 @@
 # storage_net_bridge_ports:
 # storage_net_bond_slaves:
 
-# Ceph storage network IP information.
-# ceph_storage_net_interface:
-# ceph_storage_net_bridge_ports:
-# ceph_storage_net_bond_slaves:
-
 ###############################################################################
 # Dummy variable to allow Ansible to accept this file.
 workaround_ansible_issue_8743: yes
diff --git a/etc/kayobe/inventory/group_vars/controllers/network-interfaces b/etc/kayobe/inventory/group_vars/controllers/network-interfaces
index 902023cfb..f017f602e 100644
--- a/etc/kayobe/inventory/group_vars/controllers/network-interfaces
+++ b/etc/kayobe/inventory/group_vars/controllers/network-interfaces
@@ -27,11 +27,6 @@
 # storage_net_bridge_ports:
 # storage_net_bond_slaves:
 
-# Storage network IP information.
-# ceph_storage_net_interface:
-# ceph_storage_net_bridge_ports:
-# ceph_storage_net_bond_slaves:
-
 # Storage management network IP information.
 # swift_storage_net_interface:
 # swift_storage_net_bridge_ports:
diff --git a/etc/kayobe/inventory/group_vars/storage/network-interfaces b/etc/kayobe/inventory/group_vars/storage/network-interfaces
index 22654ef7c..0b0dd5ae4 100644
--- a/etc/kayobe/inventory/group_vars/storage/network-interfaces
+++ b/etc/kayobe/inventory/group_vars/storage/network-interfaces
@@ -22,16 +22,6 @@
 # storage_mgmt_net_bridge_ports:
 # storage_mgmt_net_bond_slaves:
 
-# Ceph storage network IP information.
-# ceph_storage_net_interface:
-# ceph_storage_net_bridge_ports:
-# ceph_storage_net_bond_slaves:
-
-# Ceph storage management network IP information.
-# ceph_storage_mgmt_net_interface:
-# ceph_storage_mgmt_net_bridge_ports:
-# ceph_storage_mgmt_net_bond_slaves:
-
 # Swift storage network IP information.
 # swift_storage_net_interface:
 # swift_storage_net_bridge_ports:
diff --git a/etc/kayobe/kolla.yml b/etc/kayobe/kolla.yml
index 3c4575247..60ab7e4c4 100644
--- a/etc/kayobe/kolla.yml
+++ b/etc/kayobe/kolla.yml
@@ -181,10 +181,6 @@
 #kolla_enable_cadf_notifications:
 #kolla_enable_ceilometer:
 #kolla_enable_central_logging:
-#kolla_enable_ceph:
-#kolla_enable_ceph_mds:
-#kolla_enable_ceph_nfs:
-#kolla_enable_ceph_rgw:
 # The chrony container is disabled by default on CentOS 7 because we enable an
 # NTP daemon on the host. On CentOS 8 the chrony container is enabled by
 # default because the NTP daemon is not supported. Setting this to true will
diff --git a/etc/kayobe/networks.yml b/etc/kayobe/networks.yml
index b3a27ebc1..eabe52eb3 100644
--- a/etc/kayobe/networks.yml
+++ b/etc/kayobe/networks.yml
@@ -45,12 +45,6 @@
 # Name of the network used to carry storage management traffic.
 #storage_mgmt_net_name:
 
-# Name of the network used to carry ceph storage data traffic.
-#ceph_storage_net_name:
-
-# Name of the network used to carry ceph storage management traffic.
-#ceph_storage_mgmt_net_name:
-
 # Name of the network used to carry swift storage data traffic.
 #swift_storage_net_name:
 
diff --git a/etc/kayobe/storage.yml b/etc/kayobe/storage.yml
index 18e522fd0..bd7a0d681 100644
--- a/etc/kayobe/storage.yml
+++ b/etc/kayobe/storage.yml
@@ -18,11 +18,6 @@
 # List of extra networks to which storage nodes are attached.
 #storage_extra_network_interfaces:
 
-# Whether this host requires access to Ceph networks.
-#storage_needs_ceph_network:
-
-#storage_needs_ceph_mgmt_network:
-
 # Whether this host requires access to Swift networks.
 #storage_needs_swift_network:
 
@@ -99,16 +94,6 @@
 # Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking.
 #storage_lvm_group_data_lv_docker_volumes_fs:
 
-###############################################################################
-# Storage node Ceph configuration.
-
-# List of Ceph disks.
-# The format is a list of dict like :
-# - { osd: "/dev/sdb", journal: "/dev/sdc" }
-# - { osd: "/dev/sdd" }
-# Journal variable is not mandatory.
-#storage_ceph_disks:
-
 ###############################################################################
 # Storage node sysctl configuration.
 
diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py
index 1c525e489..b1306950d 100644
--- a/kayobe/cli/commands.py
+++ b/kayobe/cli/commands.py
@@ -977,7 +977,7 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
         # Further kayobe playbooks.
         playbooks = _build_playbook_list(
             "pip", "kolla-target-venv", "kolla-host",
-            "docker", "ceph-block-devices", "swift-block-devices")
+            "docker", "swift-block-devices")
         self.run_kayobe_playbooks(parsed_args, playbooks,
                                   extra_vars=extra_vars, limit="overcloud")
 
diff --git a/kayobe/tests/unit/cli/test_commands.py b/kayobe/tests/unit/cli/test_commands.py
index 6129aec84..748a568b2 100644
--- a/kayobe/tests/unit/cli/test_commands.py
+++ b/kayobe/tests/unit/cli/test_commands.py
@@ -1156,8 +1156,6 @@ class TestCase(unittest.TestCase):
                         "ansible", "kolla-target-venv.yml"),
                     utils.get_data_files_path("ansible", "kolla-host.yml"),
                     utils.get_data_files_path("ansible", "docker.yml"),
-                    utils.get_data_files_path(
-                        "ansible", "ceph-block-devices.yml"),
                     utils.get_data_files_path(
                         "ansible", "swift-block-devices.yml"),
                 ],
diff --git a/releasenotes/notes/drop-kolla-ceph-deployment-47095b032085e8f3.yaml b/releasenotes/notes/drop-kolla-ceph-deployment-47095b032085e8f3.yaml
new file mode 100644
index 000000000..d8d845d9f
--- /dev/null
+++ b/releasenotes/notes/drop-kolla-ceph-deployment-47095b032085e8f3.yaml
@@ -0,0 +1,8 @@
+---
+upgrade:
+  - |
+    Drops support for Kolla Ceph deployment.
+    Kayobe follows upstream decision of Kolla and Kolla Ansible.
+    Please use other means of Ceph deployment.
+    Please note Ceph backends will still work if using external Ceph
+    cluster.