Compare commits

..

3 Commits

Author SHA256 Message Date
heath cccc72cd6f clean up ansible-pull logging and lock against concurrent runs 2026-07-12 15:30:07 -05:00
heath 3067b21276 clean up 2026-07-12 13:53:17 -05:00
heath 19f79cd518 use virtualenv command instead of module 2026-07-12 12:38:57 -05:00
3 changed files with 41 additions and 8 deletions
+7 -1
View File
@@ -36,6 +36,8 @@ HPF_ANS_activate="${HPF_ANS_ansible_venv}/bin/activate"
HPF_ANS_bin="\${HOME}/bin"
HPF_ANS_ansible_pull_sh="${HPF_ANS_bin}/ansible-pull.sh"
ANSIBLE_PULL_SH_LOG_DIR="/var/log/ansible-pull.sh"
#
#### FUNCTIONS
@@ -126,7 +128,7 @@ system_useradd hpf-ans 800
add_groups_to_user hpf-sudo-np hpf-ans
# Make sure .ansible-venv exists
as_hpf_ans "if [ ! -d \"${HPF_ANS_ansible_venv}\" ] ; then python3 -m venv \"${HPF_ANS_ansible_venv}\" ; fi"
as_hpf_ans "if [ ! -d \"${HPF_ANS_ansible_venv}\" ] ; then virtualenv \"${HPF_ANS_ansible_venv}\" ; fi"
# Make sure pip is up to date
as_hpf_ans "pip install --upgrade pip"
@@ -143,5 +145,9 @@ as_hpf_ans "rm \"${HPF_ANS_ansible_pull_sh}\" 2>/dev/null"
as_hpf_ans "curl -o \"${HPF_ANS_ansible_pull_sh}\" \"${GIT_REPO_ansible_pull_sh}\""
as_hpf_ans "chown hpf-ans:hpf-ans \"${HPF_ANS_ansible_pull_sh}\"; chmod u=rwx,go= \"${HPF_ANS_ansible_pull_sh}\""
# Make sure log directory exists
mkdir -p "${ANSIBLE_PULL_SH_LOG_DIR}"
chown hpf-ans:root "${ANSIBLE_PULL_SH_LOG_DIR}"; chmod ug=rwx,o= "${ANSIBLE_PULL_SH_LOG_DIR}"
# Run ansible-pull to finish up
as_hpf_ans "bin/ansible-pull.sh bootstrap.yml"
+15 -1
View File
@@ -114,4 +114,18 @@
backup: true
become: no
#### - Create crontab entry for production branch
- name: Make sure log directory exists
ansible.builtin.file:
path: /var/log/ansible-pull.sh
state: directory
owner: hpf-ans
group: root
mode: ug=rwx,o=
# - name: Create ansible-pull.sh crontab entry
# ansible.builtin.cron:
# name: "ansible-pull"
# minute: "*/27"
# job: $HOME/bin/ansible-pull.sh
# backup: true
# become: no
+19 -6
View File
@@ -1,14 +1,27 @@
#!/bin/bash
source ~/.ansible-venv/bin/activate
# - Fix branch to check out
. "${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"
LOG_DIR="/var/log/ansible-pull.sh"
LOG_FILE="${LOG_DIR}/ansible-pull.sh.log"
LOCK_FILE="/tmp/ansible-pull.sh.lock"
ANSIBLE_PULL_LOG="/var/log/ansible-pull.log"
# - Redirect all further output to the log file
exec >>"${LOG_FILE}" 2>&1
echo | sudo tee -a "${ANSIBLE_PULL_LOG}"
echo -n "$(basename "${0}"): " | sudo tee -a "${ANSIBLE_PULL_LOG}"
date "+%Y-%m-%d %H:%M:%S" | sudo tee -a "${ANSIBLE_PULL_LOG}"
ansible-pull --only-if-changed --url "${GIT_REPO}" "${@}" 2>&1 | sudo tee -a "${ANSIBLE_PULL_LOG}"
# - Log that we've gotten this far
echo -n "$(basename "${0}"): $(date "+%Y-%m-%d %H:%M:%S")"
# - If we can't lock the lock file, don't proceed
exec 9>"${LOCK_FILE}"
if ! flock -n 9 ; then echo " - ERROR - Another copy of ${SCRIPT_NAME} is already running! Exiting..." ; exit 1 ; fi
# - Do our work
echo
ansible-pull --only-if-changed --url "${GIT_REPO}" --checkout main "${@}"