src.dualinventive.com/devops/ansible/ansible-cron.sh

39 lines
897 B
Bash
Executable File

#!/bin/bash
set -e
cd "$(dirname "$0")"
echo "----------------------------------------------------------------"
echo "Ansible cron task started on: `date`"
echo "----------------------------------------------------------------"
PLAYBOOK=$1
LIMIT=$2
EXTRA=$3
EMAIL_FROM="ansible@dualinventive.com"
EMAIL_TO="dev-operations@dualinventive.com"
if [ "${PLAYBOOK}" == "" ]; then
echo "No playbook provided!"
echo " usage: $0 <playbook> [<limit-clause>] [<extra>]"
exit 1
fi
source environment
tmplogfile=$(mktemp)
trap 'rm -f "$tmplogfile"' EXIT INT TERM HUP
ansible-playbook -b playbooks/${PLAYBOOK} --limit="${LIMIT}" $EXTRA 2>&1 | tee "$tmplogfile"
set +e
tail -50 $tmplogfile | grep -q 'failed=[1-9]\|unreachable=[1-9]'
RET=$?
if [[ "$RET" == "0" ]]; then
cat $tmplogfile | ./files/tools/mailer -from $EMAIL_FROM -subject 'Ansible cron failure' -to $EMAIL_TO
fi
rm -f "$tmplogfile"