diff options
| author | Raghavendra Talur <rtalur@redhat.com> | 2014-03-06 19:09:13 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-03-10 06:38:21 -0700 | 
| commit | ecc475d0a517d7f58014bed93fc0957b3369d1b7 (patch) | |
| tree | a67ab723276d262c42f47d78792006708692d554 /extras/hook-scripts/start | |
| parent | bed3fcd3a47d3ca35b3536e0cad2b293dd240ce4 (diff) | |
hook-scripts: Move smb hooks to right place.
Moved the hook-scripts to dirs corresponding to event.
Also, edited S30samba-set.sh to with changes in
other two hook scripts to bring uniformity.
Change-Id: Ib98c0a18d4bb5d0ba4b881b2e19b40d72580b1c2
BUG: 1073468
Signed-off-by: Raghavendra Talur <rtalur@redhat.com>
Reviewed-on: http://review.gluster.org/7201
Reviewed-by: Poornima G <pgurusid@redhat.com>
Reviewed-by: Bala FA <barumuga@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'extras/hook-scripts/start')
| -rw-r--r-- | extras/hook-scripts/start/Makefile.am | 2 | ||||
| -rw-r--r-- | extras/hook-scripts/start/post/Makefile.am | 1 | ||||
| -rwxr-xr-x | extras/hook-scripts/start/post/S29CTDBsetup.sh | 77 | ||||
| -rwxr-xr-x | extras/hook-scripts/start/post/S30samba-start.sh | 110 | 
4 files changed, 190 insertions, 0 deletions
diff --git a/extras/hook-scripts/start/Makefile.am b/extras/hook-scripts/start/Makefile.am new file mode 100644 index 000000000..1fcade4b0 --- /dev/null +++ b/extras/hook-scripts/start/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = post +CLEANFILES = diff --git a/extras/hook-scripts/start/post/Makefile.am b/extras/hook-scripts/start/post/Makefile.am new file mode 100644 index 000000000..d9cba93ed --- /dev/null +++ b/extras/hook-scripts/start/post/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = S29CTDBsetup.sh S30samba-start.sh diff --git a/extras/hook-scripts/start/post/S29CTDBsetup.sh b/extras/hook-scripts/start/post/S29CTDBsetup.sh new file mode 100755 index 000000000..da077a6fb --- /dev/null +++ b/extras/hook-scripts/start/post/S29CTDBsetup.sh @@ -0,0 +1,77 @@ +#! /bin/bash +# RHS-2.0 only +# - The script mounts the 'meta-vol' on start 'event' on a known +#   directory (eg. /gluster/lock) +# - Adds the necessary configuration changes for ctdb in smb.conf and +#   restarts smb service. +# - P.S: There are other 'tasks' that need to be done outside this script +#   to get CTDB based failover up and running. + +SMB_CONF=/etc/samba/smb.conf + +CTDB_MNT=/gluster/lock +PROGNAME="ctdb" +OPTSPEC="volname:" +VOL= +# $META is the volume that will be used by CTDB as a shared filesystem. +# It is not desirable to use this volume for storing 'data' as well. +# META is set to 'all' (viz. a keyword and hence not a legal volume name) +# to prevent the script from running for volumes it was not intended. +# User needs to set META to the volume that serves CTDB lockfile. +META="all" + +function parse_args () { +        ARGS=$(getopt -l $OPTSPEC  -name $PROGNAME $@) +        eval set -- "$ARGS" + +        while true; do +            case $1 in +                --volname) +                    shift +                    VOL=$1 +                ;; + +                *) +                     shift +                     break +                ;; + +            esac + +            shift +        done +} + +function add_glusterfs_ctdb_options () { +        PAT="Share Definitions" +        GLUSTER_CTDB_CONFIG="# ctdb config for glusterfs\n\tclustering = yes\n\tidmap backend = tdb2\n" +        exists=`grep "clustering = yes" "$SMB_CONF"` +        if [ "$exists" == "" ] +        then +            sed -i /"$PAT"/i\ "$GLUSTER_CTDB_CONFIG" "$SMB_CONF" +        fi +} + +function add_fstab_entry () { +        volname=$1 +        mntpt=$2 +        mntent="`hostname`:/$volname $mntpt glusterfs defaults,transport=tcp 0 0" +        exists=`grep "^$mntent" /etc/fstab` +        if [ "$exists" == "" ] +        then +            echo "$mntent" >> /etc/fstab +        fi +} + +parse_args $@ +if [ "$META" = "$VOL" ] +then +    #expects ctdb service to manage smb +    service smb stop +    add_glusterfs_ctdb_options +    mkdir -p $CTDB_MNT +    sleep 5 +    mount -t glusterfs `hostname`:$VOL "$CTDB_MNT" && \ +        add_fstab_entry $VOL $CTDB_MNT +    chkconfig ctdb on +fi diff --git a/extras/hook-scripts/start/post/S30samba-start.sh b/extras/hook-scripts/start/post/S30samba-start.sh new file mode 100755 index 000000000..529348e25 --- /dev/null +++ b/extras/hook-scripts/start/post/S30samba-start.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +#Need to be copied to hooks/<HOOKS_VER>/start/post + +#TODO: All gluster and samba paths are assumed for fedora like systems. +#Some efforts are required to make it work on other distros. + +#The preferred way of creating a smb share of a gluster volume has changed. +#The old method was to create a fuse mount of the volume and share the mount +#point through samba. +# +#New method eliminates the requirement of fuse mount and changes in fstab. +#glusterfs_vfs plugin for samba makes call to libgfapi to access the volume. +# +#This hook script automagically creates shares for volume on every volume start +#event by adding the entries in smb.conf file and sending SIGHUP to samba. +# +#In smb.conf: +#glusterfs vfs plugin has to be specified as required vfs object. +#Path value is relative to the root of gluster volume;"/" signifies complete +#volume. + +PROGNAME="Ssamba-start" +OPTSPEC="volname:" +VOL= +CONFIGFILE= +LOGFILEBASE= +PIDDIR= + +function parse_args () { +        ARGS=$(getopt -l $OPTSPEC  -name $PROGNAME $@) +        eval set -- "$ARGS" + +        while true; do +        case $1 in +        --volname) +         shift +         VOL=$1 +         ;; +        *) +         shift +         break +         ;; +        esac +        shift +        done +} + +function find_config_info () { +        cmdout=`smbd -b | grep smb.conf` +        if [ $? -ne 0 ];then +                echo "Samba is not installed" +                exit 1 +        fi +        CONFIGFILE=`echo $cmdout | awk {'print $2'}` +        PIDDIR=`smbd -b | grep PIDDIR | awk {'print $2'}` +        LOGFILEBASE=`smbd -b | grep 'LOGFILEBASE' | awk '{print $2}'` +} + +function add_samba_share () { +        volname=$1 +        STRING="\n[gluster-$volname]\n" +        STRING+="comment = For samba share of volume $volname\n" +        STRING+="vfs objects = glusterfs\n" +        STRING+="glusterfs:volume = $volname\n" +        STRING+="glusterfs:logfile = $LOGFILEBASE/glusterfs-$volname.%%M.log\n" +        STRING+="glusterfs:loglevel = 7\n" +        STRING+="path = %%P/\n" +        STRING+="read only = no\n" +        STRING+="guest ok = yes\n" +        printf "$STRING"  >> ${CONFIGFILE} +} + +function sighup_samba () { +        pid=`cat ${PIDDIR}/smbd.pid` +        if [ "x$pid" != "x" ] +        then +                kill -HUP "$pid"; +        else +                /etc/init.d/smb condrestart +        fi +} + +function get_smb () { +        volname=$1 +        uservalue= + +        usercifsvalue=$(grep user.cifs /var/lib/glusterd/vols/"$volname"/info |\ +                        cut -d"=" -f2) +        usersmbvalue=$(grep user.smb /var/lib/glusterd/vols/"$volname"/info |\ +                       cut -d"=" -f2) + +        if [[ $usercifsvalue = "disable" || $usersmbvalue = "disable" ]]; then +                uservalue="disable" +        fi +        echo "$uservalue" +} + +parse_args $@ +if [ $(get_smb "$VOL") = "disable" ]; then +        exit 0 +fi + +#Find smb.conf, smbd pid directory and smbd logfile path +find_config_info + +if ! grep --quiet "\[gluster-$VOL\]" ${CONFIGFILE} ; then +        add_samba_share $VOL +        sighup_samba +fi  | 
