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