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 recomendaciones

  • copia 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 en true, pasa --upgrade a PIP para permitir actualizaciones selectivas del paquete python arouteserver.

Configuración del servidor de rutas: política general (general.yml)

  • (opcional) arouteserver_general_cfg_file: establece esta variable en la ruta local del archivo general.yml que se utilizará para configurar ARouteServer (se puede usar una plantilla Jinja2). Si no se establece, se utilizará el comando configure 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 archivo clients.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 comando clients-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 de bird o openbgpd.
  • 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

Acerca del proyecto

An Ansible role for installing ARouteServer.

Instalar
ansible-galaxy install pierky.arouteserver
Licencia
Unknown
Descargas
73
Propietario
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis