39 lines
897 B
Bash
Executable File
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"
|