log output of stack.sh to logfile in current dir
use the variable LOGFILE to log stack.sh output for debugging
This commit is contained in:
parent
c4e47ab858
commit
7c481189bd
1 changed files with 62 additions and 43 deletions
105
stack.sh
105
stack.sh
|
@ -40,48 +40,6 @@ if [ ! -d $FILES ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OpenStack is designed to be run as a regular user (Dashboard will fail to run
|
|
||||||
# as root, since apache refused to startup serve content from root user). If
|
|
||||||
# stack.sh is run as root, it automatically creates a stack user with
|
|
||||||
# sudo privileges and runs as that user.
|
|
||||||
|
|
||||||
if [[ $EUID -eq 0 ]]; then
|
|
||||||
echo "You are running this script as root."
|
|
||||||
|
|
||||||
# since this script runs as a normal user, we need to give that user
|
|
||||||
# ability to run sudo
|
|
||||||
apt-get update
|
|
||||||
apt-get install -qqy sudo
|
|
||||||
|
|
||||||
if ! getent passwd | grep -q stack; then
|
|
||||||
echo "Creating a user called stack"
|
|
||||||
useradd -U -G sudo -s /bin/bash -m stack
|
|
||||||
fi
|
|
||||||
echo "Giving stack user passwordless sudo priviledges"
|
|
||||||
echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
||||||
|
|
||||||
echo "Copying files to stack user"
|
|
||||||
cp -r -f `pwd` /home/stack/
|
|
||||||
THIS_DIR=$(basename $(dirname $(readlink -f $0)))
|
|
||||||
chown -R stack /home/stack/$THIS_DIR
|
|
||||||
echo "Running the script as stack in 3 seconds..."
|
|
||||||
sleep 3
|
|
||||||
if [[ "$SHELL_AFTER_RUN" != "no" ]]; then
|
|
||||||
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh; bash" stack
|
|
||||||
else
|
|
||||||
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh" stack
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# So that errors don't compound we exit on any errors so you see only the
|
|
||||||
# first error that occured.
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
# Print the commands being run so that we can see the command that triggers
|
|
||||||
# an error. It is also useful for following allowing as the install occurs.
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
# Settings
|
# Settings
|
||||||
# ========
|
# ========
|
||||||
|
|
||||||
|
@ -112,6 +70,56 @@ set -o xtrace
|
||||||
# of letting devstack generate random ones for you.
|
# of letting devstack generate random ones for you.
|
||||||
source ./stackrc
|
source ./stackrc
|
||||||
|
|
||||||
|
LOGFILE=${LOGFILE:-"$PWD/stack.sh.$$.log"}
|
||||||
|
(
|
||||||
|
# So that errors don't compound we exit on any errors so you see only the
|
||||||
|
# first error that occured.
|
||||||
|
trap failed ERR
|
||||||
|
failed() {
|
||||||
|
local r=$?
|
||||||
|
set +o xtrace
|
||||||
|
[ -n "$LOGFILE" ] && echo "${0##*/} failed: full log in $LOGFILE"
|
||||||
|
exit $r
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print the commands being run so that we can see the command that triggers
|
||||||
|
# an error. It is also useful for following along as the install occurs.
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# OpenStack is designed to be run as a regular user (Dashboard will fail to run
|
||||||
|
# as root, since apache refused to startup serve content from root user). If
|
||||||
|
# stack.sh is run as root, it automatically creates a stack user with
|
||||||
|
# sudo privileges and runs as that user.
|
||||||
|
|
||||||
|
if [[ $EUID -eq 0 ]]; then
|
||||||
|
echo "You are running this script as root."
|
||||||
|
|
||||||
|
# since this script runs as a normal user, we need to give that user
|
||||||
|
# ability to run sudo
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y sudo
|
||||||
|
|
||||||
|
if ! getent passwd | grep -q stack; then
|
||||||
|
echo "Creating a user called stack"
|
||||||
|
useradd -U -G sudo -s /bin/bash -m stack
|
||||||
|
fi
|
||||||
|
echo "Giving stack user passwordless sudo priviledges"
|
||||||
|
echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
|
|
||||||
|
echo "Copying files to stack user"
|
||||||
|
cp -r -f `pwd` /home/stack/
|
||||||
|
THIS_DIR=$(basename $(dirname $(readlink -f $0)))
|
||||||
|
chown -R stack /home/stack/$THIS_DIR
|
||||||
|
echo "Running the script as stack in 3 seconds..."
|
||||||
|
sleep 3
|
||||||
|
if [[ "$SHELL_AFTER_RUN" != "no" ]]; then
|
||||||
|
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh; bash" stack
|
||||||
|
else
|
||||||
|
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh" stack
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Destination path for installation ``DEST``
|
# Destination path for installation ``DEST``
|
||||||
DEST=${DEST:-/opt/stack}
|
DEST=${DEST:-/opt/stack}
|
||||||
sudo mkdir -p $DEST
|
sudo mkdir -p $DEST
|
||||||
|
@ -663,5 +671,16 @@ fi
|
||||||
# Fin
|
# Fin
|
||||||
# ===
|
# ===
|
||||||
|
|
||||||
|
|
||||||
|
) 2>&1 | tee "${LOGFILE}"
|
||||||
|
|
||||||
|
# because of the way pipes work, the left side of the pipe may
|
||||||
|
# have failed, but 'tee' will succeed. We need to check that.
|
||||||
|
for ret in "${PIPESTATUS[@]}"; do
|
||||||
|
[ $ret -eq 0 ] || exit $ret
|
||||||
|
done
|
||||||
|
|
||||||
# indicate how long this took to run (bash maintained variable 'SECONDS')
|
# indicate how long this took to run (bash maintained variable 'SECONDS')
|
||||||
echo "stack.sh completed in $SECONDS seconds."
|
echo "stack.sh completed in $SECONDS seconds." | tee -a "${LOGFILE}"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
Loading…
Reference in a new issue