#!/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 --local 2> /dev/null >/dev/null # if mongod is not required, break if [ $? -ne 0 ]; then continue 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