Files
poc-frr-anycast/ansible/roles/frr_anycast/tasks/main.yml
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

69 lines
2.2 KiB
YAML

---
- name: Pre-flight | приватные интерфейсы должны быть уже сконфигурированы Terraform-слоем
ansible.builtin.assert:
that:
- priv1_iface in ansible_facts.interfaces
- priv2_iface in ansible_facts.interfaces
- ansible_facts[priv1_iface]['active'] | default(false)
- ansible_facts[priv2_iface]['active'] | default(false)
fail_msg: >-
Интерфейсы {{ priv1_iface }}/{{ priv2_iface }} не найдены или не активны.
Ожидается, что Terraform-провижининг уже создал и поднял их до запуска
этого playbook.
success_msg: "Приватные интерфейсы {{ priv1_iface }} и {{ priv2_iface }} на месте."
- name: FRR APT-репозиторий | добавить GPG-ключ
ansible.builtin.get_url:
url: https://deb.frrouting.org/frr/keys.gpg
dest: /usr/share/keyrings/frrouting.gpg
mode: "0644"
- name: FRR APT-репозиторий | добавить источник пакетов
ansible.builtin.apt_repository:
repo: >-
deb [signed-by=/usr/share/keyrings/frrouting.gpg]
https://deb.frrouting.org/frr {{ ansible_distribution_release }} {{ frr_apt_series }}
filename: frr
state: present
update_cache: true
- name: Установить пакеты FRR
ansible.builtin.apt:
name: "{{ frr_packages }}"
state: present
- name: Конфиг | /etc/frr/daemons
ansible.builtin.template:
src: daemons.j2
dest: "{{ frr_daemons_path }}"
owner: frr
group: frr
mode: "0640"
notify: Restart frr
- name: Конфиг | /etc/frr/frr.conf
ansible.builtin.template:
src: frr.conf.j2
dest: "{{ frr_conf_path }}"
owner: frr
group: frr
mode: "0640"
notify: Restart frr
- name: Сеть | netplan-конфиг для dummy0 (anycast)
ansible.builtin.template:
src: dummy0.netplan.yml.j2
dest: "{{ netplan_dummy_config_path }}"
owner: root
group: root
mode: "0600"
notify:
- Apply netplan
- Restart frr
- name: FRR | сервис включён и запущен
ansible.builtin.systemd:
name: frr
enabled: true
state: started