This change moves the ceph-mgr deployment from the ceph-client chart to the ceph-mon chart. Its purpose is to facilitate the proper Ceph upgrade procedure, which prescribes restarting mgr daemons before mon daemons. There will be additional work required to implement the correct daemon restart procedure for upgrades. This change only addresses the move of the ceph-mgr deployment. Change-Id: I3ac4a75f776760425c88a0ba1edae5fb339f128d
80 lines
2.6 KiB
Smarty
80 lines
2.6 KiB
Smarty
#!/bin/bash
|
|
set -ex
|
|
: "${CEPH_GET_ADMIN_KEY:=0}"
|
|
: "${MGR_NAME:=$(uname -n)}"
|
|
: "${MGR_KEYRING:=/var/lib/ceph/mgr/${CLUSTER}-${MGR_NAME}/keyring}"
|
|
: "${ADMIN_KEYRING:=/etc/ceph/${CLUSTER}.client.admin.keyring}"
|
|
: "${CEPH_CONF:="/etc/ceph/${CLUSTER}.conf"}"
|
|
|
|
{{ include "ceph-mon.snippets.mon_host_from_k8s_ep" . }}
|
|
|
|
if [[ ! -e ${CEPH_CONF}.template ]]; then
|
|
echo "ERROR- ${CEPH_CONF}.template must exist; get it from your existing mon"
|
|
exit 1
|
|
else
|
|
ENDPOINT=$(mon_host_from_k8s_ep "${NAMESPACE}" ceph-mon-discovery)
|
|
if [[ "${ENDPOINT}" == "" ]]; then
|
|
/bin/sh -c -e "cat ${CEPH_CONF}.template | tee ${CEPH_CONF}" || true
|
|
else
|
|
/bin/sh -c -e "cat ${CEPH_CONF}.template | sed 's#mon_host.*#mon_host = ${ENDPOINT}#g' | tee ${CEPH_CONF}" || true
|
|
fi
|
|
fi
|
|
|
|
if [ ${CEPH_GET_ADMIN_KEY} -eq 1 ]; then
|
|
if [[ ! -e ${ADMIN_KEYRING} ]]; then
|
|
echo "ERROR- ${ADMIN_KEYRING} must exist; get it from your existing mon"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Create a MGR keyring
|
|
rm -rf $MGR_KEYRING
|
|
if [ ! -e "$MGR_KEYRING" ]; then
|
|
# Create ceph-mgr key
|
|
timeout 10 ceph --cluster "${CLUSTER}" auth get-or-create mgr."${MGR_NAME}" mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o "$MGR_KEYRING"
|
|
chown --verbose ceph. "$MGR_KEYRING"
|
|
chmod 600 "$MGR_KEYRING"
|
|
fi
|
|
|
|
echo "SUCCESS"
|
|
|
|
ceph --cluster "${CLUSTER}" -v
|
|
|
|
# Env. variables matching the pattern "<module>_" will be
|
|
# found and parsed for config-key settings by
|
|
# ceph config set mgr mgr/<module>/<key> <value>
|
|
MODULES_TO_DISABLE=`ceph mgr dump | python3 -c "import json, sys; print(' '.join(json.load(sys.stdin)['modules']))"`
|
|
|
|
for module in ${ENABLED_MODULES}; do
|
|
# This module may have been enabled in the past
|
|
# remove it from the disable list if present
|
|
MODULES_TO_DISABLE=${MODULES_TO_DISABLE/$module/}
|
|
|
|
options=`env | grep ^${module}_ || true`
|
|
for option in ${options}; do
|
|
#strip module name
|
|
option=${option/${module}_/}
|
|
key=`echo $option | cut -d= -f1`
|
|
value=`echo $option | cut -d= -f2`
|
|
if [[ $(ceph mon versions | awk '/version/{print $3}' | cut -d. -f1) -ge 14 ]]; then
|
|
ceph --cluster "${CLUSTER}" config set mgr mgr/$module/$key $value --force
|
|
else
|
|
ceph --cluster "${CLUSTER}" config set mgr mgr/$module/$key $value
|
|
fi
|
|
done
|
|
ceph --cluster "${CLUSTER}" mgr module enable ${module} --force
|
|
done
|
|
|
|
for module in $MODULES_TO_DISABLE; do
|
|
ceph --cluster "${CLUSTER}" mgr module disable ${module}
|
|
done
|
|
|
|
echo "SUCCESS"
|
|
# start ceph-mgr
|
|
exec /usr/bin/ceph-mgr \
|
|
--cluster "${CLUSTER}" \
|
|
--setuser "ceph" \
|
|
--setgroup "ceph" \
|
|
-d \
|
|
-i "${MGR_NAME}"
|