Разворачивает 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
9 lines
604 B
YAML
9 lines
604 B
YAML
# Site-wide переменные площадки A — тонкий адаптер над ansible/site-a.env.
|
|
# Ничего site-специфичного не хардкодится: только имена ключей env-файла.
|
|
site_a_asn: "{{ lookup('env', 'SITE_A_ASN') }}"
|
|
anycast_prefix: "{{ lookup('env', 'ANYCAST_PREFIX') }}"
|
|
dummy_iface: "{{ lookup('env', 'DUMMY_IFACE') | default('dummy0', true) }}"
|
|
priv1_iface: "{{ lookup('env', 'PRIV1_IFACE') }}"
|
|
priv2_iface: "{{ lookup('env', 'PRIV2_IFACE') }}"
|
|
frr_apt_series: "{{ lookup('env', 'FRR_APT_SERIES') | default('frr-stable', true) }}"
|