]> gitweb.fluxo.info Git - hydra.git/commitdiff
Nodes and mass updates
authorSilvio Rhatto <rhatto@riseup.net>
Sun, 14 Nov 2010 16:50:55 +0000 (14:50 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Sun, 14 Nov 2010 16:50:55 +0000 (14:50 -0200)
share/hydra/mass
share/hydra/nodes

index 06447c2aa3a863acb38e77b28f16ab039ea6f8c2..9b87d4a8b9c4c68bc0c8213e838a49c943ba9f93 100755 (executable)
@@ -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
index 6b9d1012a0ae205b765dd8e7d5b72342ee8f6c74..84eb7f0a0b558aa1d96e2cb147b5c4147e4e5b3b 100755 (executable)
@@ -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