increase logging verbosity and error handling
This commit is contained in:
@@ -84,7 +84,7 @@ function CheckUser {
|
|||||||
|
|
||||||
function scriptInfo {
|
function scriptInfo {
|
||||||
|
|
||||||
SCRIPTVERSION=$(runcmd_nolog "cd '$(dirname "$0")' 2>/dev/null && git rev-parse --short HEAD 2>/dev/null")
|
SCRIPTVERSION=$(runcmd_stdout "cd '$(dirname "$0")' 2>/dev/null && git rev-parse --short HEAD 2>/dev/null")
|
||||||
|
|
||||||
[ -z "$SCRIPTVERSION" ] && SCRIPTVERSION="undefined"
|
[ -z "$SCRIPTVERSION" ] && SCRIPTVERSION="undefined"
|
||||||
echo "Running script version $SCRIPTVERSION with config:" >> "$LOGFILE"
|
echo "Running script version $SCRIPTVERSION with config:" >> "$LOGFILE"
|
||||||
@@ -97,13 +97,13 @@ function scriptInfo {
|
|||||||
function runcmd {
|
function runcmd {
|
||||||
|
|
||||||
echo "+ $1" >>"$LOGFILE"
|
echo "+ $1" >>"$LOGFILE"
|
||||||
bash -c "$1" >>"$LOGFILE" 2>&1
|
bash -c -o pipefail "$1" >>"$LOGFILE" 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
function runcmd_nolog {
|
function runcmd_stdout {
|
||||||
|
|
||||||
echo "+ $1" >>"$LOGFILE"
|
echo "+ $1" >>"$LOGFILE"
|
||||||
bash -c "$1" 2>>"$LOGFILE"
|
bash -c -o pipefail "$1" 2>>"$LOGFILE" | tee -a "$LOGFILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
function printprog {
|
function printprog {
|
||||||
@@ -154,7 +154,7 @@ function InstallDependenciesRPM {
|
|||||||
printok "Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
|
printok "Installing build dependencies, redis server, python, git, nfs-utils, cifs-utils"
|
||||||
|
|
||||||
# only run automated node install if executable not found
|
# only run automated node install if executable not found
|
||||||
if [[ -z $(runcmd_nolog "command -v node") ]]; then
|
if [[ -z $(runcmd_stdout "command -v node") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing node.js"
|
printprog "Installing node.js"
|
||||||
runcmd "curl -s -L https://rpm.nodesource.com/setup_${NODEVERSION}.x | bash -"
|
runcmd "curl -s -L https://rpm.nodesource.com/setup_${NODEVERSION}.x | bash -"
|
||||||
@@ -164,7 +164,7 @@ function InstallDependenciesRPM {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# only install yarn repo and package if not found
|
# only install yarn repo and package if not found
|
||||||
if [[ -z $(runcmd_nolog "command -v yarn") ]] ; then
|
if [[ -z $(runcmd_stdout "command -v yarn") ]] ; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing yarn"
|
printprog "Installing yarn"
|
||||||
runcmd "curl -s -o /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo && yum -y install yarn"
|
runcmd "curl -s -o /etc/yum.repos.d/yarn.repo https://dl.yarnpkg.com/rpm/yarn.repo && yum -y install yarn"
|
||||||
@@ -172,7 +172,7 @@ function InstallDependenciesRPM {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# only install epel-release if doesn't exist
|
# only install epel-release if doesn't exist
|
||||||
if [[ -z $(runcmd_nolog "rpm -q epel-release") ]] ; then
|
if [[ -z $(runcmd_stdout "rpm -q epel-release") ]] ; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing epel-repo"
|
printprog "Installing epel-repo"
|
||||||
runcmd "yum -y install epel-release"
|
runcmd "yum -y install epel-release"
|
||||||
@@ -180,7 +180,7 @@ function InstallDependenciesRPM {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# only install libvhdi-tools if vhdimount is not present
|
# only install libvhdi-tools if vhdimount is not present
|
||||||
if [[ -z $(runcmd_nolog "command -v vhdimount") ]] ; then
|
if [[ -z $(runcmd_stdout "command -v vhdimount") ]] ; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing libvhdi-tools from forensics repository"
|
printprog "Installing libvhdi-tools from forensics repository"
|
||||||
runcmd "rpm -ivh https://forensics.cert.org/cert-forensics-tools-release-el8.rpm"
|
runcmd "rpm -ivh https://forensics.cert.org/cert-forensics-tools-release-el8.rpm"
|
||||||
@@ -248,7 +248,7 @@ function InstallDependenciesDeb {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# install setcap for non-root port binding if missing
|
# install setcap for non-root port binding if missing
|
||||||
if [[ -z $(runcmd_nolog "command -v setcap") ]]; then
|
if [[ -z $(runcmd_stdout "command -v setcap") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing setcap"
|
printprog "Installing setcap"
|
||||||
runcmd "apt-get install -y libcap2-bin"
|
runcmd "apt-get install -y libcap2-bin"
|
||||||
@@ -257,7 +257,7 @@ function InstallDependenciesDeb {
|
|||||||
|
|
||||||
|
|
||||||
# only run automated node install if executable not found
|
# only run automated node install if executable not found
|
||||||
if [[ -z $(runcmd_nolog "command -v node") ]] || [[ -z $(runcmd_nolog "command -v npm") ]]; then
|
if [[ -z $(runcmd_stdout "command -v node") ]] || [[ -z $(runcmd_stdout "command -v npm") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing node.js"
|
printprog "Installing node.js"
|
||||||
runcmd "curl -sL https://deb.nodesource.com/setup_${NODEVERSION}.x | bash -"
|
runcmd "curl -sL https://deb.nodesource.com/setup_${NODEVERSION}.x | bash -"
|
||||||
@@ -268,7 +268,7 @@ function InstallDependenciesDeb {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# only install yarn repo and package if not found
|
# only install yarn repo and package if not found
|
||||||
if [[ -z $(runcmd_nolog "command -v yarn") ]]; then
|
if [[ -z $(runcmd_stdout "command -v yarn") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Installing yarn"
|
printprog "Installing yarn"
|
||||||
runcmd "curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -"
|
runcmd "curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -"
|
||||||
@@ -359,8 +359,8 @@ function InstallAdditionalXOPlugins {
|
|||||||
|
|
||||||
local ADDITIONAL_PLUGINSARRAY=($(echo "$ADDITIONAL_PLUGINS" | tr ',' ' '))
|
local ADDITIONAL_PLUGINSARRAY=($(echo "$ADDITIONAL_PLUGINS" | tr ',' ' '))
|
||||||
for x in "${ADDITIONAL_PLUGINSARRAY[@]}"; do
|
for x in "${ADDITIONAL_PLUGINSARRAY[@]}"; do
|
||||||
local PLUGIN_NAME=$(runcmd_nolog "basename '$x' | rev | cut -c 5- | rev")
|
local PLUGIN_NAME=$(runcmd_stdout "basename '$x' | rev | cut -c 5- | rev")
|
||||||
local PLUGIN_SRC_DIR=$(runcmd_nolog "realpath -m '$XO_SRC_DIR/../$PLUGIN_NAME'")
|
local PLUGIN_SRC_DIR=$(runcmd_stdout "realpath -m '$XO_SRC_DIR/../$PLUGIN_NAME'")
|
||||||
|
|
||||||
if [[ ! -d "$PLUGIN_SRC_DIR" ]]; then
|
if [[ ! -d "$PLUGIN_SRC_DIR" ]]; then
|
||||||
runcmd "mkdir -p \"$PLUGIN_SRC_DIR\""
|
runcmd "mkdir -p \"$PLUGIN_SRC_DIR\""
|
||||||
@@ -415,7 +415,7 @@ function InstallXO {
|
|||||||
# Create user if doesn't exist (if defined)
|
# Create user if doesn't exist (if defined)
|
||||||
|
|
||||||
if [[ "$XOUSER" != "root" ]]; then
|
if [[ "$XOUSER" != "root" ]]; then
|
||||||
if [[ -z $(getent passwd "$XOUSER") ]]; then
|
if [[ -z $(runcmd_stdout "getent passwd $XOUSER") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Creating missing $XOUSER user"
|
printprog "Creating missing $XOUSER user"
|
||||||
runcmd "useradd -s /sbin/nologin $XOUSER -m"
|
runcmd "useradd -s /sbin/nologin $XOUSER -m"
|
||||||
@@ -458,7 +458,7 @@ function InstallXO {
|
|||||||
|
|
||||||
if [[ "$BRANCH" == "release" ]]; then
|
if [[ "$BRANCH" == "release" ]]; then
|
||||||
runcmd "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME"
|
runcmd "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME"
|
||||||
TAG=$(runcmd_nolog "git describe --tags '$(git rev-list --tags --max-count=1)'")
|
TAG=$(runcmd_stdout "git describe --tags '$(git rev-list --tags --max-count=1)'")
|
||||||
|
|
||||||
echo
|
echo
|
||||||
printinfo "Checking out latest tagged release '$TAG'"
|
printinfo "Checking out latest tagged release '$TAG'"
|
||||||
@@ -479,15 +479,15 @@ function InstallXO {
|
|||||||
|
|
||||||
# Get the commit ID of the to-be-installed xen-orchestra.
|
# Get the commit ID of the to-be-installed xen-orchestra.
|
||||||
# runcmd "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME"
|
# runcmd "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME"
|
||||||
NEW_REPO_HASH=$(runcmd_nolog "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME && git rev-parse HEAD")
|
NEW_REPO_HASH=$(runcmd_stdout "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME && git rev-parse HEAD")
|
||||||
NEW_REPO_HASH_SHORT=$(runcmd_nolog "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME && git rev-parse --short HEAD")
|
NEW_REPO_HASH_SHORT=$(runcmd_stdout "cd $INSTALLDIR/xo-builds/xen-orchestra-$TIME && git rev-parse --short HEAD")
|
||||||
runcmd "cd $(dirname "$0")"
|
runcmd "cd $(dirname "$0")"
|
||||||
|
|
||||||
# Get the commit ID of the currently-installed xen-orchestra (if one
|
# Get the commit ID of the currently-installed xen-orchestra (if one
|
||||||
# exists).
|
# exists).
|
||||||
if [[ -L "$INSTALLDIR/xo-server" ]] && [[ -n $(readlink -e "$INSTALLDIR/xo-server") ]]; then
|
if [[ -L "$INSTALLDIR/xo-server" ]] && [[ -n $(runcmd_stdout "readlink -e $INSTALLDIR/xo-server") ]]; then
|
||||||
OLD_REPO_HASH=$(runcmd_nolog "cd $INSTALLDIR/xo-server && git rev-parse HEAD")
|
OLD_REPO_HASH=$(runcmd_stdout "cd $INSTALLDIR/xo-server && git rev-parse HEAD")
|
||||||
OLD_REPO_HASH_SHORT=$(runcmd_nolog "cd $INSTALLDIR/xo-server && git rev-parse --short HEAD")
|
OLD_REPO_HASH_SHORT=$(runcmd_stdout "cd $INSTALLDIR/xo-server && git rev-parse --short HEAD")
|
||||||
runcmd "cd $(dirname "$0")"
|
runcmd "cd $(dirname "$0")"
|
||||||
else
|
else
|
||||||
# If there's no existing installation, then we definitely want
|
# If there's no existing installation, then we definitely want
|
||||||
@@ -524,7 +524,7 @@ function InstallXO {
|
|||||||
|
|
||||||
# Now that we know we're going to be building a new xen-orchestra, make
|
# Now that we know we're going to be building a new xen-orchestra, make
|
||||||
# sure there's no already-running xo-server process.
|
# sure there's no already-running xo-server process.
|
||||||
if [[ $(pgrep -f xo-server) ]]; then
|
if [[ $(runcmd_stdout "pgrep -f xo-server") ]]; then
|
||||||
echo
|
echo
|
||||||
printprog "Shutting down xo-server"
|
printprog "Shutting down xo-server"
|
||||||
/bin/systemctl stop xo-server || { printfail "failed to stop service, exiting..." ; exit 1; }
|
/bin/systemctl stop xo-server || { printfail "failed to stop service, exiting..." ; exit 1; }
|
||||||
@@ -574,9 +574,9 @@ function InstallXO {
|
|||||||
runcmd "sed -i \"/SyslogIdentifier=.*/a User=$XOUSER\" $INSTALLDIR/xo-builds/xen-orchestra-$TIME/packages/xo-server/xo-server.service"
|
runcmd "sed -i \"/SyslogIdentifier=.*/a User=$XOUSER\" $INSTALLDIR/xo-builds/xen-orchestra-$TIME/packages/xo-server/xo-server.service"
|
||||||
|
|
||||||
if [ "$PORT" -le "1024" ]; then
|
if [ "$PORT" -le "1024" ]; then
|
||||||
NODEBINARY=$(runcmd_nolog "command -v node")
|
NODEBINARY=$(runcmd_stdout "command -v node")
|
||||||
if [[ -L "$NODEBINARY" ]]; then
|
if [[ -L "$NODEBINARY" ]]; then
|
||||||
NODEBINARY=$(runcmd_nolog "readlink -e $NODEBINARY")
|
NODEBINARY=$(runcmd_stdout "readlink -e $NODEBINARY")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "$NODEBINARY" ]]; then
|
if [[ -n "$NODEBINARY" ]]; then
|
||||||
@@ -806,7 +806,7 @@ function RollBackInstallation {
|
|||||||
|
|
||||||
set -uo pipefail
|
set -uo pipefail
|
||||||
|
|
||||||
INSTALLATIONS=($(runcmd_nolog "find '$INSTALLDIR/xo-builds/' -maxdepth 1 -type d -name 'xen-orchestra-*'"))
|
INSTALLATIONS=($(runcmd_stdout "find '$INSTALLDIR/xo-builds/' -maxdepth 1 -type d -name 'xen-orchestra-*'"))
|
||||||
|
|
||||||
if [[ ${#INSTALLATIONS[@]} -le 1 ]]; then
|
if [[ ${#INSTALLATIONS[@]} -le 1 ]]; then
|
||||||
printinfo "One or less installations exist, nothing to change"
|
printinfo "One or less installations exist, nothing to change"
|
||||||
@@ -844,14 +844,14 @@ function RollBackInstallation {
|
|||||||
|
|
||||||
function CheckOS {
|
function CheckOS {
|
||||||
|
|
||||||
OSVERSION=$(runcmd_nolog "grep ^VERSION_ID /etc/os-release | cut -d'=' -f2 | grep -Eo '[0-9]{1,2}' | head -1")
|
OSVERSION=$(runcmd_stdout "grep ^VERSION_ID /etc/os-release | cut -d'=' -f2 | grep -Eo '[0-9]{1,2}' | head -1")
|
||||||
OSNAME=$(runcmd_nolog "grep ^NAME /etc/os-release | cut -d'=' -f2 | sed 's/\"//g' | awk '{print \$1}'")
|
OSNAME=$(runcmd_stdout "grep ^NAME /etc/os-release | cut -d'=' -f2 | sed 's/\"//g' | awk '{print \$1}'")
|
||||||
|
|
||||||
if [[ $(runcmd_nolog "command -v yum") ]]; then
|
if [[ $(runcmd_stdout "command -v yum") ]]; then
|
||||||
PKG_FORMAT="rpm"
|
PKG_FORMAT="rpm"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(runcmd_nolog "command -v apt-get") ]]; then
|
if [[ $(runcmd_stdout "command -v apt-get") ]]; then
|
||||||
PKG_FORMAT="deb"
|
PKG_FORMAT="deb"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -899,7 +899,7 @@ function CheckOS {
|
|||||||
|
|
||||||
function CheckXE {
|
function CheckXE {
|
||||||
|
|
||||||
if [[ $(runcmd_nolog "command -v xe") ]]; then
|
if [[ $(runcmd_stdout "command -v xe") ]]; then
|
||||||
printfail "xe binary found, don't try to run install on xcp-ng/xenserver host. use xo-appliance.sh instead"
|
printfail "xe binary found, don't try to run install on xcp-ng/xenserver host. use xo-appliance.sh instead"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -911,7 +911,7 @@ function CheckArch {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(uname -m) != "x86_64" ]]; then
|
if [[ $(runcmd_stdout "uname -m") != "x86_64" ]]; then
|
||||||
printfail "Installation supports only x86_64. You seem to be running architecture: $(uname -m)"
|
printfail "Installation supports only x86_64. You seem to be running architecture: $(uname -m)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -919,7 +919,7 @@ function CheckArch {
|
|||||||
|
|
||||||
function CheckSystemd {
|
function CheckSystemd {
|
||||||
|
|
||||||
if [[ -z $(command -v systemctl) ]]; then
|
if [[ -z $(runcmd_stdout "command -v systemctl") ]]; then
|
||||||
printfail "This tool is designed to work with systemd enabled systems only"
|
printfail "This tool is designed to work with systemd enabled systems only"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -927,8 +927,8 @@ function CheckSystemd {
|
|||||||
|
|
||||||
function CheckCertificate {
|
function CheckCertificate {
|
||||||
if [[ "$HTTPS" == "true" ]]; then
|
if [[ "$HTTPS" == "true" ]]; then
|
||||||
local CERT="$(openssl x509 -modulus -noout -in "$PATH_TO_HTTPS_CERT" | openssl md5)"
|
local CERT="$(runcmd_stdout "openssl x509 -modulus -noout -in $PATH_TO_HTTPS_CERT | openssl md5")"
|
||||||
local KEY="$(openssl rsa -modulus -noout -in "$PATH_TO_HTTPS_KEY" | openssl md5)"
|
local KEY="$(runcmd_stdout "openssl rsa -modulus -noout -in $PATH_TO_HTTPS_KEY | openssl md5")"
|
||||||
if [[ "$CERT" != "$KEY" ]]; then
|
if [[ "$CERT" != "$KEY" ]]; then
|
||||||
echo
|
echo
|
||||||
printinfo "$PATH_TO_HTTPS_CERT:"
|
printinfo "$PATH_TO_HTTPS_CERT:"
|
||||||
@@ -944,7 +944,7 @@ function CheckCertificate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function CheckMemory {
|
function CheckMemory {
|
||||||
SYSMEM=$(runcmd_nolog "grep MemTotal /proc/meminfo | awk '{print \$2}'")
|
SYSMEM=$(runcmd_stdout "grep MemTotal /proc/meminfo | awk '{print \$2}'")
|
||||||
|
|
||||||
if [[ "$SYSMEM" -lt 3000000 ]]; then
|
if [[ "$SYSMEM" -lt 3000000 ]]; then
|
||||||
echo
|
echo
|
||||||
@@ -967,7 +967,7 @@ function CheckMemory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function CheckDiskFree {
|
function CheckDiskFree {
|
||||||
FREEDISK=$(runcmd_nolog "df -P -k '${INSTALLDIR%/*}' | tail -1 | awk '{print \$4}'")
|
FREEDISK=$(runcmd_stdout "df -P -k '${INSTALLDIR%/*}' | tail -1 | awk '{print \$4}'")
|
||||||
|
|
||||||
if [[ "$FREEDISK" -lt 1048576 ]]; then
|
if [[ "$FREEDISK" -lt 1048576 ]]; then
|
||||||
echo
|
echo
|
||||||
|
Reference in New Issue
Block a user