mirror of
https://github.com/ansible/awx.git
synced 2026-03-14 07:27:28 -02:30
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.
100 lines
2.5 KiB
Bash
Executable File
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
|