]> gitweb.fluxo.info Git - trashman.git/commitdiff
Adds deploy action
authorSilvio Rhatto <rhatto@riseup.net>
Sat, 3 Nov 2018 17:01:54 +0000 (14:01 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sat, 3 Nov 2018 17:01:54 +0000 (14:01 -0300)
share/trashman/trashman/functions
trashman

index 78d527ba6b11ce12e9f7f95cc6cd47a0e402b07a..61102e9533dc84029419965dc0428d1810176b49 100644 (file)
@@ -224,3 +224,39 @@ trashman_check_sudo () {
     export SUDO="sudo"
   fi
 }
+
+# Deploy to a remote server
+trashman_deploy () {
+  SERVER="$2"
+  RSYNC_PATH="sudo rsync"
+  DEPLOY_RSYNC="rsync -rltDv --no-perms --no-owner --delete --rsync-path"
+  SSH="ssh -T -q -o ConnectTimeout=15"
+
+  trashman_echo "Deploying to $SERVER..."
+
+  # Check remote environment
+  $SSH $SERVER <<EOF
+  ##### BEGIN REMOTE SCRIPT #####
+  # Check for passwordless sudo
+  # See references like https://raymii.org/s/articles/Check_if_passwordless_sudo_can_be_used_in_a_bash_script_or_nagios_check.html
+  if ! sudo -n true; then
+    echo "Please set passwordless sudo on $SERVER."
+    echo "You can do that by adding the following line on /etc/sudoers.d/local:"
+    echo ""
+    echo "%sudo ALL=NOPASSWD: ALL"
+    echo ""
+    echo "And make sure your user is included in the 'sudo' group."
+    exit 1
+  fi
+  ##### END REMOTE SCRIPT #######
+EOF
+
+  # Check connection
+  if [ "$?" != "0" ]; then
+    trashman_echo "Error connecting or setting up $FQDN."
+    exit 1
+  fi
+
+  $DEPLOY_RSYNC "$RSYNC_PATH" $APP_BASE/ $SERVER:/usr/local/share/trashman/
+  $SSH $SERVER sudo /usr/local/share/trashman/trashman install trashman
+}
index b38a410e6cbe0740cec9ce3afae6d49ab0244d82..e9ace0b9a6511fa953898c9347b27daf40bbffb2 100755 (executable)
--- a/trashman
+++ b/trashman
@@ -27,12 +27,14 @@ CWD="`pwd`"
 # Set shared files location
 if [ -e "`dirname $(readlink -f $0)`/share/$NAME" ]; then
   # Development or local installation layout
-  LIB="`dirname $(readlink -f $0)`/share/$NAME"
-  SHARE="`dirname $(readlink -f $0)`/share/$BASENAME"
+  APP_BASE="`dirname $(readlink -f $0)`"
+  LIB="$APP_BASE/share/$NAME"
+  SHARE="$APP_BASE/share/$BASENAME"
 else
   # System installation layout
-  LIB="`dirname $(readlink -f $0)`/../share/$NAME"
-  SHARE="`dirname $(readlink -f $0)`/../share/$BASENAME"
+  APP_BASE="`dirname $(readlink -f $0)`"
+  LIB="$APP_BASE/../share/$NAME"
+  SHARE="$APP_BASE/../share/$BASENAME"
 fi
 
 # Include basic functions
@@ -43,6 +45,7 @@ trashman_usage() {
   echo "$BASENAME: package ports tree and heterodox configuration provisioner"
   echo ""
   echo "usage: $BASENAME <fetch|merge>"
+  echo "usage: $BASENAME <deploy> <hostname>"
   echo "usage: $BASENAME <action> [<package1> ... <packageN>] [<--param1=value1> ... <--paramM=valueM>]"
   echo ""
   echo "available packages:"
@@ -65,6 +68,8 @@ elif [ "$ACTION" = "fetch" ]; then
   trashman_$ACTION
 elif [ "$ACTION" = "merge" ]; then
   trashman_$ACTION
+elif [ "$ACTION" = "deploy" ]; then
+  trashman_$ACTION $*
 elif [ "$ACTION" = "version" ]; then
   trashman_$ACTION
 else