summaryrefslogtreecommitdiff
path: root/src/manage.sh
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2012-10-13 13:57:26 +0200
committerChristian Pointner <equinox@spreadspace.org>2012-10-13 13:57:26 +0200
commit831c88bd689ea3c5e6c0350ee9e389573377e743 (patch)
treeed9ce7235a8357e1f17f994ddc6868156f55c341 /src/manage.sh
parentdeployment works now (diff)
local manage script works
Diffstat (limited to 'src/manage.sh')
-rwxr-xr-xsrc/manage.sh123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/manage.sh b/src/manage.sh
new file mode 100755
index 0000000..9123cb8
--- /dev/null
+++ b/src/manage.sh
@@ -0,0 +1,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