Separate Ceph from existing Director-based deployment

Deploying Ceph with OpenStack Platform Director is very convenient, but there are times when it’s simplicity isn’t enough for more advanced installations.  Fortunately, it is possible to decouple the Ceph installation from the OpenStack control plane and Director management which I will detail below.

  1. Deploy OSP to include at least 1 controller, compute and Ceph storage node
  2. Deploy at least one new server to take over Ceph monitor role
  3. Enable new Ceph monitor
  4. Disable existing Ceph Monitor role from OSP Controllers
  5. Set Ceph storage nodes to maintenance in Ironic
  6. Delete Ceph storage nodes from ironic
  7. re-run openstack overcloud deploy pointing to external ceph yaml and setting ceph scale out = 0

Initial OSP Deploy script:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
--ntp-server 192.168.1.250 \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/templates/network-environment.yaml \
-e /home/stack/templates/storage-environment.yaml \
--control-flavor control \
--compute-flavor compute \
--ceph-storage-flavor ceph-storage \
--control-scale 3 \
--compute-scale 1 \
--ceph-storage-scale 3

Once deployed, I run an openstack overcloud update stack to ensure Overcloud is updated to the latest RPMs within it’s Major version (i.e. If deploying OSP 8, update to the latest RPMs available to OSP 8)

OSP Update Script
This will update existing OSP deploy to the latest RPMs

1
2
3
4
5
6
7
#!/bin/bash
openstack overcloud update stack overcloud -i \
--templates \
-e /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/templates/network-environment.yaml \
-e /home/stack/templates/storage-environment.yaml

Deploy a new server(s) to take over Ceph monitor role from OSP Controllers.
I used Director to deploy a baremetal server with the default baremetal Nova flavor using the following command:

1
2
ctrlplane_net=$(neutron net-list | grep ctrl | awk '{print $2;}')
openstack server create cloudbox4 --flavor=baremetal --nic net-id=$ctrlplane_net --image=overcloud-full --key-name=default

New OSP Deploy script (removing storage-environment.yaml and including puppet-ceph-external.yaml and setting ceph-storage-scale 0)

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash
openstack overcloud deploy --templates \
--ntp-server 192.168.1.250 \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/templates/network-environment.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml \
-e /home/stack/templates/ceph-external.yaml \
--control-flavor control \
--compute-flavor compute \
--ceph-storage-flavor ceph-storage \
--control-scale 3 \
--compute-scale 1 \
--ceph-storage-scale 0

New OSP Update script

1
2
3
4
5
6
7
8
#!/bin/bash
openstack overcloud update stack overcloud -i \
--templates \
-e /usr/share/openstack-tripleo-heat-templates/overcloud-resource-registry-puppet.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /home/stack/templates/network-environment.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/puppet-ceph-external.yaml \
-e /home/stack/templates/ceph-external.yaml

Leave a Reply

Your email address will not be published. Required fields are marked *