#!/bin/sh PROGNAME=$(basename $0) main() { local MODE # defaults for options ADE_MSG_VERBOSELEVEL=2 # process options while [ "X$1" != X ]; do case $1 in -v) ADE_MSG_VERBOSELEVEL=3 ;; --) shift; break ;; -*) usage ;; *) break ;; esac shift done # process arguments [ "X$1" != X -a "X$2" = X ] || usage case $1 in start|stop) : ;; *) usage ;; esac MODE=$1 # guts $MODE } usage() { { echo "Usage: $PROGNAME [ -v ] { start | stop }" } >&2 exit ${1:-1} } start_host() { info "starting $1 ..." vzctl --quiet start $(vzlist -aH -o 'hostname,veid' | sed -n "s/^$1 *//p") sleep 30 } stop_host() { info "stopping $1 ..." vzctl --quiet stop $(vzlist -aH -o 'hostname,veid' | sed -n "s/^$1 *//p") } start() { info "starting all core servers ..." # lumaconi is for logging and will be needed by all; it doesn't need DNS # ditalini provides DNS and is needed by all others (for logging) for H in lumaconi ditalini; do start_host $H done # Not sure how many need their logging restarting. for H in chifferi ditalini; do ssh -n $H /etc/init.d/sysklogd restart done # any machine using NFS is using automounter and is so also using NIS # Start mailserver before login server (as my cronjob runs on login server) for H in spirali nidi mista; do start_host $H done # NIS and automounter on chifferi could not be started until nidi was # running. for S in portmapper2 nfs-common nis autofs; do ssh -n chifferi /etc/init.d/$S start done # Start all the rest in any order info "starting all non-core servers ..." for H in $(vzlist -aH -o 'hostname,status' | sed -n 's/ *stopped//p'); do start_host $H done } stop() { # Stop all non-core servers info "stopping all non-core servers ..." for H in $(vzlist -aH -o 'hostname,status' | sed -n 's/ *running//p'); do case $H in lumaconi|ditalini|nidi|spirali|mista) : ;; *) stop_host $H ;; esac done # NIS and automounter on chifferi must be stopped before nidi is stopped. for S in autofs nis nfs-common portmapper2; do ssh -n chifferi /etc/init.d/$S stop done # Stop core servers info "stopping all core servers ..." for H in mista nidi spirali ditalini lumaconi; do stop_host $H done } debug() { [ ${ADE_MSG_VERBOSELEVEL:-2} -lt $1 ] || echo "$PROGNAME: DEBUG[$1]: $2" >&2; } info() { [ ${ADE_MSG_VERBOSELEVEL:-2} -lt 3 ] || echo "$PROGNAME: INFO: $1" >&2; } warning() { [ ${ADE_MSG_VERBOSELEVEL:-2} -lt 2 ] || echo "$PROGNAME: WARNING: $1" >&2; } error() { [ ${ADE_MSG_VERBOSELEVEL:-2} -lt 1 ] || echo "$PROGNAME: ERROR: $1" >&2; exit 1; } internal() { echo "$PROGNAME: INTERNAL ERROR: $1" >&2; exit 2; } main "$@"