Files
ayurishchevandClaude Sonnet 5 b2b7306a3c Generalize frr_anycast role, add site-cloud environment (4 nodes, prepend, sNAT)
По 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
2026-09-09 20:59:40 +03:00

38 lines
1.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# Рендерит шаблоны роли frr_anycast для окружения site_cloud локально (без
# SSH и без реальных ВМ) — используется render-check-cloud.sh.
- name: "Render-only test шаблонов frr_anycast (site_cloud)"
hosts: site_cloud
connection: local
gather_facts: false
become: false
tasks:
# group_vars/host_vars авто-подгружаются относительно каталога playbook'а
# или inventory; render-test-cloud.yml лежит в tests/, поэтому подключаем явно.
- name: Подключить site-wide переменные (group_vars/site_cloud.yml)
ansible.builtin.include_vars: "{{ playbook_dir }}/../group_vars/site_cloud.yml"
- name: Подключить per-node переменные (host_vars/{{ inventory_hostname }}.yml)
ansible.builtin.include_vars: "{{ playbook_dir }}/../host_vars/{{ inventory_hostname }}.yml"
- name: Создать выходную директорию для хоста
ansible.builtin.file:
path: "{{ render_out_dir }}/{{ inventory_hostname }}"
state: directory
mode: "0755"
- name: Рендер frr.conf
ansible.builtin.template:
src: "{{ playbook_dir }}/../roles/frr_anycast/templates/frr.conf.j2"
dest: "{{ render_out_dir }}/{{ inventory_hostname }}/frr.conf"
- name: Рендер daemons
ansible.builtin.template:
src: "{{ playbook_dir }}/../roles/frr_anycast/templates/daemons.j2"
dest: "{{ render_out_dir }}/{{ inventory_hostname }}/daemons"
- name: Рендер nftables.conf
ansible.builtin.template:
src: "{{ playbook_dir }}/../roles/frr_anycast/templates/nftables.conf.j2"
dest: "{{ render_out_dir }}/{{ inventory_hostname }}/nftables.conf"