pierky.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.arouteserver