Разворачивает FRR на a1/a2/a3 (площадка A) через Ansible вместо
Docker-лабы, для реальных ВМ. Provisioning ВМ (3 NIC: внешний +
2 приватных) — Terraform, вне рамок этой задачи; playbook создаёт
только dummy0 (netplan) и конфигурирует FRR.
- ansible/site-a.env — единственный источник site-A-специфичных
значений (ASN, anycast-префикс, router-id/BGP-соседи по узлам,
имена интерфейсов); роль frr_anycast полностью параметризована
- ansible/roles/frr_anycast — задачи, handlers (netplan apply перед
restart frr), шаблоны frr.conf.j2/daemons.j2/dummy0.netplan.yml.j2
- ansible/tests/render-check.sh — офлайн golden-diff проверка
рендера конфигов против уже провалидированных в Docker-лабе
frr/a{1,2,3}/ (ВМ ещё не подняты, функциональный тест недоступен)
- README.md — раздел «Развёртывание площадки A на ВМ (Ansible)»
- docs/ — план и summary изменения
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bc3HkMiDwooSyLBLoMKNyF
28 lines
726 B
Bash
Executable File
28 lines
726 B
Bash
Executable File
#!/bin/sh
|
|
# Загружает site-a.env в environment и вызывает ansible-playbook.
|
|
# Использование: ./run.sh site-a.yml [доп. аргументы ansible-playbook]
|
|
set -e
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
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
|
|
|
|
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/site-a.yml "$PLAYBOOK" "$@"
|