По 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
1.8 KiB
План внедрения: доработка 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-basedfrr.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 обновлены.