По updated_dia.png: новое окружение "Облачная площадка" (vr01-vr04, AS 65200, anycast 172.31.255.10/32) с двумя внешними BGP-каналами — основным (ASN 65104, без as-path prepend) и резервным (ASN 65103, с prepend на всех узлах) — плюс sNAT (nftables masquerade) на внешнем интерфейсе. Роль frr_anycast обобщена под это: вместо двух жёстко именованных соседей — список bgp_neighbors произвольной длины с флагом prepend; sNAT/ip_forward — опциональный блок (enable_snat). Площадка A мигрирована на новый формат host_vars/group_vars без изменения site-a.env и без изменения рендера — render-check.sh (golden-diff) по-прежнему проходит 6/6. Для site-cloud (окружение новое, ВМ не подняты) добавлен render-check-cloud.sh с grep-инвариантами: 4 соседа на узел, prepend только на резервном канале, nftables masquerade на внешнем интерфейсе — 56/56 проверок пройдено. run.sh обобщён на несколько окружений: инвентарь по имени playbook'а, env-файл через SITE_ENV_FILE (алиас SITE_A_ENV_FILE сохранён). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bc3HkMiDwooSyLBLoMKNyF
17 lines
1.8 KiB
Markdown
17 lines
1.8 KiB
Markdown
# План внедрения: доработка Ansible под топологию updated_dia.png
|
||
|
||
**Дата:** 2026-09-09
|
||
|
||
## Цель
|
||
|
||
Новое окружение «Облачная площадка» (4 узла vR01–vR04, AS 65200, anycast `172.31.255.10/32`), с двумя внешними BGP-каналами (Основной → ASN 65104 без prepend, Резервный → ASN 65103 с AS-path prepend на всех 4 узлах) и sNAT (nftables, masquerade на внешнем интерфейсе).
|
||
|
||
Полный анализ диаграммы, архитектурные решения и обоснование — согласованы с пользователем в чате, зафиксированы в плане `/root/.claude/plans/hdl-composed-octopus.md` (эта же сессия). Ключевое: роль `frr_anycast` обобщается со «2 жёстко именованных соседа» на список `bgp_neighbors` произвольной длины с флагом `prepend`, что требует рефакторинга площадки A (`group_vars/site_a.yml`, `host_vars/a{1,2,3}.yml`) — без изменения `site-a.env` и без изменения рендера (проверяется регрессом `render-check.sh`).
|
||
|
||
## Definition of done
|
||
|
||
- Роль `frr_anycast`: `bgp_neighbors`-based `frr.conf.j2`, опциональный sNAT (`enable_snat`) с `nftables.conf.j2`.
|
||
- `ansible/tests/render-check.sh` (площадка A) проходит без изменений в результате.
|
||
- Новое окружение `site-cloud` (env/inventory/group_vars/host_vars/playbook) + `render-check-cloud.sh` с grep-проверками 4 соседей / prepend только на резервном канале / sNAT.
|
||
- README и summary обновлены.
|