Files

38 lines
1.4 KiB
Bash
Raw Permalink Normal View History

#!/bin/sh
# Загружает env-файл окружения в environment и вызывает ansible-playbook.
# Использование: ./run.sh <playbook.yml> [доп. аргументы ansible-playbook]
# SITE_ENV_FILE=site-cloud.env ./run.sh site-cloud.yml
# ./run.sh site-a.yml # SITE_ENV_FILE по умолчанию site-a.env
# Инвентарь берётся по имени плейбука: playbook X.yml -> inventory/X.yml
# (соглашение имён между *.yml playbook'ами и inventory/*.yml в этом репозитории).
set -e
cd "$(dirname "$0")"
# SITE_A_ENV_FILE — устаревший алиас, сохранён для обратной совместимости.
ENV_FILE="${SITE_ENV_FILE:-${SITE_A_ENV_FILE:-site-a.env}}"
if [ ! -f "$ENV_FILE" ]; then
echo "Не найден файл переменных окружения: $ENV_FILE" >&2
exit 1
fi
set -a
# shellcheck disable=SC1090
. "./$ENV_FILE"
set +a
PLAYBOOK="${1:-site-a.yml}"
shift 2>/dev/null || true
INVENTORY="inventory/$PLAYBOOK"
if [ ! -f "$INVENTORY" ]; then
echo "Не найден инвентарь: $INVENTORY (ожидается рядом с playbook'ом, то же имя)" >&2
exit 1
fi
ANSIBLE_PLAYBOOK_BIN="ansible-playbook"
if [ -x "../venv/bin/ansible-playbook" ]; then
ANSIBLE_PLAYBOOK_BIN="../venv/bin/ansible-playbook"
fi
exec "$ANSIBLE_PLAYBOOK_BIN" -i "$INVENTORY" "$PLAYBOOK" "$@"