Project

General

Profile

Download (3.21 KB) Statistics
| Branch: | Tag: | Revision:
1
#!/bin/bash -x
2

    
3
# Requirements: 
4
# 1) for the commands executed by this script on the remote server the user jenkins 
5
# (requires to be member of the group 'cdm' ?still true?) and needs the following permissions in 
6
# sudoers:
7
#
8
#  |  # User alias specification
9
#  |  User_Alias      CDMUSERS = jenkins
10
#  |
11
#  |  #Cmnd alias specification
12
#  |  Cmnd_Alias      CDMSERVER = /bin/cp -f cdm-server*.jar /opt/cdmserver/, /etc/init.d/cdmserver *, /bin/rm -f /opt/cdmserver/cdm-server.jar, /bin/ln -s cdm-server*.jar cdm-server.jar, /bin/rm -rf /var/lib/cdmserver/*, /bin/mv /var/lib/cdmserver/*, /bin/chmod -R 775 /var/lib/cdmserver/*, /bin/chown -R * /var/lib/cdmserver/*
13
#  |  # User privilege specification
14
#  |  CDMUSERS        ALL=(ALL)NOPASSWD: CDMSERVER
15
#
16
# 2) the user executing this script (e.g. jenkins) must be allowed to ssh into the $REMOTE_SERVER 
17
#    via public key authentication 
18
#
19
# 3) /opt/cdmserver/.cdmLibrary/remote-webapp/index must be a symlink to the REMOTE_INDEX_CONTAINER
20
#
21
# 4) the REMOTE_INDEX_CONTAINER folder must have the permissions 775 for cdm:cdm
22
#    fix this: 
23
#      sudo chown -R cdm:cdm $REMOTE_INDEX_CONTAINER
24
#      sudo chmod -R 775 $REMOTE_INDEX_CONTAINER
25

    
26
if [ -z "${REMOTE_INDEX_CONTAINER}" ]; then
27
	REMOTE_INDEX_CONTAINER=/var/lib/cdmserver/
28
fi
29

    
30
if [ -z "${LOCAL_INDEX_CONTAINER}" ]; then
31
	LOCAL_INDEX_CONTAINER=/var/lib/cdmserver/
32
fi
33

    
34
if [ -z "${REMOTE_SERVER_DO_RESTART}" ]; then
35
	REMOTE_SERVER_DO_RESTART="restart"
36
fi
37
if [ -z "${REMOTE_SERVER}" ]; then
38
	echo '$REMOTE_SERVER missing'
39
	exit 1
40
fi
41
if [ -z "${INSTANCE_NAMES}" ]; then
42
  echo '$INSTANCE_NAMES missing'
43
  exit 1
44
fi
45

    
46
echo "cdmserver-delpoy-index:"
47
echo "  REMOTE_SERVER = ${REMOTE_SERVER}"
48
echo "  LOCAL_INDEX_CONTAINER = ${LOCAL_INDEX_CONTAINER}"
49
echo "  REMOTE_INDEX_CONTAINER = ${REMOTE_INDEX_CONTAINER}"
50
echo "  REMOTE_SERVER_DO_RESTART = ${REMOTE_SERVER_DO_RESTART}"
51
echo "  INSTANCE_NAMES = ${INSTANCE_NAMES}"
52
echo "  "
53

    
54
# parse INSTANCE_NAMES by whitespace
55
TMP_IFS=$IFS
56
IFS=' '
57
names=($INSTANCE_NAMES)
58
IFS=$TMP_IFS
59

    
60
echo "transferring  index to "${REMOTE_SERVER}
61
ssh ${REMOTE_SERVER} "sudo rm -rf ${REMOTE_INDEX_CONTAINER}tmp; mkdir -p ${REMOTE_INDEX_CONTAINER}tmp"
62
cd ${LOCAL_INDEX_CONTAINER}
63
tar czf - index | ssh ${REMOTE_SERVER} "cd ${REMOTE_INDEX_CONTAINER}tmp ; tar xzf -"
64
# fixing owner and permissions
65
ssh ${REMOTE_SERVER} chmod -R 775 ${REMOTE_INDEX_CONTAINER}tmp
66
ssh ${REMOTE_SERVER} sudo chown -R cdm:cdm ${REMOTE_INDEX_CONTAINER}tmp
67

    
68
STATUS=$(ssh ${REMOTE_SERVER} "sudo /etc/init.d/cdmserver status")
69
NOT_RUNNING=$(echo "${STATUS}" | grep "not running")
70
if [ -z "${NOT_RUNNING}" ]; then
71
  echo "stopping $REMOTE_SERVER ..." 
72
  ssh ${REMOTE_SERVER} sudo /etc/init.d/cdmserver stop
73
  echo "waiting 20 seconds for server shutting down ..."
74
  sleep 20 
75
else 
76
  echo "server is not running"
77
fi
78

    
79
echo "switching to new index"
80
for name in "${names[@]}"
81
do
82
  echo "  - $name" 
83
  ssh ${REMOTE_SERVER} sudo rm -rf ${REMOTE_INDEX_CONTAINER}index/$name
84
  ssh ${REMOTE_SERVER} sudo mv ${REMOTE_INDEX_CONTAINER}tmp/index/$name ${REMOTE_INDEX_CONTAINER}index/$name
85
  ssh ${REMOTE_SERVER} sudo rm -rf ${REMOTE_INDEX_CONTAINER}tmp
86
done
87

    
88
if [ "${REMOTE_SERVER_DO_RESTART}" == "restart" ]; then
89
	echo "restarting server"
90
    ssh ${REMOTE_SERVER} sudo /etc/init.d/cdmserver start
91
fi
(2-2/3)