#!/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 # Should MongoDB be managed by this script? # We only manage MongoDB if the license uses it. tower-manage uses_mongo if [ $? == 0 && ${1} == start ]; then SERVICES="$SERVICES mongod" elif [ $? == 0 && ${1} == stop ]; then SERVICES="mongod $SERVICES" fi for svc in ${SERVICES}; do 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