Project

General

Profile

Bug #9073 » deploy.sh

Mark Kirkwood, 08/14/2014 03:04 AM

 
#!/bin/bash
# Simple script to deploy a mon + osd for testing/debugging
# (based to some extent on a script by Loic Dachary mentioned here:
# http://dachary.org/?p=2374)
#
set -e
set -u

ACTION=${1-'all'}

MONIP=192.168.1.64
MONHOST=zmori
CEPH_DIR=/var/lib/ceph
CEPH_ETC=/etc/ceph
OSD_DATAPATH=/data1/cephdata
OSD_JOURNALPATH=/dev/sdc1

conf_create() {
echo "write conf file"
cat >> ${CEPH_ETC}/ceph.conf <<EOF
[global]
fsid = $(uuidgen)
mon_initial_members = ${MONHOST}
mon_host = ${MONIP}
auth cluster required = none
auth service required = none
auth client required = none
filestore_xattr_use_omap = true
osd pool default size = 1
[osd]
debug filestore = 20
debug osd = 20
debug journal = 20
debug monc = 20
EOF
}


mon_create() {
echo "create the mon ${MONHOST}"
ceph-mon --id ${MONHOST} --mkfs --keyring /dev/null
start ceph-mon id=${MONHOST}
sleep 5
ceph -s
}


osd_create() {
echo "create a single osd on ${MONHOST}"
OSD_ID=$(ceph osd create)
echo "osd has id ${OSD_ID}, add to crushmap"
ceph osd crush add osd.${OSD_ID} 1 root=default host=${MONHOST}

echo "make osd filesystem"
ceph-osd --id ${OSD_ID} --mkjournal --mkfs --osd-data ${OSD_DATAPATH} --osd-journal ${OSD_JOURNALPATH}
echo "making links for journal and osd data"
ln -s ${OSD_JOURNALPATH} ${OSD_DATAPATH}/journal
ln -s ${OSD_DATAPATH} ${CEPH_DIR}/osd/ceph-${OSD_ID}

echo "start osd ${OSD_ID}"
start ceph-osd id=${OSD_ID}
sleep 5
ceph -s
}


clean() {
echo "stopping ceph (may fail)"
set +e
stop ceph-osd id=0
stop ceph-mon id=$MONHOST
stop ceph-all
set -e

echo "removing ceph files"
rm -f /etc/ceph/* /var/log/ceph/*
rm -rf /var/lib/ceph/* /data?/cephdata/*

echo "creating empty directories"
cd /var/lib/ceph; sudo mkdir bootstrap-mds bootstrap-osd mds mon osd tmp; cd -
}


# main entry

if [ $USER != 'root' ]; then
echo "Must be root to run this"
exit 1
fi

case ${ACTION} in
"conf") conf_create;;
"mon") mon_create;;
"osd") osd_create;;
"clean") clean;;
"all") clean
conf_create
mon_create
osd_create
;;
esac
(10-10/17)