From 2c1c916fc6b0a11ca572ede5a95e63b46fa1e61d Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 14 Nov 2010 14:50:55 -0200 Subject: Nodes and mass updates --- share/hydra/mass | 15 +++++++-------- share/hydra/nodes | 35 ++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/share/hydra/mass b/share/hydra/mass index 06447c2..9b87d4a 100755 --- a/share/hydra/mass +++ b/share/hydra/mass @@ -17,7 +17,7 @@ function mass_loop { for node in $NODES; do echo "Issuing $COMMAND on multiple nodes..." echo "Connecting to $node..." - ssh -o ConnectTimeout=15 $node $COMMAND + ssh -o ConnectTimeout=15 $node sudo $COMMAND done } @@ -29,18 +29,17 @@ hydra_config_load BASENAME="`basename $0`" COMMAND="$*" +# Initial node list +NODES="`hydra $HYDRA nodes`" + # Validation if [ "$BASENAME" == "mass-update" ]; then - COMMAND="sudo aptitude update" + COMMAND="aptitude update" elif [ "$BASENAME" == "mass-update" ]; then - COMMAND="sudo aptitude safe-upgrade" + COMMAND="aptitude safe-upgrade" elif [ "$BASENAME" == "mass-web" ]; then - echo "Currently not implemented." - exit 1 + NODES="`hydra $HYDRA nodes web`" fi -# Build node list -NODES="`hydra $HYDRA nodes`" - # Execute commands in hosts mass_loop $COMMAND diff --git a/share/hydra/nodes b/share/hydra/nodes index 6b9d101..84eb7f0 100755 --- a/share/hydra/nodes +++ b/share/hydra/nodes @@ -3,26 +3,47 @@ # Node tool. # -# Default node retrieval method -function hydra_get_nodes { - # See http://www.mail-archive.com/puppet-users@googlegroups.com/msg01615.html +# Get a list of puppet node files +function hydra_node_files { if [ -d "$PUPPET/manifests/nodes/" ]; then - files="$PUPPET/manifests/nodes/*" + FILES="$PUPPET/manifests/nodes/*" else - files="`find $PUPPET -name 'nodes.pp'`" + FILES="`find $PUPPET -name 'nodes.pp'`" fi - grep ^node $files | sed -e 's/^node //' | awk -F, '{for(i=1;i<=NF;i++) {print $i}}' | cut -d "'" -f2 +} + +# Get all lines matching a node definition +function hydra_node_lines { + # See http://www.mail-archive.com/puppet-users@googlegroups.com/msg01615.html + grep ^node $FILES | sed -e 's/^node //' | awk -F, '{for(i=1;i<=NF;i++) {print $i}}' +} + +# Default node retrieval method +function hydra_nodes { + hydra_node_lines | cut -d "'" -f2 } # Load source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load +# Command line arguments +CLASS="$1" + # Validation if [ -z "$PUPPET" ]; then echo "No PUPPET parameter defined at $HYDRA preferences." exit 1 fi +# Get initial file list +hydra_node_files + # Get nodes -hydra_get_nodes +if [ ! -z "$CLASS" ]; then + FILES="`hydra_node_lines | cut -d ':' -f 1`" + FILES="`grep nodo::$CLASS $FILES | cut -d ':' -f 1`" + hydra_nodes +else + hydra_nodes +fi -- cgit v1.2.3