Skip to content

Instantly share code, notes, and snippets.

@j0ju
Forked from chrigl/rook-shutdown.sh
Created January 18, 2021 11:13
Show Gist options
  • Save j0ju/05587c5a10b0a626ca55916bea987a17 to your computer and use it in GitHub Desktop.
Save j0ju/05587c5a10b0a626ca55916bea987a17 to your computer and use it in GitHub Desktop.
shutdown rook
#!/bin/bash
# This script shuts down a rook-ceph cluster
# Please DON'T use this. It is only for demonstration purposes.
set -eux -o pipefail
force=false
while getopts "f" arg; do
case $arg in
f)
force=true
;;
*)
echo "usage ..."
exit 1
;;
esac
done
if ! kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph health | grep -q HEALTH_OK; then
>&2 echo "ceph cluster not healthy"
if ! $force; then
exit 1
fi
>&2 echo "using the force to continue"
fi
# shutdown rook-ceph components
bye() {
local deployment
deployment="$1"
kubectl -n rook-ceph scale deploy -l "app=$deployment" --replicas=0
until [[ $(kubectl -n rook-ceph get pods -l "app=$deployment" -ogo-template='{{len .items}}') -eq 0 ]]; do
echo "waiting for app=$deployment to scale to 0"
sleep 5
done
}
echo "shutdown rook-ceph-operator"
kubectl -n rook-ceph scale deploy/rook-ceph-operator --replicas=0
until [[ $(kubectl -n rook-ceph get pods -l "app=rook-ceph-operator" -ogo-template='{{len .items}}') -eq 0 ]]; do
echo "waiting for deploy/rook-ceph-operator to scale to 0"
sleep 5
done
echo "disable ceph settings"
kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd set noout
kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd set nobackfill
kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd set norecover
echo "shutdown rook-ceph-mgr"
bye rook-ceph-mgr
echo "shutdown rook-ceph-osds"
bye rook-ceph-osd
until [[ $(kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd tree up | grep osd | wc -l) -eq 0 ]]; do
echo "waiting for osds to be down"
echo "you might need to run:"
echo " kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph osd down osd.X"
echo "to mark individual osds"
sleep 5
done
echo "shutdown rook-ceph-mon"
bye rook-ceph-mon
echo "To restart the cluster use"
echo " kubectl -n rook-ceph scale --replicas=1 deploy/rook-ceph-operator"
echo "remember to change out,backfill,recover when you are done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment