diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2010-11-14 14:50:55 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2010-11-14 14:50:55 -0200 |
commit | 2c1c916fc6b0a11ca572ede5a95e63b46fa1e61d (patch) | |
tree | e7b8ea9677150f7e234ff4e59a22a2a92f5a724e | |
parent | dbf0e0cb984c7be0f805f58d20e65b6780dc6f77 (diff) | |
download | hydra-2c1c916fc6b0a11ca572ede5a95e63b46fa1e61d.tar.gz hydra-2c1c916fc6b0a11ca572ede5a95e63b46fa1e61d.tar.bz2 |
Nodes and mass updates
-rwxr-xr-x | share/hydra/mass | 15 | ||||
-rwxr-xr-x | 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 |