blob: 9123cb8921171b603ee58ac06122b9e249f14f9e (
plain) (
blame)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/bin/sh
#
# flufigut
#
# flufigut, the flumotion configuration utility, is a simple tool
# that generates flumotion configuration files using pyhton jinja2
# template engine and simplejson. flufigut generates planet.xml
# and worker.xml files from configuration templates and an easy to
# understand representation of the flow structure written in json.
#
#
# Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
# Michael Gebetsroither <michael@mgeb.org>
#
# This file is part of flufigut.
#
# flufigut is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# any later version.
#
# flufigut is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with flufigut. If not, see <http://www.gnu.org/licenses/>.
#
#
# Initialization:
# - generate ssh key:
# $ ssh-keygen -f id_rsa
# - configure ssh.config
# - copy flufigut-client.sh to every machine and install it
# $ sudo ./flufigut-client.sh install
#
OUTPUT_DIR="output"
SSH_KEY="id_rsa"
SSH_CONFIG="ssh.config"
SSH_USER="flufigut"
set -e
deploy_all() {
for machine in "$OUTPUT_DIR"/*; do
if [ -d "$machine" ]; then
machine=`basename $machine`
echo "copying files to $machine ... "
tar -czf "$OUTPUT_DIR/$machine.tar.gz" "$OUTPUT_DIR/$machine"/*
scp -i "$SSH_KEY" -F "$SSH_CONFIG" "$OUTPUT_DIR/$machine.tar.gz" $SSH_USER@"$machine":/tmp
ssh -i "$SSH_KEY" -F "$SSH_CONFIG" $SSH_USER@"$machine" install "/tmp/$machine.tar.gz"
rm "$OUTPUT_DIR/$machine.tar.gz"
fi
done
}
start_all() {
for machine in "$OUTPUT_DIR"/*; do
if [ -d "$machine" ] && [ -d "$machine/managers" ]; then
machine=`basename $machine`
echo " $machine (manager, worker)"
ssh -i "$SSH_KEY" -F "$SSH_CONFIG" $SSH_USER@"$machine" start
break
fi
done
for machine in "$OUTPUT_DIR"/*; do
if [ -d "$machine" ] && [ ! -d "$machine/managers" ]; then
machine=`basename $machine`
echo " $machine (worker)"
ssh -i "$SSH_KEY" -F "$SSH_CONFIG" $SSH_USER@"$machine" start
break
fi
done
}
stop_all() {
for machine in "$OUTPUT_DIR"/*; do
if [ -d "$machine" ] && [ ! -d "$machine/managers" ]; then
machine=`basename $machine`
echo " $machine (worker)"
ssh -i "$SSH_KEY" -F "$SSH_CONFIG" $SSH_USER@"$machine" stop
break
fi
done
for machine in "$OUTPUT_DIR"/*; do
if [ -d "$machine" ] && [ -d "$machine/managers" ]; then
machine=`basename $machine`
echo " $machine (manager, worker)"
ssh -i "$SSH_KEY" -F "$SSH_CONFIG" $SSH_USER@"$machine" stop
break
fi
done
}
case "$1" in
deploy)
echo "Deploying configuration to all machines ..."
deploy_all
;;
start)
echo "Start manager and worker on all machines ..."
start_all
;;
stop)
echo "Stop manager and worker on all machines ..."
stop_all
;;
restart)
echo "Restart manager and worker on all machines ..."
stop_all
sleep 1
start_all
;;
*)
echo "Usage $0 (deploy|start|stop|restart)"
exit 1
;;
esac
exit 0
|