98d436eb94
This moves the set of ceph entrypoint scripts into the helm chart this allows us to control how the different pods start. Also gives each script the +x flag to give better insight as to the execution of entrypoint scripts. Change-Id: Ib78b8a5d57f653bdb399a1980b34ab5ea25f94cc
75 lines
3.0 KiB
Smarty
75 lines
3.0 KiB
Smarty
#!/bin/bash
|
|
set -ex
|
|
|
|
function osd_disk_prepare {
|
|
if [[ -z "${OSD_DEVICE}" ]];then
|
|
log "ERROR- You must provide a device to build your OSD ie: /dev/sdb"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -e "${OSD_DEVICE}" ]]; then
|
|
log "ERROR- The device pointed by OSD_DEVICE ($OSD_DEVICE) doesn't exist !"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e $OSD_BOOTSTRAP_KEYRING ]; then
|
|
log "ERROR- $OSD_BOOTSTRAP_KEYRING must exist. You can extract it from your current monitor by running 'ceph auth get client.bootstrap-osd -o $OSD_BOOTSTRAP_KEYRING'"
|
|
exit 1
|
|
fi
|
|
timeout 10 ceph ${CLI_OPTS} --name client.bootstrap-osd --keyring $OSD_BOOTSTRAP_KEYRING health || exit 1
|
|
|
|
# check device status first
|
|
if ! parted --script ${OSD_DEVICE} print > /dev/null 2>&1; then
|
|
if [[ ${OSD_FORCE_ZAP} -eq 1 ]]; then
|
|
log "It looks like ${OSD_DEVICE} isn't consistent, however OSD_FORCE_ZAP is enabled so we are zapping the device anyway"
|
|
ceph-disk -v zap ${OSD_DEVICE}
|
|
else
|
|
log "Regarding parted, device ${OSD_DEVICE} is inconsistent/broken/weird."
|
|
log "It would be too dangerous to destroy it without any notification."
|
|
log "Please set OSD_FORCE_ZAP to '1' if you really want to zap this disk."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# then search for some ceph metadata on the disk
|
|
if [[ "$(parted --script ${OSD_DEVICE} print | egrep '^ 1.*ceph data')" ]]; then
|
|
if [[ ${OSD_FORCE_ZAP} -eq 1 ]]; then
|
|
log "It looks like ${OSD_DEVICE} is an OSD, however OSD_FORCE_ZAP is enabled so we are zapping the device anyway"
|
|
ceph-disk -v zap ${OSD_DEVICE}
|
|
else
|
|
log "INFO- It looks like ${OSD_DEVICE} is an OSD, set OSD_FORCE_ZAP=1 to use this device anyway and zap its content"
|
|
log "You can also use the zap_device scenario on the appropriate device to zap it"
|
|
log "Moving on, trying to activate the OSD now."
|
|
return
|
|
fi
|
|
fi
|
|
|
|
if [[ ${OSD_BLUESTORE} -eq 1 ]]; then
|
|
ceph-disk -v prepare ${CLI_OPTS} --bluestore ${OSD_DEVICE}
|
|
elif [[ ${OSD_DMCRYPT} -eq 1 ]]; then
|
|
get_admin_key
|
|
check_admin_key
|
|
# the admin key must be present on the node
|
|
# in order to store the encrypted key in the monitor's k/v store
|
|
ceph-disk -v prepare ${CLI_OPTS} --journal-uuid ${OSD_JOURNAL_UUID} --lockbox-uuid ${OSD_LOCKBOX_UUID} --dmcrypt ${OSD_DEVICE} ${OSD_JOURNAL}
|
|
echo "Unmounting LOCKBOX directory"
|
|
# NOTE(leseb): adding || true so when this bug will be fixed the entrypoint will not fail
|
|
# Ceph bug tracker: http://tracker.ceph.com/issues/18944
|
|
DATA_UUID=$(blkid -o value -s PARTUUID ${OSD_DEVICE}1)
|
|
umount /var/lib/ceph/osd-lockbox/${DATA_UUID} || true
|
|
else
|
|
ceph-disk -v prepare ${CLI_OPTS} --journal-uuid ${OSD_JOURNAL_UUID} ${OSD_DEVICE} ${OSD_JOURNAL}
|
|
fi
|
|
|
|
# watch the udev event queue, and exit if all current events are handled
|
|
udevadm settle --timeout=600
|
|
|
|
if [[ -n "${OSD_JOURNAL}" ]]; then
|
|
wait_for_file ${OSD_JOURNAL}
|
|
chown ceph. ${OSD_JOURNAL}
|
|
else
|
|
wait_for_file $(dev_part ${OSD_DEVICE} 2)
|
|
chown ceph. $(dev_part ${OSD_DEVICE} 2)
|
|
fi
|
|
}
|