From: Sage Weil Date: Thu, 28 Feb 2013 21:45:04 +0000 (-0800) Subject: init-ceph: kick off ceph-create-keys when starting mons X-Git-Tag: v0.59~62 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ffc0ff68e017747bbb1459520a0908ec75f32931;p=ceph.git init-ceph: kick off ceph-create-keys when starting mons We don't have a particularly tidy way to kick off ceph-create-keys from sysvinit. So, do something simple, ugly, and functional: if we are starting a mon, and it looks like a 'new' type that is in /var/lib/ceph, then start ceph-create-keys too. Signed-off-by: Sage Weil Reviewed-by: Gary Lowell Reviewed-by: Greg Farnum --- diff --git a/src/Makefile.am b/src/Makefile.am index 9daf3f22182e..77deefece50f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1049,6 +1049,7 @@ bin_DEBUGPROGRAMS += ceph_test_cfuse_cache_invalidate # shell scripts editpaths = sed \ -e 's|@bindir[@]|$(bindir)|g' \ + -e 's|@sbindir[@]|$(sbindir)|g' \ -e 's|@libdir[@]|$(libdir)|g' \ -e 's|@sysconfdir[@]|$(sysconfdir)|g' \ -e 's|@datadir[@]|$(pkgdatadir)|g' \ diff --git a/src/init-ceph.in b/src/init-ceph.in index 30727e5aa76e..8f2bfb8f43f6 100644 --- a/src/init-ceph.in +++ b/src/init-ceph.in @@ -18,10 +18,12 @@ RUN_DIR=/var/run/ceph # current directory too. if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then BINDIR=. + SBINDIR=. LIBDIR=. ETCDIR=. else BINDIR=@bindir@ + SBINDIR=@prefix@/sbin LIBDIR=@libdir@/ceph ETCDIR=@sysconfdir@/ceph fi @@ -315,6 +317,24 @@ for name in $what; do get_conf post_start "" "post start command" [ -n "$pre_start" ] && do_cmd "$pre_start" do_cmd "$cmd" $runarg + + if [ "$type" = "mon" ]; then + # this will only work if we are using default paths + # for the mon data and admin socket. if so, run + # ceph-create-keys. this is the case for (normal) + # chef and ceph-deploy clusters, which is who needs + # these keys. it's also true for default installs + # via mkcephfs, which is fine too; there is no harm + # in creating these keys. + get_conf mon_data "/var/lib/ceph/mon/ceph-$id" "mon data" + get_conf asok "/var/run/ceph-$type.$id.asok" "admin socket" + if [ "$mon_data" = "/var/lib/ceph/mon/ceph-$id" -a "$asok" = "/var/run/ceph/ceph-mon.$id.asok" ]; then + echo Starting ceph-create-keys on $host... + cmd2="$SBINDIR/ceph-create-keys -i $id 2> /dev/null &" + do_cmd "$cmd2" + fi + fi + [ -n "$post_start" ] && do_cmd "$post_start" [ -n "$lockfile" ] && [ "$?" -eq 0 ] && touch $lockfile ;;