From c2decfb59bd1be7cd2b0d792fd2ca2627913638a Mon Sep 17 00:00:00 2001 From: Sunny Kumar Date: Tue, 24 Sep 2019 18:22:13 +0530 Subject: [PATCH 310/313] tests : test case for non-root geo-rep setup Added test case for non-root geo-rep setup. Backport of: > Patch: https://review.gluster.org/22902 > Change-Id: Ib6ebee79949a9f61bdc5c7b5e11b51b262750e98 > fixes: bz#1717827 > Signed-off-by: Sunny Kumar Change-Id: Ib6ebee79949a9f61bdc5c7b5e11b51b262750e98 BUG: 1763412 Signed-off-by: Kotresh HR Reviewed-on: https://code.engineering.redhat.com/gerrit/183664 Tested-by: RHGS Build Bot Reviewed-by: Sunil Kumar Heggodu Gopala Acharya --- tests/00-geo-rep/00-georep-verify-non-root-setup.t | 251 +++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 tests/00-geo-rep/00-georep-verify-non-root-setup.t diff --git a/tests/00-geo-rep/00-georep-verify-non-root-setup.t b/tests/00-geo-rep/00-georep-verify-non-root-setup.t new file mode 100644 index 0000000..e753c1f --- /dev/null +++ b/tests/00-geo-rep/00-georep-verify-non-root-setup.t @@ -0,0 +1,251 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../geo-rep.rc +. $(dirname $0)/../env.rc + +SCRIPT_TIMEOUT=500 + +### Basic Non-root geo-rep setup test with Distribute Replicate volumes + +##Cleanup and start glusterd +cleanup; +TEST glusterd; +TEST pidof glusterd + + +##Variables +GEOREP_CLI="$CLI volume geo-replication" +master=$GMV0 +SH0="127.0.0.1" +slave=${SH0}::${GSV0} +num_active=2 +num_passive=2 +master_mnt=$M0 +slave_mnt=$M1 + +##User and group to be used for non-root geo-rep setup +usr="nroot" +grp="ggroup" + +slave_url=$usr@$slave +slave_vol=$GSV0 +ssh_url=$usr@$SH0 + +############################################################ +#SETUP VOLUMES AND VARIABLES + +##create_and_start_master_volume +TEST $CLI volume create $GMV0 replica 2 $H0:$B0/${GMV0}{1,2,3,4}; +TEST $CLI volume start $GMV0 + +##create_and_start_slave_volume +TEST $CLI volume create $GSV0 replica 2 $H0:$B0/${GSV0}{1,2,3,4}; +TEST $CLI volume start $GSV0 + +##Mount master +#TEST glusterfs -s $H0 --volfile-id $GMV0 $M0 + +##Mount slave +#TEST glusterfs -s $H0 --volfile-id $GSV0 $M1 + + +########################################################## +#TEST FUNCTIONS + +function distribute_key_non_root() +{ + ${GLUSTER_LIBEXECDIR}/set_geo_rep_pem_keys.sh $usr $master $slave_vol + echo $? +} + + +function check_status_non_root() +{ + local search_key=$1 + $GEOREP_CLI $master $slave_url status | grep -F "$search_key" | wc -l +} + + +function check_and_clean_group() +{ + if [ $(getent group $grp) ] + then + groupdel $grp; + echo $? + else + echo 0 + fi +} + +function clean_lock_files() +{ + if [ ! -f /etc/passwd.lock ]; + then + rm -rf /etc/passwd.lock; + fi + + if [ ! -f /etc/group.lock ]; + then + rm -rf /etc/group.lock; + fi + + if [ ! -f /etc/shadow.lock ]; + then + rm -rf /etc/shadow.lock; + fi + + if [ ! -f /etc/gshadow.lock ]; + then + rm -rf /etc/gshadow.lock; + fi +} + + +########################################################### +#SETUP NON-ROOT GEO REPLICATION + +##Create ggroup group +##First test if group exists and then create new one + +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_and_clean_group + +##cleanup *.lock files + +clean_lock_files + +TEST /usr/sbin/groupadd $grp + +clean_lock_files +##Create non-root user and assign it to newly created group + +TEST /usr/sbin/useradd -G $grp $usr + +##Modify password for non-root user to have control over distributing ssh-key +echo "$usr:pass" | chpasswd + +##Set up mountbroker root +TEST gluster-mountbroker setup /var/mountbroker-root $grp + +##Associate volume and non-root user to the mountbroker +TEST gluster-mountbroker add $slave_vol $usr + +##Check ssh setting for clear text passwords +sed '/^PasswordAuthentication /{s/no/yes/}' -i /etc/ssh/sshd_config && grep '^PasswordAuthentication ' /etc/ssh/sshd_config && service sshd restart + + +##Restart glusterd to reflect mountbroker changages +TEST killall_gluster; +TEST glusterd; +TEST pidof glusterd; + + + +##Create, start and mount meta_volume +TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3}; +TEST $CLI volume start $META_VOL +TEST mkdir -p $META_MNT +TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT + +##Mount master +TEST glusterfs -s $H0 --volfile-id $GMV0 $M0 + +##Mount slave +TEST glusterfs -s $H0 --volfile-id $GSV0 $M1 + +## Check status of mount-broker +TEST gluster-mountbroker status + + +##Setup password-less ssh for non-root user +#sshpass -p "pass" ssh-copy-id -i ~/.ssh/id_rsa.pub $ssh_url +##Run ssh agent +eval "$(ssh-agent -s)" +PASS="pass" + + +##Create a temp script to echo the SSH password, used by SSH_ASKPASS + +SSH_ASKPASS_SCRIPT=/tmp/ssh-askpass-script +cat > ${SSH_ASKPASS_SCRIPT} <> ~/.bashrc" + +##Creating secret pem pub file +TEST gluster-georep-sshkey generate + +##Create geo-rep non-root setup + +TEST $GEOREP_CLI $master $slave_url create push-pem + +#Config gluster-command-dir +TEST $GEOREP_CLI $master $slave_url config gluster-command-dir ${GLUSTER_CMD_DIR} + +#Config gluster-command-dir +TEST $GEOREP_CLI $master $slave_url config slave-gluster-command-dir ${GLUSTER_CMD_DIR} + +## Test for key distribution + +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 distribute_key_non_root + +##Wait for common secret pem file to be created +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_common_secret_file + +#Enable_metavolume +TEST $GEOREP_CLI $master $slave config use_meta_volume true + +#Start_georep +TEST $GEOREP_CLI $master $slave_url start + +## Meta volume is enabled so looking for 2 Active and 2 Passive sessions + +EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_non_root "Active" + +EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_non_root "Passive" + +#Pause geo-replication session +TEST $GEOREP_CLI $master $slave_url pause + +#Resume geo-replication session +TEST $GEOREP_CLI $master $slave_url resume + +#Validate failure of volume stop when geo-rep is running +TEST ! $CLI volume stop $GMV0 + +#Stop Geo-rep +TEST $GEOREP_CLI $master $slave_url stop + +#Delete Geo-rep +TEST $GEOREP_CLI $master $slave_url delete + +#Cleanup authorized_keys +sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' ~/.ssh/authorized_keys +sed -i '/^command=.*gsyncd.*/d' ~/.ssh/authorized_keys + +#clear mountbroker +gluster-mountbroker remove --user $usr +gluster-mountbroker remove --volume $slave_vol + +#delete group and user created for non-root setup +TEST userdel -r -f $usr +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_and_clean_group + +##password script cleanup +rm -rf /tmp/ssh-askpass-script + + +cleanup; + -- 1.8.3.1