Разворачивает 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
23 lines
2.5 KiB
Markdown
23 lines
2.5 KiB
Markdown
# План внедрения: 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 обновлены.
|