Files
poc-frr-anycast/docs/2026-09-03-ansible-site-a-plan.md
T
ayurishchevandClaude Sonnet 5 98f9f502ce Add Ansible playbook for Site A FRR configuration on VMs
Разворачивает 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
2026-09-03 14:14:04 +03:00

2.5 KiB
Raw Blame 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 обновлены.