]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: store osd cephx key in "osd_key" meta slot
authorSage Weil <sage@redhat.com>
Wed, 11 Oct 2017 21:32:16 +0000 (16:32 -0500)
committerSage Weil <sage@redhat.com>
Thu, 19 Oct 2017 13:21:47 +0000 (08:21 -0500)
Note that this *only* works with --mkkey (deprecated except for
vstart.sh) and --key <key>.  If you write out a full keyring before
running --mkfs it doesn't get populated.  Users should pass --key
instead of --keyring in that case.

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 65b707358e5442eab0fd6ba4d05d9f0a7adc969f)

src/osd/OSD.cc
src/osd/OSD.h
src/vstart.sh

index 01f691ee3b888ca03166680b63d6b8b1b9da69bc..c586afccefda2c06273b1aec224188605d45bdd0 100644 (file)
@@ -1789,7 +1789,7 @@ int OSD::mkfs(CephContext *cct, ObjectStore *store, const string &dev,
     waiter.wait();
   }
 
-  ret = write_meta(store, sb.cluster_fsid, sb.osd_fsid, whoami);
+  ret = write_meta(cct, store, sb.cluster_fsid, sb.osd_fsid, whoami);
   if (ret) {
     derr << "OSD::mkfs: failed to write fsid file: error "
          << cpp_strerror(ret) << dendl;
@@ -1803,7 +1803,7 @@ free_store:
   return ret;
 }
 
-int OSD::write_meta(ObjectStore *store, uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami)
+int OSD::write_meta(CephContext *cct, ObjectStore *store, uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami)
 {
   char val[80];
   int r;
@@ -1823,6 +1823,14 @@ int OSD::write_meta(ObjectStore *store, uuid_d& cluster_fsid, uuid_d& osd_fsid,
   if (r < 0)
     return r;
 
+  string key = cct->_conf->get_val<string>("key");
+  lderr(cct) << "key " << key << dendl;
+  if (key.size()) {
+    r = store->write_meta("osd_key", key);
+    if (r < 0)
+      return r;
+  }
+
   r = store->write_meta("ready", "ready");
   if (r < 0)
     return r;
index 42a152b3c9adc6aca9fc27ef89cab5ee20edde84..8e3967cc28ea8c9c541d33ccf67e43b636b51bb7 100644 (file)
@@ -2407,7 +2407,8 @@ private:
   int update_crush_device_class();
   int update_crush_location();
 
-  static int write_meta(ObjectStore *store,
+  static int write_meta(CephContext *cct,
+                       ObjectStore *store,
                        uuid_d& cluster_fsid, uuid_d& osd_fsid, int whoami);
 
   void handle_pg_scrub(struct MOSDScrub *m, PG* pg);
index 4269e55da0073f14c712ac905cd494984a66be2b..ad1ecfa8d73ff751e1e6bf5a5bb7f28c1547c53b 100755 (executable)
@@ -627,9 +627,14 @@ EOF
             echo "add osd$osd $uuid"
             ceph_adm osd create $uuid
             ceph_adm osd crush add osd.$osd 1.0 host=$HOSTNAME root=default
-            $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS --mkfs --mkkey --osd-uuid $uuid
+           OSD_SECRET=$($CEPH_BIN/ceph-authtool --gen-print-key)
+            $SUDO $CEPH_BIN/ceph-osd -i $osd $ARGS --mkfs --key $OSD_SECRET --osd-uuid $uuid
 
             local key_fn=$CEPH_DEV_DIR/osd$osd/keyring
+           cat > $key_fn<<EOF
+[osd.$osd]
+       key = $OSD_SECRET
+EOF
             echo adding osd$osd key to auth repository
             ceph_adm -i "$key_fn" auth add osd.$osd osd "allow *" mon "allow profile osd" mgr "allow profile osd"
         fi