#!/bin/sh # Загружает env-файл окружения в environment и вызывает ansible-playbook. # Использование: ./run.sh [доп. аргументы 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" "$@"