pierky.arouteserver

ansible-role-arouteserver

Un rôle pour installer et configurer ARouteServer.

Description

Ce rôle...

  • installe ARouteServer et bgpq4

  • copie un fichier de définition de politique générale local (general.yml) ou en construit un basé sur les meilleures pratiques et suggestions

  • copie une liste de clients locale (clients.yml) ou l'importe à partir d'un fichier JSON d'exportation de membre IX-F (comme ceux exportés par IXP-Manager)

  • crée des fichiers de configuration de serveur de route qui peuvent ensuite être envoyés aux serveurs de route réels.

Veuillez noter : il ne configure pas les vrais hôtes serveur de route, mais uniquement l'hôte où ARouteServer sera exécuté.

Les vrais hôtes serveur de route doivent faire partie du groupe arouteserver_managed_routeservers pour permettre à ce rôle de les trouver.

La plupart des comportements de ce rôle peuvent être ajustés en utilisant certaines variables qui sont documentées ci-dessous.

Installation

ARouteServer est installé en utilisant pip via PyPI ou à partir d'un package local sur la machine de contrôle. Lorsque la variable ansible arouteserver_upgrade est définie sur true (par défaut false), l'argument --upgrade est passé à pip pour permettre une mise à niveau de l'installation.

Tout fichier local dans le répertoire templates/config du rôle est copié dans le répertoire d'ARouteServer (les templates Jinja2 sont pris en charge).

Politique générale (general.yml)

La politique générale peut être copiée à partir d'un fichier local (les templates Jinja2 sont pris en charge) ou construite sur la base des meilleures pratiques et suggestions.

Un fichier general.yml sera créé pour chaque hôte serveur de route. Les détails du serveur de route (ASN, router-id, démon BGP) sont rassemblés à partir des variables de l'hôte lui-même.

Liste des clients (clients.yml)

La liste des clients peut être copiée à partir d'un fichier local ou importée à partir de fichiers JSON d'exportation de membre IX-F, qui peuvent également être récupérés via HTTP/HTTPS.

Lorsqu'elle change, la construction des fichiers de configuration du serveur de route est également déclenchée.

Construction des fichiers de configuration des serveurs de route

Les fichiers de configuration du serveur de route sont enregistrés dans le répertoire d'ARouteServer ; leurs noms suivent le schéma : <hostname>-[bird4|bird6|openbgpd].cfg.

Si défini, un gestionnaire externe est notifié lorsque les fichiers de configuration changent.

Tags

  • configure_policy : lorsqu'il est défini, seul le fichier de définition de politique générale (general.yml) est construit.

  • configure_clients : lorsqu'il est défini, seule la liste des clients est mise à jour. Si cela change, la construction des fichiers de configuration est également déclenchée.

  • build_rs_config : lorsqu'il est défini, seuls les fichiers de configuration du serveur de route sont construits.

Exigences

Aucune exigence.

Variables de rôle

Les variables utilisées par ce rôle sont listées ci-dessous, regroupées par sujet.

Installation des packages

  • (optionnel) arouteserver_local_package_file : lorsqu'il est défini, le rôle installe ARouteServer en utilisant le package à ce chemin local, sinon la dernière version de PyPI est récupérée et installée (par défaut).
  • (optionnel) arouteserver_upgrade : lorsqu'il est défini sur true, passe --upgrade à PIP pour permettre des mises à jour sélectives du package python arouteserver en amont.

Configuration du serveur de route : politique générale (general.yml)

  • (optionnel) arouteserver_general_cfg_file : définissez cette variable sur le chemin local du fichier general.yml qui sera utilisé pour configurer ARouteServer (un template Jinja2 peut être utilisé). Si non défini, la commande configure sera utilisée pour mettre en place le fichier de définition de politique en utilisant les meilleures pratiques et bonnes configurations (par défaut).

Configuration du serveur de route : liste des clients (clients.yml)

Obligatoire, l'une des 3 variables suivantes :

  • arouteserver_clients_cfg_file : chemin local du fichier clients.yml.

  • arouteserver_clients_from_euroix_file : chemin local d'un fichier de liste de membres Euro-IX qui sera utilisé pour importer la liste des clients du serveur de route.

  • arouteserver_clients_from_euroix_url : URL d'une liste de membres Euro-IX qui sera utilisée pour importer la liste des clients du serveur de route. Cela peut être utilisé pour intégrer ARouteServer avec IXP-Manager et pour récupérer la liste des clients à partir de là.

  • (obligatoire lorsque l'importation Euro-IX est utilisée) arouteserver_clients_from_euroix_ixp_id : ID de l'IXP référencé dans le fichier de liste de membres Euro-IX.

  • (optionnel) arouteserver_clients_from_euroix_extra_args : tout argument supplémentaire qui devrait être utilisé avec la commande clients-from-euroix. Exemple : --merge-from-peeringdb as-set max-prefix --vlan-id 123.

Personnalisation du serveur de route : fichiers de configuration personnalisés spécifiques au site

Les variables arouteserver_local_files_dir et arouteserver_use_local_files peuvent être définies pour passer des pointeurs vers des fichiers locaux personnalisés à ARouteServer via son option de ligne de commande --use-local-files.

Opérations du serveur de route : arrêt gracieux RFC8326

La variable arouteserver_perform_graceful_shutdown, lorsqu'elle est définie, indique à ARouteServer de construire la configuration suivante avec l'option arrêt gracieux activée, pour temporairement réduire le trafic pendant un événement de maintenance.

Étant donné la nature de l'opération d'arrêt gracieux, il est suggéré de ne pas définir cette variable sur true de manière permanente, mais plutôt de la passer au moment de l'exécution juste avant que la maintenance ne soit effectuée.

Intégration avec d'autres rôles

  • (optionnel) arouteserver_notify_on_rs_change : lorsqu'il est défini, le rôle notifiera ce gestionnaire lorsque les fichiers de configuration des serveurs de route sont mis à jour.

Structure des répertoires

Répertoires et chemins utilisés pour installer les composants du rôle. Les valeurs par défaut sont rapportées ci-dessous :

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

Noms des variables d'hôte

Les variables suivantes définissent le nom des hostvars utilisés pour rassembler certaines informations des hôtes de serveurs de route. Par exemple, la variable référencée par arouteserver_varname_rs_asn (rs_asn par défaut) doit être définie pour les hôtes serveur de route et doit contenir l'ASN du serveur de route.

Veuillez voir la section Exemple de Playbook pour un exemple.

  • arouteserver_varname_rs_asn : rs_asn, l'ASN du serveur de route. Ex. 64496.
  • arouteserver_varname_daemon : daemon, le démon BGP utilisé sur l'hôte. Un de bird ou openbgpd.
  • arouteserver_varname_daemon_version : daemon_version, la version du démon BGP. Ex. 1.6.3.
  • arouteserver_varname_router_id : router_id, le router-id de l'hôte. Ex. 192.0.2.1.
  • arouteserver_varname_local_networks : local_networks, liste séparée par des virgules des réseaux locaux utilisés par l'IXP (nécessaire pour construire des filtres qui permettent au serveur de route de rejeter toute annonce pour les préfixes de l'IXP). Ex. 192.0.2.0/24,2001:db8::/32.

Les valeurs utilisées pour définir les variables référencées par arouteserver_varname_daemon et arouteserver_varname_daemon_version (par défaut daemon et daemon_version, respectivement) doivent être définies avec l'un des démons et sa version pris en charge par ARouteServer.

Elles seront utilisées pour définir la commande principale et l'argument --target-version lors de l'exécution de l'outil :

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

Les commandes d'aide arouteserver --help et arouteserver <daemon> --help peuvent être utilisées pour obtenir une liste des valeurs actuellement prises en charge.

Dépendances

Les hôtes qui représentent les serveurs de route doivent faire partie du groupe arouteserver_managed_routeservers.

Les variables référencées par les noms rapportés dans la section Noms des variables d'hôte doivent être configurées sur chaque hôte serveur de route (ou héritées par un group_var).

Veuillez voir la section Exemple de Playbook pour un exemple.

Exemple de Playbook

fichier hosts :

[arouteserver_hosts]
172.17.0.2      # L'hôte où ARouteServer sera installé et
                # exécuté pour construire des fichiers de configuration de serveurs de route.

[arouteserver_managed_routeservers]
rs1		# Les hôtes où les serveurs de route seront exécutés.
rs2

fichier group_vars/arouteserver_managed_routeservers :

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

fichier host_vars/rs1 :

daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1

fichier host_vars/rs2 :

daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2

fichier 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

Licence

GPLv3

Informations sur l'auteur

Pier Carlo Chiodi - https://pierky.com

Blog : https://blog.pierky.com Twitter : @pierky

À propos du projet

An Ansible role for installing ARouteServer.

Installer
ansible-galaxy install pierky.arouteserver
Licence
Unknown
Téléchargements
73
Propriétaire
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis