mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 12:03:59 +00:00
ansible add /prole/home
This commit is contained in:
parent
5803e319d5
commit
89c1e1ebef
102
ansible.sh
Executable file
102
ansible.sh
Executable file
@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
export ANSIBLE_CONFIG="${ROOT_DIR}/ansible.cfg"
|
||||
|
||||
# Defaults
|
||||
MODE="fg" # fg|bg
|
||||
PLAYBOOK="infrastructure/playbooks/site.yml"
|
||||
VAULT_PASS_FILE="" # optional
|
||||
LIMIT="" # optional
|
||||
TAGS="" # optional
|
||||
EXTRA_ARGS=() # passthrough
|
||||
LOG_DIR="${ROOT_DIR}/.ansible/logs"
|
||||
SYSLOG_HOST="" # e.g. loghost.prole.org
|
||||
SYSLOG_PORT="514"
|
||||
SYSLOG_TAG="ansible"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: ./ansible.sh [options] [-- <extra ansible-playbook args>]
|
||||
|
||||
Options:
|
||||
-p, --playbook PATH Playbook path (default: ${PLAYBOOK})
|
||||
-l, --limit HOSTS Limit hosts
|
||||
-t, --tags TAGS Tags
|
||||
-v, --vault-pass-file FILE Vault password file
|
||||
-m, --mode fg|bg Run in foreground or background (default: fg)
|
||||
--syslog-host HOST Send start/end markers via UDP syslog to HOST
|
||||
--syslog-port PORT Syslog UDP port (default: 514)
|
||||
--syslog-tag TAG Syslog tag (default: ansible)
|
||||
-h, --help Show help
|
||||
|
||||
Examples:
|
||||
./ansible.sh -l pi.prole.org -t iscsi -v .vault_pass
|
||||
./ansible.sh -m bg -p infrastructure/playbooks/site.yml -v .vault_pass
|
||||
./ansible.sh --syslog-host loghost.prole.org -m bg -v .vault_pass -- -vv
|
||||
EOF
|
||||
}
|
||||
|
||||
send_syslog() {
|
||||
local msg="$1"
|
||||
if [[ -n "${SYSLOG_HOST}" ]]; then
|
||||
# -d = UDP, -n host, -P port
|
||||
logger -d -n "${SYSLOG_HOST}" -P "${SYSLOG_PORT}" -t "${SYSLOG_TAG}" -- "${msg}" || true
|
||||
fi
|
||||
}
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-p|--playbook) PLAYBOOK="$2"; shift 2 ;;
|
||||
-l|--limit) LIMIT="$2"; shift 2 ;;
|
||||
-t|--tags) TAGS="$2"; shift 2 ;;
|
||||
-v|--vault-pass-file) VAULT_PASS_FILE="$2"; shift 2 ;;
|
||||
-m|--mode) MODE="$2"; shift 2 ;;
|
||||
--syslog-host) SYSLOG_HOST="$2"; shift 2 ;;
|
||||
--syslog-port) SYSLOG_PORT="$2"; shift 2 ;;
|
||||
--syslog-tag) SYSLOG_TAG="$2"; shift 2 ;;
|
||||
--) shift; EXTRA_ARGS+=("$@"); break ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) EXTRA_ARGS+=("$1"); shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
mkdir -p "${LOG_DIR}"
|
||||
|
||||
ts="$(date +%Y%m%d-%H%M%S)"
|
||||
logfile="${LOG_DIR}/ansible-${ts}.log"
|
||||
|
||||
cmd=(ansible-playbook "${PLAYBOOK}")
|
||||
[[ -n "${LIMIT}" ]] && cmd+=("--limit" "${LIMIT}")
|
||||
[[ -n "${TAGS}" ]] && cmd+=("--tags" "${TAGS}")
|
||||
[[ -n "${VAULT_PASS_FILE}" ]] && cmd+=("--vault-password-file" "${VAULT_PASS_FILE}")
|
||||
cmd+=("${EXTRA_ARGS[@]}")
|
||||
|
||||
send_syslog "START playbook=${PLAYBOOK} limit=${LIMIT:-<none>} tags=${TAGS:-<none>} log=${logfile}"
|
||||
|
||||
echo "ANSIBLE_CONFIG=${ANSIBLE_CONFIG}"
|
||||
echo "LOGFILE=${logfile}"
|
||||
echo "CMD: ${cmd[*]}"
|
||||
|
||||
if [[ "${MODE}" == "fg" ]]; then
|
||||
# Stream to terminal and file
|
||||
set +e
|
||||
"${cmd[@]}" 2>&1 | tee "${logfile}"
|
||||
rc=${PIPESTATUS[0]}
|
||||
set -e
|
||||
else
|
||||
# Background: nohup to logfile
|
||||
nohup "${cmd[@]}" >"${logfile}" 2>&1 &
|
||||
rc=0
|
||||
echo "Started in background (pid $!)"
|
||||
fi
|
||||
|
||||
if [[ "${MODE}" == "fg" ]]; then
|
||||
if [[ $rc -eq 0 ]]; then
|
||||
send_syslog "END OK playbook=${PLAYBOOK} limit=${LIMIT:-<none>} tags=${TAGS:-<none>} log=${logfile}"
|
||||
else
|
||||
send_syslog "END FAIL rc=${rc} playbook=${PLAYBOOK} limit=${LIMIT:-<none>} tags=${TAGS:-<none>} log=${logfile}"
|
||||
fi
|
||||
exit $rc
|
||||
fi
|
||||
@ -31,6 +31,16 @@ iscsi_targets:
|
||||
opts: "_netdev,noatime"
|
||||
src: "UUID=757f1ee4-dc23-414b-b595-e3058c0744f0"
|
||||
|
||||
# PROLE-HOME-1
|
||||
- iqn: "iqn.2000-01.com.synology:synology.Target-17.292d45194a1"
|
||||
chap_user: "prole"
|
||||
chap_password: "{{ vault_iscsi_prole_password }}"
|
||||
mounts:
|
||||
- path: /prole/home
|
||||
fstype: ext4
|
||||
opts: "_netdev,noatime"
|
||||
src: "UUID=607718c8-467a-474f-8e36-80ceafe1beb4"
|
||||
|
||||
# PROLE-LOGS-1
|
||||
- iqn: "iqn.2000-01.com.synology:synology.Target-1.292d45194a1"
|
||||
chap_user: "prole"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user