#!/bin/bash
nodes[0]=192.168.42.101
nodes[1]=192.168.42.102
nodes[2]=192.168.42.103
nodes[3]=192.168.42.104
nodes[4]=192.168.42.105
nodes[5]=192.168.42.106
start_node() {
if [[ -z "$1" ]]; then
echo "No node argument suplied [1-6]"
exit 1
fi
nodeip=${nodes[(($1 - 1))]}
echo -n "Starting node $nodeip..."
ssh -qt fcrepo@$nodeip "sudo service tomcat7 start > /dev/null"
curl -sf http://${nodeip}:8080/fcrepo/rest > /dev/null
until [ $? -eq 0 ]
do
curl -sf http://${nodeip}:8080/fcrepo/rest > /dev/null
done
echo "done."
}
stop_node() {
if [[ -z "$1" ]]; then
echo "No node argument suplied [1-6]"
exit 1
fi
nodeip=${nodes[(($1 - 1))]}
echo -n "Stopping node $nodeip..."
ssh -qt fcrepo@$nodeip "sudo service tomcat7 stop > /dev/null"
curl -sf http://${nodeip}:8080/fcrepo/rest > /dev/null
until [ $? -gt 0 ]
do
curl -sf http://${nodeip}:8080/fcrepo/rest > /dev/null
done
echo "done."
}
restart_node() {
stop_node $1
start_node $1
}
start_cluster() {
echo "Starting cluster"
for node in 1 2 3 4 5 6
do
start_node $node
done
}
stop_cluster() {
echo "Stopping cluster"
for node in 1 2 3 4 5 6
do
stop_node $node
done
}
restart_cluster() {
stop_cluster
start_cluster
}
status() {
echo "Status of FIZ Fedora 4 cluster"
for nodeip in "${nodes[@]}"
do
curl -sf http://${nodeip}:8080/fcrepo/rest > /dev/null
if [ $? -gt 0 ];then
echo "$nodeip is OFFLINE"
else
echo "$nodeip is online"
fi
done
}
purge() {
echo "purging cluster"
for nodeip in "${nodes[@]}"
do
echo -n "purging ${nodeip}..."
ssh -qt fcrepo@$nodeip "sudo rm -Rf /var/lib/tomcat7/fcrepo4-data/* /var/lib/tomcat7/work/Catalina/localhost/*"
echo "done"
done
}
push_config() {
for nodeip in "${nodes[@]}"
do
echo "pushing config file $2 to $nodeip"
scp $1 fcrepo@${nodeip}:fcrepo-config/
done
}
restart_purge() {
stop_cluster
purge
start_cluster
}
push_war() {
stop_cluster
purge
rm -Rf /tmp/fcrepo
mkdir /tmp/fcrepo
unzip -qq $1 -d /tmp/fcrepo
for nodeip in "${nodes[@]}"
do
echo -n "pushing WAR file to ${nodeip}..."
ssh -qt fcrepo@${nodeip} "sudo rm -Rf /tmp/fcrepo"
scp -qr /tmp/fcrepo fcrepo@${nodeip}:/tmp
ssh -qt fcrepo@${nodeip} "sudo rm -Rf /opt/fcrepo/*"
ssh -qt fcrepo@${nodeip} "sudo mv /tmp/fcrepo /opt/"
echo "done.";
done
}
push_jar() {
stop_cluster
purge
for nodeip in "${nodes[@]}"
do
echo -n "pushing JAR to ${nodeip}..."
scp -q $1 fcrepo@${nodeip}:/opt/fcrepo/WEB-INF/lib
echo "done."
done
}
case "$1" in
start)
start_cluster
;;
stop)
stop_cluster
;;
restart)
restart_cluster
;;
stop-node)
stop_node $2
;;
start-node)
start_node $2
;;
restart-node)
restart_node $2
;;
status)
status
;;
purge)
purge
;;
push-config)
push_config $2
;;
restart-purge)
restart_purge
;;
push-war)
push_war $2
;;
push-jar)
push_jar $2
;;
*)
echo $"Usage: $0 {start|stop|restart|restart-purge|start-node|stop-node|restart-node|status|purge|push-config|push-war|push-jar}"
exit 1
esac |