Blame view

cluster-manager.sh 4.91 KB
fcd90fbc   lucvic   First commit. Act...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  #!/bin/bash
  
  # The MIT License (MIT)
  #
  # Copyright (c) <year> <copyright holders>
  #
  # Permission is hereby granted, free of charge, to any person obtaining a copy
  # of this software and associated documentation files (the "Software"), to deal
  # in the Software without restriction, including without limitation the rights
  # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  # copies of the Software, and to permit persons to whom the Software is
  # furnished to do so, subject to the following conditions:
  #
  # The above copyright notice and this permission notice shall be included in
  # all copies or substantial portions of the Software.
  #
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  # THE SOFTWARE.
  
  #
  # DEFAULT OPTIONS
  #
  
  SSH_USER=
  SSH_PASS=
  
  # MYSQL_HOST=localhost # IGNORED
  MYSQL_USER=root
  MYSQL_PASS=is15rdc
  MYSQL_DB=oxwall
  
  HOSTLIST=(
  	'prato'
  	'dublin'
  	'issy'
  	'denhaag'
  	'groningen'
  )
  
  #
  # OPTION PROCESSING
  #
  
  OPTIONS=$(getopt -o s: -- $@)
  eval set -- $OPTIONS
  
  while true; do
  	case "$1" in
  		-s)
  			SSH_USER="${2}@"
  			shift 2
  			;;
  		--)
  			shift
  			break
  			;;
  		*)
  			echo "Unknown option: $1"
  			shift
  			break
  			;;
  	esac
  done
  
  #
  # VARIABLES
  #
  
  ALLOWEDHOST="spod.routetopa.eu"
  MYHOST=$(hostname)
  
  #if [ "$MYHOST" != "$ALLOWEDHOST" ]; then
  	#echo "This script can be run only on ${ALLOWEDHOST}. It appears you are running it on ${MYHOST}"
  	#echo "Exiting..."
  	#exit -1;
  #fi
  
  #
  # PERFORM SELECTED ACTION
  #
  ACTION=$1
  case "$ACTION" in
  	execute)
  echo 'NOTE: THIS ACTION HAS NOT BEEN TESTED YET!! JUST ECHOING COMMANDS...'
  		ARG_SCRIPT_NAME=$2
  		if [ -z $ARG_SCRIPT_NAME ]; then
  			echo "ERROR: Please specify the name of the script. e.g.: $0 do_something.sh"
  			exit 1
  		fi
  		if [ ! -f $ARG_SCRIPT_NAME ]; then
  			echo "ERROR: File $ARG_SCRIPT_NAME does not exists"
  			exit 1
  		fi
  		for HOST in ${HOSTLIST[@]}; do
  			echo scp $ARG_SCRIPT_NAME ${SSH_USER}${HOST}.routetopa.eu:$ARG_SCRIPT_NAME
  			echo ssh -t ${SSH_USER}${HOST}.routetopa.eu "source $ARG_SCRIPT_NAME; rm $ARG_SCRIPT_NAME"
  		done
  		;;
45b6b00a   lucvic   Added db-restore ...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  	db-restore)
  		ARG_BACKUP_NAME=$2
  		if [ -z $ARG_BACKUP_NAME ]; then
  			echo "ERROR: Please specify the name of the backup. e.g.: $0 backup.sql"
  			exit 1
  		fi
  		if [ ! -f $ARG_BACKUP_NAME ]; then
  			echo "ERROR: File $ARG_BACKUP_NAME does not exists"
  			exit 1
  		fi
  		for HOST in ${HOSTLIST[@]}; do
  			scp $ARG_BACKUP_NAME ${SSH_USER}${HOST}.routetopa.eu:$ARG_BACKUP_NAME
  			ssh -t ${SSH_USER}${HOST}.routetopa.eu "mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} < ${ARG_BACKUP_NAME}"
  		done
fcd90fbc   lucvic   First commit. Act...
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
  	db-backup)
  		ARG_BACKUP_NAME=$2
  		if [ -z $ARG_BACKUP_NAME ]; then
  			ARG_BACKUP_NAME="${MYSQL_DB}-$(date +%Y%m%d-%H%M%S).sql"
  			echo "No given backup filename. Using $ARG_BACKUP_NAME"
  		fi
  		for HOST in ${HOSTLIST[@]}; do
  			ssh -t ${SSH_USER}${HOST}.routetopa.eu "mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} > ${ARG_BACKUP_NAME}"
  			scp ${SSH_USER}${HOST}.routetopa.eu:${ARG_BACKUP_NAME} ./${HOST}-${ARG_BACKUP_NAME}
  		done
  		;;
  	db-sql)
  echo 'NOTE: THIS ACTION HAS NOT BEEN TESTED YET!! JUST ECHOING COMMANDS...'
  		ARG_SCRIPT_NAME=$2
  		if [ -z $ARG_SCRIPT_NAME ]; then
  			echo "ERROR: Please specify the name of the sql. e.g.: $0 do_something.sql"
  			exit 1
  		fi
  		if [ ! -f $ARG_SCRIPT_NAME ]; then
  			echo "ERROR: File $ARG_SCRIPT_NAME does not exists"
  			exit 1
  		fi
  		for HOST in ${HOSTLIST[@]}; do
  			echo scp ${ARG_SCRIPT_NAME} ${SSH_USER}${HOST}.routetopa.eu:${ARG_SCRIPT_NAME}
  			echo ssh -t ${SSH_USER}${HOST}.routetopa.eu "mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} < ${ARG_SCRIPT_NAME}; rm ${ARG_SCRIPT_NAME}"
  		done
  		;;
  	update)
  echo 'NOTE: THIS ACTION HAS NOT BEEN TESTED YET!! JUST ECHOING COMMANDS...'
  		echo "Updating production sites..."
  		for HOST in ${HOSTLIST[@]}; do
  			echo ssh -t ${SSH_USER}${HOST}.routetopa.eu sudo ./spod-manager.sh -a update -p isisadmin -q isislab.unisa@gmail.com -r is15rdc1 -w http://spod.routetopa.eu/
  		done
  		;;
  	""|help)
  		echo "ROUTE-TO-PA PROJECT: CLUSTER-MANAGER.SH"
  		echo " "
  		echo "Usage: $0 action <options>"
  		echo " "
  		echo "List of actions:"
  		echo "    help                  : Show this screen"
  		echo "    execute <script>      : Copy <script> to hosts and execute it"
  		echo "    db-backup [filename]  : Perform a database backup"
45b6b00a   lucvic   Added db-restore ...
161
  		echo "    db-restore [filename] : Restore a database backup"
fcd90fbc   lucvic   First commit. Act...
162
163
164
165
166
167
168
169
170
  		echo "    db-sql <script>       : Copy <script> to hosts and run with mysql client"
  		echo "    update                : Update code using git pull"
  		echo " "
  		echo "List of options:"
  		;;
  	*)
  		echo "Unknown action: \"$ACTION\". Try calling this script without arguments to get help."
  		;;
  esac