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
+}
# 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
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:"
trashman_$ACTION
elif [ "$ACTION" = "merge" ]; then
trashman_$ACTION
+elif [ "$ACTION" = "deploy" ]; then
+ trashman_$ACTION $*
elif [ "$ACTION" = "version" ]; then
trashman_$ACTION
else