Files
ansible/files/home/hpf-ans/bin/ansible-pull.sh
T
2026-08-02 09:54:44 -05:00

67 lines
1.8 KiB
Bash

#!/usr/bin/env bash
if [ -r /etc/ansible-pull.sh.conf ] ; then
. /etc/ansible-pull.sh.conf
fi
SCRIPT_NAME="$(basename "${0}")"
GIT_REPO_BRANCH="${GIT_REPO_BRANCH:-production}"
OIC_FLAG="--only-if-changed"
# - Process command line
while [ $# -gt 0 ]; do
case "$1" in
-h|--help)
echo "Usage: $0 [--branch <branch name>]"
exit 0
;;
-b|--branch)
shift 1
if [ $# -eq 0 ] ; then echo "${SCRIPT_NAME}: ERROR - Branch not specified." ; exit 1 ; fi
GIT_REPO_BRANCH="$1"
shift 1
;;
-f|--force)
shift 1
OIC_FLAG=""
;;
--)
shift 1
break
;;
*)
echo "${SCRIPT_NAME}: ERROR - Invalid argument '${1}'." ; exit 2
;;
esac
done
VENV_ACTIVATE_SCRIPT="${HOME}/.ansible-venv/bin/activate"
LOCK_FILE="/var/run/lock/ansible-pull.sh.lock"
LOG_DIR="/var/log/ansible-pull.sh"
LOG_FILE="${LOG_DIR}/ansible-pull.sh.log"
GIT_REPO_BASE="https://gitea.admin-a.hpetersenfamily.com/heath/ansible"
GIT_REPO="${GIT_REPO_BASE}.git"
# - Include ansible virtual environment (in case not already done - we don't know how we're being run)
VIRTUAL_ENV_DISABLE_PROMPT=true
. "${VENV_ACTIVATE_SCRIPT}"
# - If we can't get a lock, don't proceed
if ! exec 9>"${LOCK_FILE}" ; then
echo "${SCRIPT_NAME}: ERROR - Unable to open the lock file (${LOCK_FILE})! Exiting..." >&2
exit 10
fi
if ! flock -n 9 ; then
echo "${SCRIPT_NAME}: ERROR - Another copy is already running! Exiting..." >&2
exit 11
fi
# - Append all further STDOUT and STDERR to the log file
exec >>"${LOG_FILE}" 2>&1
# - Log that we've gotten this far
echo
echo "${SCRIPT_NAME}: $(date "+%Y-%m-%d %H:%M:%S") ----------------------------------------"
# - Do our work
echo ansible-pull ${OIC_FLAG} --url "${GIT_REPO}" --checkout "${GIT_REPO_BRANCH}" "${@}"