From 1a0d1e5d0b469b9681bdca17b77e17c4a7274b86581677cf0e4bbb1d11b62d1b Mon Sep 17 00:00:00 2001 From: Heath Petersen Date: Sun, 26 Jul 2026 14:04:53 -0500 Subject: [PATCH] clean up locking --- files/home/hpf-ans/bin/ansible-pull.sh | 37 +++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/files/home/hpf-ans/bin/ansible-pull.sh b/files/home/hpf-ans/bin/ansible-pull.sh index b56874e..ecd9f9e 100644 --- a/files/home/hpf-ans/bin/ansible-pull.sh +++ b/files/home/hpf-ans/bin/ansible-pull.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +SCRIPT_NAME="$(basename "${0}")" + # - Process command line GIT_REPO_BRANCH="production" while [ $# -gt 0 ]; do @@ -10,7 +12,7 @@ while [ $# -gt 0 ]; do ;; --branch) shift 1 - if [ $# -eq 0 ] ; then echo "$0: ERROR - Branch not specified." ; exit 1 ; fi + if [ $# -eq 0 ] ; then echo "${SCRIPT_NAME}: ERROR - Branch not specified." ; exit 1 ; fi GIT_REPO_BRANCH="$1" shift 1 ;; @@ -19,33 +21,38 @@ while [ $# -gt 0 ]; do break ;; *) - echo "$0: ERROR - Invalid argument." ; exit 2 + echo "${SCRIPT_NAME}: ERROR - Invalid argument." ; exit 2 ;; esac done -# - Include ansible virtual environment (in case not already done - we don't know how we're being run) -VIRTUAL_ENV_DISABLE_PROMPT=true -. "${HOME}/.ansible-venv/bin/activate" - -SCRIPT_NAME="$(basename "${0}")" -GIT_REPO_BASE="https://gitea.admin-a.hpetersenfamily.com/heath/ansible" -GIT_REPO="${GIT_REPO_BASE}.git" +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" -LOCK_FILE="/tmp/ansible-pull.sh.lock" +GIT_REPO_BASE="https://gitea.admin-a.hpetersenfamily.com/heath/ansible" +GIT_REPO="${GIT_REPO_BASE}.git" -#???????????????????????????????? change the following to lock the log file? +# - 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 lock the lock file, don't proceed -if ! exec 9>"${LOCK_FILE}" ; then echo "ERROR - Unable to open the lock file (${LOCK_FILE})! Exiting..." ; exit 10 ; fi -if ! flock -n 9 ; then echo "ERROR - Another copy of ${SCRIPT_NAME} is already running! Exiting..." ; exit 11 ; fi +# - 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 "$(basename "${0}"): $(date "+%Y-%m-%d %H:%M:%S")" +echo +echo "${SCRIPT_NAME}: $(date "+%Y-%m-%d %H:%M:%S")" # - Do our work ansible-pull --only-if-changed --url "${GIT_REPO}" --checkout "${GIT_REPO_BRANCH}" "${@}" \ No newline at end of file