Files
poc-frr-anycast/docs/2026-09-03-ansible-site-a-plan.md
T

22 lines
2.5 KiB
Markdown
Raw Normal View History

# План внедрения: Ansible playbook для настройки площадки A
**Дата:** 2026-09-03
## Цель
Ansible playbook для конфигурации FRR на ВМ площадки A (a1/a2/a3), полностью параметризованный через файл переменных окружения `ansible/site-a.env`. Provisioning ВМ (3 сетевых интерфейса: 1 внешний + 2 приватных) выполняется отдельным Terraform-сценарием вне рамок этой задачи — приватные интерфейсы и IP на них уже сконфигурированы к моменту запуска playbook; playbook создаёт только `dummy0` (anycast) и разворачивает FRR.
Полный план (архитектура, структура каталогов, содержимое `site-a.env`, шаблон `frr.conf.j2`, задачи роли, handlers, файлы, проверка) согласован с пользователем в чате — см. историю диалога. Ключевые решения:
- Сеть: **netplan**, приватные интерфейсы предзаданы Terraform'ом, `dummy0` создаёт Ansible.
- Все site-A-специфичные значения (ASN, anycast-префикс, router-id, BGP-соседи, имена интерфейсов) — в `ansible/site-a.env`, роль `frr_anycast` полностью generic.
- `frr.conf.j2` при рендере для a1/a2/a3 должен побайтово соответствовать уже проверенным в Docker-лабе `frr/a{1,2,3}/frr.conf`.
- **ВМ площадки A не подняты** — функциональная проверка (`vtysh`, реальный apply) невозможна и не входит в эту задачу; проверяется синтаксис + рендеринг шаблонов (golden-file diff против `frr/a{1,2,3}/frr.conf`).
- Ansible уже установлен системно (2.14.18) — venv не потребовался (был бы создан в `venv/` при отсутствии).
## Definition of done
- `ansible/` с playbook, ролью `frr_anycast`, inventory, group_vars/host_vars, `site-a.env`, `run.sh`.
- `ansible-playbook --syntax-check` проходит.
- `ansible/tests/render-check.sh` подтверждает: рендер `frr.conf.j2` для a1/a2/a3 совпадает с `frr/a{1,2,3}/frr.conf`.
- README и summary обновлены.