glusterfs

Форк
0
/
00-georep-verify-non-root-setup.t 
297 строк · 8.0 Кб
1
#!/bin/bash
2

3
. $(dirname $0)/../include.rc
4
. $(dirname $0)/../volume.rc
5
. $(dirname $0)/../geo-rep.rc
6
. $(dirname $0)/../env.rc
7

8
SCRIPT_TIMEOUT=900
9

10
### Basic Non-root geo-rep setup test with Distribute Replicate volumes
11

12
##Cleanup and start glusterd
13
cleanup;
14
TEST glusterd;
15
TEST pidof glusterd
16

17

18
##Variables
19
GEOREP_CLI="$CLI volume geo-replication"
20
primary=$GMV0
21
secondary=${H0}::${GSV0}
22
num_active=2
23
num_passive=2
24
primary_mnt=$M0
25
secondary_mnt=$M1
26

27
##User and group to be used for non-root geo-rep setup
28
usr="nroot"
29
grp="ggroup"
30

31
secondary_url=$usr@$secondary
32
secondary_vol=$GSV0
33
ssh_url=$usr@$H0
34

35
#Cleanup stale keys
36
sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' /home/$usr/.ssh/authorized_keys
37
sed -i '/^command=.*gsyncd.*/d' /home/$usr/.ssh/authorized_keys
38

39
############################################################
40
#SETUP VOLUMES AND VARIABLES
41

42
##create_and_start_primary_volume
43
TEST $CLI volume create $GMV0 replica 2 $H0:$B0/${GMV0}{1,2,3,4};
44
TEST $CLI volume start $GMV0
45

46
##create_and_start_secondary_volume
47
TEST $CLI volume create $GSV0 replica 2 $H0:$B0/${GSV0}{1,2,3,4};
48
TEST $CLI volume start $GSV0
49

50
##Mount primary
51
#TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
52

53
##Mount secondary
54
#TEST glusterfs -s $H0 --volfile-id $GSV0 $M1
55

56

57
##########################################################
58
#TEST FUNCTIONS
59

60
function distribute_key_non_root()
61
{
62
    ${GLUSTER_LIBEXECDIR}/set_geo_rep_pem_keys.sh $usr $primary $secondary_vol
63
    echo $?
64
}
65

66

67
function check_status_non_root()
68
{
69
    local search_key=$1
70
    $GEOREP_CLI $primary $secondary_url status | grep -F "$search_key" | wc -l
71
}
72

73

74
function check_and_clean_group()
75
{
76
        if [ $(getent group $grp) ]
77
        then
78
                groupdel $grp;
79
                echo $?
80
        else
81
                echo 0
82
        fi
83
}
84

85
function clean_lock_files()
86
{
87
        if [ ! -f /etc/passwd.lock ];
88
        then
89
                rm -rf /etc/passwd.lock;
90
        fi
91

92
        if [ ! -f /etc/group.lock ];
93
        then
94
                rm -rf /etc/group.lock;
95
        fi
96

97
        if [ ! -f /etc/shadow.lock ];
98
        then
99
                rm -rf /etc/shadow.lock;
100
        fi
101

102
        if [ ! -f /etc/gshadow.lock ];
103
        then
104
                rm -rf /etc/gshadow.lock;
105
        fi
106
}
107

108

109
###########################################################
110
#SETUP NON-ROOT GEO REPLICATION
111

112
##Create ggroup group
113
##First test if group exists and then create new one
114

115
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_and_clean_group
116

117
##cleanup *.lock files
118

119
clean_lock_files
120

121
TEST /usr/sbin/groupadd $grp
122

123
clean_lock_files
124
##Del if exists and create non-root user and assign it to newly created group
125
userdel -r -f $usr
126
TEST /usr/sbin/useradd -G $grp $usr
127

128
export PASS=$( (echo $RANDOM ; date +%s) | sha256sum | base64 | head -c 32)
129
##Modify password for non-root user to have control over distributing ssh-key
130
echo "$usr:$PASS" | chpasswd
131

132
##Set up mountbroker root
133
TEST gluster-mountbroker setup /var/mountbroker-root $grp
134

135
##Associate volume and non-root user to the mountbroker
136
TEST gluster-mountbroker add $secondary_vol $usr
137

138
##Check ssh setting for clear text passwords
139
sed '/^PasswordAuthentication /{s/no/yes/}' -i /etc/ssh/sshd_config && grep '^PasswordAuthentication ' /etc/ssh/sshd_config && service sshd restart
140

141

142
##Restart glusterd to reflect mountbroker changages
143
TEST killall_gluster;
144
TEST glusterd;
145
TEST pidof glusterd;
146

147
##Create, start and mount meta_volume
148
TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3};
149
TEST $CLI volume start $META_VOL
150
TEST mkdir -p $META_MNT
151
EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "3" brick_count ${META_VOL}
152
TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT
153

154
##Mount primary
155
EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "4" brick_count $GMV0
156
TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
157

158
##Mount secondary
159
EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "4" brick_count $GSV0
160
TEST glusterfs -s $H0 --volfile-id $GSV0 $M1
161

162
## Check status of mount-broker
163
TEST gluster-mountbroker status
164

165

166
##Setup password-less ssh for non-root user
167
#sshpass -p "pass" ssh-copy-id -i ~/.ssh/id_rsa.pub $ssh_url
168
##Run ssh agent
169
eval "$(ssh-agent -s)"
170

171

172
##Create a temp script to echo the SSH password, used by SSH_ASKPASS
173

174
SSH_ASKPASS_DIR=$(mktemp -d /tmp/ssh-askpass_XXXXXXXXXXXX)
175
SSH_ASKPASS_SCRIPT=$SSH_ASKPASS_DIR/ssh-askpass.sh
176
cat > ${SSH_ASKPASS_SCRIPT} <<EOL
177
#!/bin/bash
178
echo "${PASS}"
179
EOL
180
chmod u+x ${SSH_ASKPASS_SCRIPT}
181

182
##set no display, necessary for ssh to use with setsid and SSH_ASKPASS
183
export DISPLAY
184

185
export SSH_ASKPASS=${SSH_ASKPASS_SCRIPT}
186

187
DISPLAY=: setsid ssh-copy-id -o 'PreferredAuthentications=password' -o 'StrictHostKeyChecking=no' -i ~/.ssh/id_rsa.pub $ssh_url
188

189
##Setting up PATH for gluster binaries in case of source installation
190
##ssh -oNumberOfPasswordPrompts=0 -oStrictHostKeyChecking=no $ssh_url "echo "export PATH=$PATH:/usr/local/sbin" >> ~/.bashrc"
191

192
##Creating secret pem pub file
193
TEST gluster-georep-sshkey generate
194

195
##Create geo-rep non-root setup
196

197
TEST $GEOREP_CLI $primary $secondary_url create push-pem
198

199
#check for session creation
200
EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_status_non_root "Created"
201
#Config gluster-command-dir
202
TEST $GEOREP_CLI $primary $secondary_url config gluster-command-dir ${GLUSTER_CMD_DIR}
203

204
#Config gluster-command-dir
205
TEST $GEOREP_CLI $primary $secondary_url config secondary-gluster-command-dir ${GLUSTER_CMD_DIR}
206

207
## Test for key distribution
208

209
EXPECT_WITHIN $GEO_REP_TIMEOUT  0 distribute_key_non_root
210

211
##Wait for common secret pem file to be created
212
EXPECT_WITHIN $GEO_REP_TIMEOUT  0 check_common_secret_file
213

214
#Enable_metavolume
215
TEST $GEOREP_CLI $primary $secondary config use_meta_volume true
216

217
#Start_georep
218
TEST $GEOREP_CLI $primary $secondary_url start
219

220
## Meta volume is enabled so looking for 2 Active and 2 Passive sessions
221

222
EXPECT_WITHIN $GEO_REP_TIMEOUT  2 check_status_non_root "Active"
223

224
EXPECT_WITHIN $GEO_REP_TIMEOUT  2 check_status_non_root "Passive"
225

226
#Pause geo-replication session
227
TEST $GEOREP_CLI  $primary $secondary_url pause
228

229
#Resume geo-replication session
230
TEST $GEOREP_CLI  $primary $secondary_url resume
231

232
#Validate failure of volume stop when geo-rep is running
233
TEST ! $CLI volume stop $GMV0
234

235
#Negative test for ssh-port
236
#Port should be integer and between 1-65535 range
237

238
TEST ! $GEOREP_CLI $primary $secondary_url config ssh-port -22
239

240
TEST ! $GEOREP_CLI $primary $secondary_url config ssh-port abc
241

242
TEST ! $GEOREP_CLI $primary $secondary_url config ssh-port 6875943
243

244
TEST ! $GEOREP_CLI $primary $secondary_url config ssh-port 4.5
245

246
TEST ! $GEOREP_CLI $primary $secondary_url config ssh-port 22a
247

248
#Config Set ssh-port to validate int validation
249
TEST $GEOREP_CLI $primary $secondary config ssh-port 22
250

251
#Hybrid directory rename test BZ#1763439
252

253
TEST $GEOREP_CLI $primary $secondary_url config change_detector xsync
254
#verify primary and secondary mount
255

256
EXPECT_WITHIN $CHECK_MOUNT_TIMEOUT "^1$" check_mounted ${primary_mnt}
257
EXPECT_WITHIN $CHECK_MOUNT_TIMEOUT "^1$" check_mounted ${secondary_mnt}
258

259
#Create test data for hybrid crawl
260
TEST mkdir ${primary_mnt}/dir1
261
TEST mkdir ${primary_mnt}/dir1/dir2
262
TEST mkdir ${primary_mnt}/dir1/dir3
263
TEST mkdir ${primary_mnt}/hybrid_d1
264

265
mv ${primary_mnt}/hybrid_d1 ${primary_mnt}/hybrid_rn_d1
266
mv ${primary_mnt}/dir1/dir2 ${primary_mnt}/rn_dir2
267
mv ${primary_mnt}/dir1/dir3 ${primary_mnt}/dir1/rn_dir3
268

269
#Verify hybrid crawl data on secondary
270
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/dir1
271
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/hybrid_rn_d1
272
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/rn_dir2
273
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/dir1/rn_dir3
274

275
#Stop Geo-rep
276
TEST $GEOREP_CLI $primary $secondary_url stop
277

278
#Delete Geo-rep
279
TEST $GEOREP_CLI $primary $secondary_url delete
280

281
#Cleanup authorized_keys
282
sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' /home/$usr/.ssh/authorized_keys
283
sed -i '/^command=.*gsyncd.*/d' /home/$usr/.ssh/authorized_keys
284

285
#clear mountbroker
286
gluster-mountbroker remove --user $usr
287
gluster-mountbroker remove --volume $secondary_vol
288

289
#delete group and user created for non-root setup
290
TEST userdel -r -f $usr
291
EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_and_clean_group
292

293
##password script cleanup
294
rm -rf $SSH_ASKPASS_DIR
295

296

297
cleanup;
298

299

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.