]> gitweb.fluxo.info Git - hydra.git/commitdiff
Mass: check if current host is localhost
authorSilvio Rhatto <rhatto@riseup.net>
Wed, 5 Oct 2016 15:08:00 +0000 (12:08 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Wed, 5 Oct 2016 15:08:00 +0000 (12:08 -0300)
doc/todo.rst
share/hydra/mass

index e064e46ff15295807c1288a6cab3bfdbf670aa5e..28fed93416d5a0c9f62f713729dbf17f25b0faa1 100644 (file)
@@ -1,7 +1,6 @@
 TODO
 ====
 
-- mass: check if current host is localhost.
 - mount-media: lvm support.
 - import-certs:
   - concat.pem.
index ba5bddd85016d27db14a2d38ef9c4c316ca28cc1..871468c66d3ecd5b86b69b6c7383e08f30ae7656 100755 (executable)
@@ -43,11 +43,23 @@ function mass_mussh {
 }
 
 # Set nodes
-function set_nodes {
+function mass_set_nodes {
   hydra_set_tmpfile nodes
   hydra $HYDRA nodes $1 > $TMPWORK
 }
 
+# Execute command on localhost
+function mass_exec_localhost {
+  if grep -q -e "^$LOCAL$" $TMPWORK; then
+    # Remove localhost from node list
+    grep -v -e "^$LOCAL$" $TMPWORK > $TMPWORK.tmp
+    mv $TMPWORK.tmp $TMPWORK
+
+    echo "Issuing command on localhost..."
+    $SUDO $COMMAND
+  fi
+}
+
 # Load
 source $APP_BASE/lib/hydra/functions || exit 1
 hydra_config_load
@@ -58,16 +70,26 @@ COMMAND="$*"
 
 # Initial node list
 BASEDIR="/tmp"
-set_nodes
+LOCAL="`facter fqdn`"
+mass_set_nodes
+
+# Set sudo config
+if [ "$WHOAMI" != 'root' ]; then
+  sudo="sudo"
+else
+  echo "Sorry, cannot run as root"
+  exit 1
+fi
 
 # Validation
 if [ "$BASENAME" == "mass-upgrade" ]; then
   COMMAND="DEBIAN_FRONTEND=noninteractive hydractl upgrade clean"
 elif [ "$BASENAME" == "mass-web" ]; then
-  set_nodes web
+  mass_set_nodes web
 fi
 
 # Execute commands in hosts
 echo "Issuing $COMMAND on multiple nodes..."
-mass_pssh $COMMAND
+mass_exec_localhost
+mass_pssh
 hydra_unset_tmpfile $TMPWORK