]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
vstart: Support deployment of ganesha daemon by cephadm with NFS option. 35344/head
authorVarsha Rao <varao@redhat.com>
Mon, 1 Jun 2020 15:32:53 +0000 (21:02 +0530)
committerVarsha Rao <varao@redhat.com>
Fri, 5 Jun 2020 11:28:51 +0000 (16:58 +0530)
NFS Ganesha cluster can be created in two ways with vstart
cluster:

1) With test_orchestrator
NFS=1 ../src/vstart.sh
This type of deployment can have multiple ganesha daemons on random port.

2) With Cephadm
NFS=1 ../src/vstart.sh --cephadm
It can deploy only single ganesha daemon with vstart on default ganesha port.

Both can create multiple cephfs exports.

Fixes: https://tracker.ceph.com/issues/45830
Signed-off-by: Varsha Rao <varao@redhat.com>
src/vstart.sh

index b3bed4314c7f6ea2a5c898d119e0b0507a338336..88fe103386819ed01a978fd66b6925e84ae67597 100755 (executable)
@@ -1072,8 +1072,25 @@ EOF
 # https://launchpad.net/~nfs-ganesha/+archive/ubuntu/nfs-ganesha-2.8
 
 start_ganesha() {
+    cluster_id="vstart"
     GANESHA_PORT=$(($CEPH_PORT + 4000))
     local ganesha=0
+    test_user="ganesha-$cluster_id"
+    pool_name="nfs-ganesha"
+    namespace=$cluster_id
+    url="rados://$pool_name/$namespace/conf-nfs.$test_user"
+
+    prun ceph_adm auth get-or-create client.$test_user \
+        mon "allow r" \
+        osd "allow rw pool=$pool_name namespace=$namespace, allow rw tag cephfs data=a" \
+        mds "allow rw path=/" \
+        >> "$keyring_fn"
+
+    ceph_adm mgr module enable test_orchestrator
+    ceph_adm orch set backend test_orchestrator
+    ceph_adm test_orchestrator load_data -i $CEPH_ROOT/src/pybind/mgr/test_orchestrator/dummy_data.json
+    prun ceph_adm nfs cluster create cephfs $cluster_id
+    prun ceph_adm nfs export create cephfs "a" $cluster_id "/cephfs"
 
     for name in a b c d e f g h i j k l m n o p
     do
@@ -1082,22 +1099,8 @@ start_ganesha() {
         port=$(($GANESHA_PORT + ganesha))
         ganesha=$(($ganesha + 1))
         ganesha_dir="$CEPH_DEV_DIR/ganesha.$name"
-        test_user="ganesha-$name"
-        pool_name="nfs-ganesha"
-        namespace=$name
-        url="rados://$pool_name/$namespace/conf-nfs.$test_user"
-
         prun rm -rf $ganesha_dir
         prun mkdir -p $ganesha_dir
-        prun ceph_adm auth get-or-create client.$test_user \
-            mon "allow r" \
-            osd "allow rw pool=$pool_name namespace=$namespace, allow rw tag cephfs data=a" \
-            mds "allow rw path=/" \
-            >> "$keyring_fn"
-
-        ceph_adm mgr module enable test_orchestrator
-        ceph_adm orch set backend test_orchestrator
-        prun ceph_adm nfs cluster create cephfs $name
 
         echo "NFS_CORE_PARAM {
             Enable_NLM = false;
@@ -1139,7 +1142,6 @@ start_ganesha() {
         pid file = $ganesha_dir/ganesha.pid
 EOF
 
-        prun ceph_adm nfs export create cephfs "a" $name "/cephfs"
         prun ganesha-rados-grace -p $pool_name -n $namespace add $name
         prun ganesha-rados-grace -p $pool_name -n $namespace
 
@@ -1154,13 +1156,12 @@ EOF
             $CEPH_BIN/rados -p $pool_name put "conf-$name" "$ganesha_dir/ganesha.conf"
         fi
 
-        echo "$test_user started on port: $port"
+        echo "$test_user ganesha daemon $name started on port: $port"
     done
 
     if $with_mgr_dashboard; then
         ceph_adm dashboard set-ganesha-clusters-rados-pool-namespace $pool_name
     fi
-
     echo "Mount using: mount -t nfs -o port=<ganesha-port-num> <address>:<ganesha pseudo path>"
 }
 
@@ -1369,8 +1370,15 @@ EOF
 fi
 
 # Ganesha Daemons
-if [ $GANESHA_DAEMON_NUM -gt 0 ] && [ "$cephadm" -eq 0 ]; then
-    start_ganesha
+if [ $GANESHA_DAEMON_NUM -gt 0 ]; then
+    if [ "$cephadm" -gt 0 ]; then
+        cluster_id="vstart"
+        prun ceph_adm nfs cluster create cephfs $cluster_id
+        prun ceph_adm nfs export create cephfs "a" $cluster_id "/cephfs"
+        echo "Mount using: mount -t nfs -o port=2049 <address>:/cephfs"
+    else
+        start_ganesha
+    fi
 fi
 
 do_cache() {