pierky.arouteserver
ansible-role-arouteserver
Un rol para instalar y configurar ARouteServer.
Descripción
Este rol...
instala ARouteServer y bgpq4
copia un archivo local de definición de política general (
archivo general.yml
) o crea uno basado en las mejores prácticas y recomendacionescopia una lista local de clientes (
archivo clients.yml
) o la importa desde un archivo JSON de exportación de miembros de IX-F (como los exportados por IXP-Manager)crea archivos de configuración de servidores de rutas que pueden ser finalmente enviados a los servidores de rutas reales.
Por favor nota: no configura los hosts reales del servidor de rutas, solo el host donde se ejecutará ARouteServer.
Los hosts reales del servidor de rutas deben ser parte del grupo arouteserver_managed_routeservers
para permitir que este rol los encuentre.
La mayoría de los comportamientos de este rol se pueden ajustar utilizando algunas variables que se documentan a continuación.
Instalación
ARouteServer se instala utilizando pip
a través de PyPI o desde un paquete local en la máquina de control. Cuando la variable de Ansible arouteserver_upgrade
se establece en true
(por defecto false
), se pasa el argumento --upgrade
a pip
para permitir una actualización de la instalación.
Cualquier archivo local dentro del directorio templates/config
del rol se copia en el directorio de ARouteServer (se admiten plantillas Jinja2).
Política general (general.yml
)
La política general se puede copiar desde un archivo local (se admiten plantillas Jinja2) o puede ser creada sobre la base de las mejores prácticas y sugerencias.
Se creará un archivo general.yml
para cada host del servidor de rutas. Los detalles del servidor de rutas (ASN, router-id, demonio BGP) se obtienen de las variables del propio host.
Lista de clientes (clients.yml
)
La lista de clientes se puede copiar desde un archivo local o importar desde archivos JSON de exportación de miembros de IX-F, que también se pueden obtener mediante HTTP/HTTPS.
Cuando cambia, también se activa la creación de archivos de configuración del servidor de rutas.
Creación de archivos de configuración del servidor de rutas
Los archivos de configuración del servidor de rutas se guardan en el directorio de ARouteServer; sus nombres siguen este esquema: <nombre_del_host>-[bird4|bird6|openbgpd].cfg
.
Si se establece, se notifica a un manejador externo cuando cambian los archivos de configuración.
Etiquetas
configure_policy
: cuando se establece, solo se crea el archivo de definición de política general (general.yml
).configure_clients
: cuando se establece, solo se actualiza la lista de clientes. Si cambia, también se activa la creación de archivos de configuración.build_rs_config
: cuando se establece, solo se crean los archivos de configuración del servidor de rutas.
Requisitos
No hay requisitos.
Variables del rol
Las variables utilizadas por este rol se enumeran a continuación, agrupadas por tema.
Instalación del paquete
- (opcional)
arouteserver_local_package_file
: cuando se establece, el rol instala ARouteServer usando el paquete en esta ruta local; de lo contrario, se obtiene e instala la última versión de PyPI (por defecto). - (opcional)
arouteserver_upgrade
: cuando se establece entrue
, pasa--upgrade
a PIP para permitir actualizaciones selectivas del paquete pythonarouteserver
.
Configuración del servidor de rutas: política general (general.yml
)
- (opcional)
arouteserver_general_cfg_file
: establece esta variable en la ruta local del archivogeneral.yml
que se utilizará para configurar ARouteServer (se puede usar una plantilla Jinja2). Si no se establece, se utilizará el comandoconfigure
aquí para configurar el archivo de definición de política utilizando las mejores prácticas y configuraciones sugeridas (por defecto).
Configuración del servidor de rutas: lista de clientes (clients.yml
)
Obligatorio, una de las 3 siguientes variables:
arouteserver_clients_cfg_file
: ruta local del archivoclients.yml
.arouteserver_clients_from_euroix_file
: ruta local de un archivo de lista de miembros de Euro-IX que se utilizará para importar la lista de clientes del servidor de rutas.arouteserver_clients_from_euroix_url
: URL de una lista de miembros de Euro-IX que se utilizará para importar la lista de clientes del servidor de rutas. Esto se puede usar para integrar ARouteServer con IXP-Manager y para obtener la lista de clientes desde allí.(obligatorio cuando se usa la importación de Euro-IX)
arouteserver_clients_from_euroix_ixp_id
: ID del IXP referenciado en el archivo de lista de miembros de Euro-IX.(opcional)
arouteserver_clients_from_euroix_extra_args
: cualquier argumento adicional que deba usarse con el comandoclients-from-euroix
aquí. Ejemplo:--merge-from-peeringdb as-set max-prefix --vlan-id 123
.
Personalización del servidor de rutas: archivos de configuración personalizados específicos del sitio
Las variables arouteserver_local_files_dir
y arouteserver_use_local_files
se pueden establecer para proporcionar punteros a archivos personalizados locales a ARouteServer a través de su opción de línea de comandos --use-local-files
.
Operaciones del servidor de rutas: apagado elegante RFC8326
La variable arouteserver_perform_graceful_shutdown
, cuando se establece, instruye a ARouteServer para crear la siguiente configuración con la opción de apagado elegante habilitada, para drenaje temporal del tráfico durante un evento de mantenimiento.
Dada la naturaleza de la operación de apagado elegante, se sugiere no establecer esta variable en true
de forma permanente, sino pasarla en tiempo de ejecución solo antes de realizar el mantenimiento.
Integración con otros roles
- (opcional)
arouteserver_notify_on_rs_change
: cuando se establece, el rol notificará a este manejador cuando se actualicen los archivos de configuración del servidor de rutas.
Estructura de directorios
Directorios y rutas utilizados para instalar los componentes del rol. Los valores predeterminados se informan a continuación:
arouteserver_venv_dir
:~/.virtualenvs/arouteserver
.arouteserver_bin
:{{arouteserver_venv_dir}}/bin/arouteserver
.arouteserver_dir
:~/arouteserver
.arouteserver_var
:~/arouteserver_var
.bgpq4_dir
:~/bgpq4
.
Nombres de variables de host
Las siguientes variables definen el nombre de las variables de host usadas para recopilar información de los hosts del servidor de rutas.
Por ejemplo, la variable referenciada por arouteserver_varname_rs_asn
(rs_asn
por defecto) debe definirse para los hosts del servidor de rutas y debe contener el ASN del servidor de rutas.
Por favor, consulta la sección de Ejemplo de Playbook para un ejemplo.
arouteserver_varname_rs_asn
:rs_asn
, el ASN del servidor de rutas. Ej.64496
.arouteserver_varname_daemon
:daemon
, el demonio BGP utilizado en el host. Uno debird
oopenbgpd
.arouteserver_varname_daemon_version
:daemon_version
, la versión del demonio BGP. Ej.1.6.3
.arouteserver_varname_router_id
:router_id
, el router-id del host. Ej.192.0.2.1
.arouteserver_varname_local_networks
:local_networks
, lista separada por comas de las redes locales utilizadas por el IXP (necesaria para crear filtros que permitan al servidor de rutas rechazar cualquier anuncio para los prefijos del propio IXP). Ej.192.0.2.0/24,2001:db8::/32
.
Los valores utilizados para establecer las variables referenciadas por arouteserver_varname_daemon
y arouteserver_varname_daemon_version
(por defecto daemon
y daemon_version
respectivamente) deben establecerse con uno de los demonios y su versión soportados por ARouteServer.
Se usarán para establecer el comando principal y el argumento --target-version
al ejecutar la herramienta:
arouteserver <daemon> --target-version <daemon_version>
Los comandos de ayuda arouteserver --help
y arouteserver <daemon> --help
se pueden usar para obtener una lista de los valores actualmente soportados.
Dependencias
Los hosts que representan los servidores de rutas deben ser parte del grupo arouteserver_managed_routeservers
.
Las variables referenciadas por los nombres informados en la sección de Nombres de variables de host deben estar configuradas en cada host del servidor de rutas (o heredadas por un group_var
).
Por favor, consulta la sección de Ejemplo de Playbook para un ejemplo.
Ejemplo de Playbook
archivo hosts:
[arouteserver_hosts]
172.17.0.2 # El host donde se instalará y
# ejecutará ARouteServer para crear archivos de configuración del servidor de rutas.
[arouteserver_managed_routeservers]
rs1 # Los hosts donde se ejecutarán los servidores de rutas.
rs2
archivo group_vars/arouteserver_managed_routeservers:
rs_asn: 64496
local_networks:
- 192.0.2.0/24
- 2001:db8::/32
archivo host_vars/rs1:
daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1
archivo host_vars/rs2:
daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2
archivo 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
Licencia
GPLv3
Información del Autor
Pier Carlo Chiodi - https://pierky.com
Blog: https://blog.pierky.com Twitter: @pierky
An Ansible role for installing ARouteServer.
ansible-galaxy install pierky.arouteserver