aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2018-11-03 14:01:54 -0300
committerSilvio Rhatto <rhatto@riseup.net>2018-11-03 14:01:54 -0300
commit8cc6611b3db7b7564150dad241e12970ca1981d9 (patch)
tree6161cbee273aaf6ac709d1b66a59b40bf65628e0
parente7e6b260614a589e035fcd2febb74fda827a18e4 (diff)
downloadtrashman-8cc6611b3db7b7564150dad241e12970ca1981d9.tar.gz
trashman-8cc6611b3db7b7564150dad241e12970ca1981d9.tar.bz2
Adds deploy action
-rw-r--r--share/trashman/trashman/functions36
-rwxr-xr-xtrashman13
2 files changed, 45 insertions, 4 deletions
diff --git a/share/trashman/trashman/functions b/share/trashman/trashman/functions
index 78d527b..61102e9 100644
--- a/share/trashman/trashman/functions
+++ b/share/trashman/trashman/functions
@@ -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
+}
diff --git a/trashman b/trashman
index b38a410..e9ace0b 100755
--- 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