arouteserver

ansible-role-arouteserver

Роль для установки и настройки ARouteServer.

Описание

Эта роль...

  • устанавливает ARouteServer и bgpq4

  • копирует локальный файл определения общей политики (general.yml) или создает его на основе лучших практик и рекомендаций

  • копирует локальный список клиентов (clients.yml) или импортирует его из JSON-файла Expo Member Export (например, тех, что экспортируются IXP-Manager)

  • создает файлы конфигурации маршрутизатора, которые затем могут быть отправлены на реальные маршрутизаторы.

Обратите внимание: данная роль не настраивает реальные хосты маршрутизаторов, а только тот хост, на котором будет выполняться ARouteServer.

Реальные хосты маршрутизаторов должны быть частью группы arouteserver_managed_routeservers, чтобы эта роль могла их найти.

Большинство настроек этой роли можно задать с помощью переменных, описанных ниже.

Установка

ARouteServer устанавливается с помощью pip из PyPI или из локального пакета на управляющей машине. Когда переменная ansible arouteserver_upgrade установлена в true (по умолчанию false), к pip добавляется аргумент --upgrade, чтобы разрешить обновление установки.

Любой локальный файл в директории templates/config роли копируется в директорию ARouteServer (поддерживаются шаблоны Jinja2).

Общая политика (general.yml)

Общая политика может быть скопирована из локального файла (поддерживаются шаблоны Jinja2) или может быть создана на основе лучших практик и рекомендаций.

Файл general.yml будет создан для каждого хоста маршрутизатора. Данные о маршрутизаторе (ASN, router-id, BGP-демон) собираются из переменных самого хоста.

Список клиентов (clients.yml)

Список клиентов можно скопировать из локального файла или импортировать из JSON-файлов Expo Member Export, которые также можно получить по HTTP/HTTPS.

Если он изменяется, создается и конфигурация файлов маршрутизатора.

Создание файлов конфигурации маршрутизаторов

Файлы конфигурации маршрутизаторов сохраняются в директории ARouteServer; их названия следуют этой схеме: <hostname>-[bird4|bird6|openbgpd].cfg.

Если задано, внешний обработчик уведомляется, когда конфигурационные файлы меняются.

Теги

  • configure_policy: если установлено, создается только файл определения общей политики (general.yml).

  • configure_clients: если установлено, обновляется только список клиентов. Если он изменяется, создается и конфигурация файлов.

  • build_rs_config: если установлено, создаются только файлы конфигурации маршрутизаторов.

Требования

Нет требований.

Переменные роли

Переменные, используемые этой ролью, перечислены ниже, сгруппированные по темам.

Установка пакетов

  • (необязательно) arouteserver_local_package_file: если указано, роль установит ARouteServer, используя пакет по этому локальному пути, в противном случае будет загружена и установлена последняя версия из PyPI (по умолчанию).
  • (необязательно) arouteserver_upgrade: если установлено в true, передает --upgrade в PIP для возможности выборочного обновления пакета arouteserver.

Конфигурация маршрутизатора: общая политика (general.yml)

  • (необязательно) arouteserver_general_cfg_file: установите эту переменную на локальный путь к файлу general.yml, который будет использоваться для настройки ARouteServer (можно использовать шаблон Jinja2). Если не установлено, будет использована команда configure, чтобы настроить файл определения политики с использованием лучших практик и предложенных настроек (по умолчанию).

Конфигурация маршрутизатора: список клиентов (clients.yml)

Обязательно, одна из 3 следующих переменных:

  • arouteserver_clients_cfg_file: локальный путь к файлу clients.yml.

  • arouteserver_clients_from_euroix_file: локальный путь к файлу списка членов Euro-IX, который будет использован для импорта списка клиентов маршрутизатора.

  • arouteserver_clients_from_euroix_url: URL списка членов Euro-IX, который будет использован для импорта списка клиентов маршрутизатора. Это может быть использовано для интеграции ARouteServer с IXP-Manager и получения списка клиентов оттуда.

  • (обязательно, если используется импорт Euro-IX) arouteserver_clients_from_euroix_ixp_id: ID IXP, указанный в файле списка членов Euro-IX.

  • (необязательно) arouteserver_clients_from_euroix_extra_args: любые дополнительные аргументы, которые следует использовать с командой clients-from-euroix. Пример: --merge-from-peeringdb as-set max-prefix --vlan-id 123.

Кастомизация маршрутизатора: специфичные для сайта пользовательские конфигурационные файлы

Переменные arouteserver_local_files_dir и arouteserver_use_local_files могут быть установлены для передачи ссылок на локальные пользовательские файлы в ARouteServer через его --use-local-files командная опция.

Операции маршрутизатора: RFC8326 плавная остановка

Переменная arouteserver_perform_graceful_shutdown, если установлена, инструктирует ARouteServer создать следующую конфигурацию с включенной опцией плавной остановки, чтобы временно снять трафик во время обслуживания.

Учитывая природу операции плавной остановки, рекомендуется не устанавливать эту переменную в true постоянно, а скорее передавать ее во время выполнения только перед выполнением обслуживания.

Интеграция с другими ролями

  • (необязательно) arouteserver_notify_on_rs_change: если установлено, роль уведомит этот обработчик, когда файлы конфигурации маршрутизатора обновляются.

Структура директорий

Директории и пути, используемые для установки компонентов роли. Значения по умолчанию указаны ниже:

  • arouteserver_venv_dir: ~/.virtualenvs/arouteserver.
  • arouteserver_bin: {{arouteserver_venv_dir}}/bin/arouteserver.
  • arouteserver_dir: ~/arouteserver.
  • arouteserver_var: ~/arouteserver_var.
  • bgpq4_dir: ~/bgpq4.

Имена переменных хоста

Следующие переменные определяют имя хостов, используемых для сбора информации с хостов маршрутизаторов. Например, переменная, на которую ссылается arouteserver_varname_rs_asn (rs_asn по умолчанию), должна быть определена для хостов маршрутизаторов и должна содержать ASN маршрутизатора.

Пожалуйста, смотрите раздел Пример плейбука для примера.

  • arouteserver_varname_rs_asn: rs_asn, ASN маршрутизатора. Пример: 64496.
  • arouteserver_varname_daemon: daemon, BGP-демон, используемый на хосте. Один из bird или openbgpd.
  • arouteserver_varname_daemon_version: daemon_version, версия BGP-демона. Пример: 1.6.3.
  • arouteserver_varname_router_id: router_id, router-id хоста. Пример: 192.0.2.1.
  • arouteserver_varname_local_networks: local_networks, список локальных сетей, используемых IXP (необходим для создания фильтров, которые позволяют маршрутизатору отклонять любые объявления для собственных префиксов IXP). Пример: 192.0.2.0/24,2001:db8::/32.

Значения, используемые для установки переменных, на которые ссылаются arouteserver_varname_daemon и arouteserver_varname_daemon_version (по умолчанию daemon и daemon_version соответственно), должны быть установлены с одним из демонов и его версии, поддерживаемых ARouteServer.

Они будут использоваться для установки основной команды и аргумента --target-version, когда инструмент выполняется:

arouteserver <daemon> --target-version <daemon_version>

Команды справки arouteserver --help и arouteserver <daemon> --help можно использовать для получения списка текущих поддерживаемых значений.

Зависимости

Хосты, представляющие маршрутизаторы, должны быть частью группы arouteserver_managed_routeservers.

Переменные, на которые ссылаются имена, указанные в разделе Имена переменных хоста, должны быть настроены на каждом хосте маршрутизатора (или унаследованы от group_var).

Пожалуйста, смотрите раздел Пример плейбука для примера.

Пример плейбука

файл hosts:

[arouteserver_hosts]
172.17.0.2      # Хост, на котором будет установлен и
                # выполняться ARouteServer для создания файлов конфигурации маршрутизатора.

[arouteserver_managed_routeservers]
rs1		# Хосты, на которых будут работать маршрутизаторы.
rs2

файл group_vars/arouteserver_managed_routeservers:

rs_asn: 64496
local_networks:
- 192.0.2.0/24
- 2001:db8::/32

файл host_vars/rs1:

daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1

файл host_vars/rs2:

daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2

файл site.yml:

---
- hosts: arouteserver_hosts
  gather_facts: False

  vars:
    arouteserver_clients_from_euroix_url: "http://ixp-manager.example.com/api/v4/member-export/ixf/0.6?apikey=123456"
    routeserver_clients_from_euroix_ixp_id: 1

  roles:
  - ansible-role-arouteserver
$ ansible-playbook -i hosts site.yml

Лицензия

GPLv3

Информация об авторе

Пьер Карло Кьоди - https://pierky.com

Блог: https://blog.pierky.com Твиттер: @pierky

О проекте

An Ansible role for installing ARouteServer.

Установить
ansible-galaxy install pierky/ansible-role-arouteserver
Лицензия
Unknown
Загрузки
64
Владелец
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis