Files
awx/tools/scripts/ansible-tower-service
James Laska 81c4abfed8 Correct initscript order and mongod detection
In addition to starting and stopping mongod in the correct order, the check for
determining whether mongod is required needs to happen when the service is
managed.
2015-07-14 11:14:13 -04:00

100 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# Default configured services
if [ -e /etc/debian_version ]; then
TOWER_CONFIG="/etc/default/ansible-tower"
else
TOWER_CONFIG="/etc/sysconfig/ansible-tower"
fi
# Load default configuration
[ -e "${TOWER_CONFIG}" ] && . "${TOWER_CONFIG}"
service_action() {
SERVICES=$TOWER_SERVICES
# When determining whether mongod is required, postgres is required. The
# following ensures mongod is started after postgres, and stopped before
# postgres.
case ${1} in
start|status)
SERVICES="$SERVICES mongod"
;;
stop)
SERVICES="mongod $SERVICES"
;;
esac
for svc in ${SERVICES}; do
# Determine whether mongod is needed
if [[ ${svc} == mongod ]]; then
tower-manage uses_mongo 2> /dev/null >/dev/null
# if mongod is not required, break
if [ $? -ne 0 ]; then
break
fi
fi
service ${svc} $1
this_return=$?
if [ $this_return -gt $worst_return ]; then
worst_return=$this_return
fi
# Allow supervisor time to cleanup child pids (ubuntu only)
if [[ ${svc} == supervisor* && ${1} == stop && -e /etc/debian_version ]]; then
S_PID=$(pidof -x supervisord)
echo "Waiting to allow supervisor time to cleanup ... pid ${S_PID}"
if [ "${S_PID}" ]; then
i=0
while kill -0 "${S_PID}" 2> /dev/null; do
if [ $i = '60' ]; then
break;
else
if [ $i == '0' ]; then
echo -n " ... waiting"
else
echo -n "."
fi
i=$(($i+1))
sleep 1
fi
done
fi
fi
done
}
usage() {
echo "Ansible Tower service helper utility"
echo "Usage: $0 {start|stop|restart|status}"
}
worst_return=0
case "$1" in
help | -help | --help | -h)
usage
;;
start)
echo "Starting Tower"
service_action start
;;
stop)
echo "Stopping Tower"
service_action stop
;;
restart)
echo "Restarting Tower"
service_action stop
service_action start
;;
status)
echo "Showing Tower Status"
service_action status
;;
*)
usage
worst_return=1
esac
exit $worst_return