diff options
-rw-r--r-- | libs/pkgmanager | 12 | ||||
-rwxr-xr-x | ltask | 10 | ||||
-rw-r--r-- | tasks/initial-user-setup | 2 | ||||
-rw-r--r-- | tasks/jenkins (renamed from tasks/apt-update) | 11 | ||||
-rw-r--r-- | tasks/system-update (renamed from tasks/update) | 18 | ||||
-rwxr-xr-x | tools/rexec.sh | 12 |
6 files changed, 41 insertions, 24 deletions
diff --git a/libs/pkgmanager b/libs/pkgmanager index 7c1efd3..7a5793a 100644 --- a/libs/pkgmanager +++ b/libs/pkgmanager @@ -1,5 +1,7 @@ # vi: ft=sh +shopt -s expand_aliases +alias sudo="sudo " PKGMAN="/bin/false" [ -f "/etc/os-release" ] && source /etc/os-release @@ -22,8 +24,8 @@ case $ID in ;; esac -alias pkg_install="sudo $PKGMAN $INSTALL_CMD" -alias pkg_remove="sudo $PKGMAN $REMOVE_CMD" -alias pkg_update="sudo $PKGMAN $UPDATE_CMD" -alias pkg_upgrade="sudo $PKGMAN $UPGRADE_CMD" -alias pkg_fullupgrade="sudo $PKGMAN $FULLUPGRADE_CMD" +alias pkg_install="$PKGMAN $INSTALL_CMD" +alias pkg_remove="$PKGMAN $REMOVE_CMD" +alias pkg_update="$PKGMAN $UPDATE_CMD" +alias pkg_upgrade="$PKGMAN $UPGRADE_CMD" +alias pkg_fullupgrade="$PKGMAN $FULLUPGRADE_CMD" @@ -109,7 +109,7 @@ for hoststring in "${HOSTS_UNIQUE[@]}"; do [ ! -z $port ] && rexecargs+="-p $port " rexecargs+="-i ${SSH_IDENTITY_FILE:=~/.ssh/id_rsa} " - [ ${#FILES[@]} -gt 0 ] && rexecargs+="-f \"${FIELS[@]}\" " + [ ${#FILES[@]} -gt 0 ] && for f in ${FILES[@]}; do rexecargs+="-f $f "; done [ ! -z $SSH_USER ] && rexecargs+="$SSH_USER@" rexecargs+="$hostname ${INCLUDES[@]} $TASK_DIR/$TASK" @@ -119,4 +119,12 @@ for hoststring in "${HOSTS_UNIQUE[@]}"; do echo echo $rexecargs $TOOL_DIR/rexec.sh $rexecargs + [ $? -ne 0 ] && FAILED_HOSTS+=($hostname) done + +if [ ${#FAILED_HOSTS[@]} -gt 0 ]; then + echo + echo Some hosts failed the task: + echo ${FAILED_HOSTS[@]} + exit 1 +fi diff --git a/tasks/initial-user-setup b/tasks/initial-user-setup index de3aee9..68a0d2a 100644 --- a/tasks/initial-user-setup +++ b/tasks/initial-user-setup @@ -5,7 +5,7 @@ function task_setup() { SSH_IDENTITY_FILE=$ASSET_DIR/id_jenkins FILES+=("$ASSET_DIR/id_user.pub" "$ASSET_DIR/id_jenkins.pub") - INCLUDES+=("pkgmanager") + INCLUDES+=("$INCLUDE_DIR/pkgmanager") TASK_ISSET="yes" } diff --git a/tasks/apt-update b/tasks/jenkins index 38693b3..5598a9e 100644 --- a/tasks/apt-update +++ b/tasks/jenkins @@ -1,8 +1,9 @@ #!/bin/bash function task_exec() { - sudo apt-get -y update - sudo apt-get -y upgrade + + cat id_jenkins.pub >> /home/server/.ssh/authorized_keys + } function task_setup() { @@ -11,8 +12,10 @@ function task_setup() { # $TOOL_DIR SSH_USER=server - SSH_IDENTITY_FILE=$ASSET_DIR/id_rsa - + SSH_IDENTITY_FILE=$ASSET_DIR/id_jenkins + + FILES+=("$ASSET_DIR/id_jenkins.pub") + TASK_ISSET="yes" } diff --git a/tasks/update b/tasks/system-update index e392b76..8244ca4 100644 --- a/tasks/update +++ b/tasks/system-update @@ -1,18 +1,26 @@ #!/bin/bash function task_exec() { - pkg_update - pkg_upgrade + ret=0 + sudo pkg_update + ret=$(($ret + $?)) + + sudo pkg_upgrade + ret=$(($ret + $?)) + + exit $ret } function task_setup() { + # Available environment variables + # $ASSET_DIR + # $TOOL_DIR + INCLUDES+=("$INCLUDE_DIR/pkgmanager") SSH_USER=server - #SSH_IDENTITY_FILE=$ASSET_DIR/id_rsa + SSH_IDENTITY_FILE=$ASSET_DIR/id_jenkins - FILES+=() - TASK_ISSET="yes" } diff --git a/tools/rexec.sh b/tools/rexec.sh index 98652c4..558540c 100755 --- a/tools/rexec.sh +++ b/tools/rexec.sh @@ -30,7 +30,7 @@ SSH="ssh $SSH_OPTIONS" SCRIPT_FILES=() SCRIPT_INTERPRETER=/bin/sh -FILES="" +FILES=() function parse_args() { for (( i=0; i < $ARGC;i++ )); do @@ -53,7 +53,7 @@ function parse_args() { SSH_IDENTITY=${ARGV[$i]};; -f) i=$((i+1)) - FILES="${ARGV[$i]}";; + FILES+=(${ARGV[$i]});; -h) print_help 0;; *) @@ -85,11 +85,7 @@ EOF parse_args -#[ ! -f $SCRIPT_FILE ] && echo \"$SCRIPT_FILE\" not found && exit 1 +[ ${#FILES[@]} -gt 0 ] && scp $SSH_OPTIONS -i $SSH_IDENTITY -P $SSH_PORT ${FILES[@]} $SSH_HOST: -#INTERPRETER_STRING=$(head -n 1 $SCRIPT_FILE) -#INTERPRETER_REGEX="^#!.*" -#[[ $INTERPRETER_STRING =~ $INTERPRETER_REGEX ]] && SCRIPT_INTERPRETER=$(tail -c +3 <<< $INTERPRETER_STRING) - -[ ! -z "$FILES" ] && scp -S "$SSH" -i $SSH_IDENTITY -P $SSH_PORT $FILES $SSH_HOST: cat ${SCRIPT_FILES[@]} | $SSH -p $SSH_PORT -i $SSH_IDENTITY $SSH_HOST "/bin/bash" +exit $? |