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 suggestionscopie 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 surtrue
, passe--upgrade
à PIP pour permettre des mises à jour sélectives du package pythonarouteserver
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 fichiergeneral.yml
qui sera utilisé pour configurer ARouteServer (un template Jinja2 peut être utilisé). Si non défini, la commandeconfigure
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 fichierclients.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 commandeclients-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 debird
ouopenbgpd
.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
An Ansible role for installing ARouteServer.
ansible-galaxy install pierky.arouteserver