pierky.arouteserver

ansible-role-arouteserver

Eine Rolle zur Installation und Konfiguration von ARouteServer.

Beschreibung

Diese Rolle...

  • installiert ARouteServer und bgpq4

  • kopiert eine lokale allgemeine Policy-Definitionsdatei (general.yml Datei) oder erstellt eine auf Basis von Best Practices und Vorschlägen

  • kopiert eine lokale Liste von Clients (clients.yml Datei) oder importiert sie aus einer IX-F Member Export JSON Datei (wie die von IXP-Manager exportierten)

  • erstellt Konfigurationsdateien für den Routenserver, die schließlich an die echten Routenserver übertragen werden können.

Bitte beachten Sie: Es werden keine echten Routenserver-Hosts eingerichtet, sondern nur der Host, auf dem ARouteServer ausgeführt wird.

Die echten Routenserver-Hosts müssen Teil der Gruppe arouteserver_managed_routeservers sein, damit diese Rolle sie finden kann.

Die meisten Verhaltensweisen dieser Rolle können mithilfe einiger Variablen festgelegt werden, die unten dokumentiert sind.

Installation

ARouteServer wird über pip aus PyPI oder von einem lokalen Paket auf der Steuerungsmaschine installiert. Wenn die Ansible-Variable arouteserver_upgrade auf true gesetzt ist (standardmäßig false), wird das Argument --upgrade an pip übergeben, um ein Upgrade der Installation zu ermöglichen.

Jede lokale Datei im Verzeichnis templates/config der Rolle wird in das Verzeichnis von ARouteServer kopiert (Jinja2-Vorlagen werden unterstützt).

Allgemeine Policy (general.yml)

Die allgemeine Policy kann von einer lokalen Datei kopiert werden (Jinja2-Vorlagen werden unterstützt) oder auf Grundlage von Best Practices und Vorschlägen erstellt werden.

Eine general.yml Datei wird für jeden Routenserver-Host erstellt. Details zum Routenserver (ASN, Router-ID, BGP-Daemon) werden aus den Variablen des Hosts selbst gesammelt.

Clients-Liste (clients.yml)

Die Liste der Clients kann von einer lokalen Datei kopiert oder aus IX-F Member Export JSON-Dateien importiert werden, die ebenfalls über HTTP/HTTPS abgerufen werden können.

Wenn sich die Liste ändert, wird auch die Erstellung der Konfigurationsdateien für den Routenserver ausgelöst.

Erstellung von Konfigurationsdateien für Routenserver

Die Konfigurationsdateien für den Routenserver werden im Verzeichnis von ARouteServer gespeichert; ihre Namen folgen diesem Schema: <hostname>-[bird4|bird6|openbgpd].cfg.

Wenn festgelegt, wird ein externer Handler benachrichtigt, wenn sich die Konfigurationsdateien ändern.

Tags

  • configure_policy: Wenn gesetzt, wird nur die allgemeine Policy-Definitionsdatei (general.yml) erstellt.

  • configure_clients: Wenn gesetzt, wird nur die Liste der Clients aktualisiert. Wenn sie sich ändert, wird auch die Erstellung der Konfigurationsdateien ausgelöst.

  • build_rs_config: Wenn gesetzt, werden nur die Konfigurationsdateien für den Routenserver erstellt.

Anforderungen

Keine Anforderungen.

Rollenspezifische Variablen

Die von dieser Rolle verwendeten Variablen sind nach Thema gruppiert und unten aufgeführt.

Paketinstallation

  • (optional) arouteserver_local_package_file: Wenn gesetzt, installiert die Rolle ARouteServer mit dem Paket an diesem lokalen Pfad. Andernfalls wird die letzte Version von PyPI abgerufen und installiert (Standard).
  • (optional) arouteserver_upgrade: Wenn auf true gesetzt, übergibt --upgrade an PIP, um selektive Upgrades des upstream arouteserver Python-Pakets zu ermöglichen.

Routenserver-Konfiguration: allgemeine Policy (general.yml)

  • (optional) arouteserver_general_cfg_file: Setzen Sie diese Variable auf den lokalen Pfad der general.yml Datei, die zur Konfiguration von ARouteServer verwendet wird (eine Jinja2-Vorlage kann verwendet werden). Wenn nicht gesetzt, wird der configure Befehl verwendet, um die Policy-Definitionsdatei mit Best Practices und empfohlenen Einstellungen einzurichten (Standard).

Routenserver-Konfiguration: Client-Liste (clients.yml)

Verpflichtend, eine der folgenden 3 Variablen:

  • arouteserver_clients_cfg_file: lokaler Pfad zur clients.yml Datei.

  • arouteserver_clients_from_euroix_file: lokaler Pfad zu einer Euro-IX-Mitgliederliste, die zum Import der Liste der Routenserver-Clients verwendet wird.

  • arouteserver_clients_from_euroix_url: URL einer Euro-IX-Mitgliederliste, die zum Import der Liste der Routenserver-Clients verwendet wird. Dies kann verwendet werden, um ARouteServer mit IXP-Manager zu integrieren und die Clientliste von dort abzurufen.

  • (verpflichtend, wenn Euro-IX-Import verwendet wird) arouteserver_clients_from_euroix_ixp_id: ID des IXP, das in der Euro-IX-Mitgliederliste referenziert wird.

  • (optional) arouteserver_clients_from_euroix_extra_args: Alle zusätzlichen Argumente, die mit dem clients-from-euroix Befehl verwendet werden sollen. Beispiel: --merge-from-peeringdb as-set max-prefix --vlan-id 123.

Anpassung des Routenservers: standortspezifische benutzerdefinierte Konfigurationsdateien

Die Variablen arouteserver_local_files_dir und arouteserver_use_local_files können gesetzt werden, um Verweise auf lokale benutzerdefinierte Dateien an ARouteServer über dessen --use-local-files Befehlszeilenoption weiterzugeben.

Routenserver-Operationen: RFC8326 sanftes Herunterfahren

Die Variable arouteserver_perform_graceful_shutdown, wenn gesetzt, weist ARouteServer an, die folgende Konfiguration mit der Option sanftes Herunterfahren zu erstellen, um während eines Wartungsereignisses vorübergehend den Verkehr abzulassen.

Aufgrund der Natur der sanften Herunterfahroperation wird empfohlen, diese Variable nicht dauerhaft auf true zu setzen, sondern sie nur zur Laufzeit zu übergeben, bevor die Wartung durchgeführt wird.

Integration mit anderen Rollen

  • (optional) arouteserver_notify_on_rs_change: Wenn gesetzt, benachrichtigt die Rolle diesen Handler, wenn die Konfigurationsdateien des Routenservers aktualisiert werden.

Verzeichnisstruktur

Verzeichnisse und Pfade, die zur Installation der Rollenkomponenten verwendet werden. Standardwerte sind unten aufgeführt:

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

Host-Variablennamen

Die folgenden Variablen definieren den Namen der Hostvariablen, die verwendet werden, um einige Informationen von den Routenserver-Hosts zu sammeln. Zum Beispiel muss die Variable, die durch arouteserver_varname_rs_asn referenziert wird (rs_asn standardmäßig), für die Routenserver-Hosts definiert und muss die ASN des Routenservers enthalten.

Bitte sehen Sie den Abschnitt Beispiel-Playbook für ein Beispiel.

  • arouteserver_varname_rs_asn: rs_asn, die ASN des Routenservers. Beispiel: 64496.
  • arouteserver_varname_daemon: daemon, der BGP-Daemon, der auf dem Host verwendet wird. Einer von bird oder openbgpd.
  • arouteserver_varname_daemon_version: daemon_version, die Version des BGP-Daemons. Beispiel: 1.6.3.
  • arouteserver_varname_router_id: router_id, die Router-ID des Hosts. Beispiel: 192.0.2.1.
  • arouteserver_varname_local_networks: local_networks, durch Kommas getrennte Liste der lokalen Netzwerke, die vom IXP verwendet werden (notwendig zum Erstellen von Filtern, die es dem Routenserver ermöglichen, Ankündigungen für die eigenen Präfixe des IXP abzulehnen). Beispiel: 192.0.2.0/24,2001:db8::/32.

Die Werte, die verwendet werden, um die Variablen zu setzen, auf die durch arouteserver_varname_daemon und arouteserver_varname_daemon_version verwiesen wird (standardmäßig daemon und daemon_version), müssen mit einem der Daemons und seiner Version, die von ARouteServer unterstützt werden, gesetzt werden.

Sie werden verwendet, um den Hauptbefehl und das Argument --target-version beim Ausführen des Tools festzulegen:

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

Die Hilfe-Befehle arouteserver --help und arouteserver <daemon> --help können verwendet werden, um eine Liste der derzeit unterstützten Werte zu erhalten.

Abhängigkeiten

Die Hosts, die die Routenserver repräsentieren, müssen Teil der Gruppe arouteserver_managed_routeservers sein.

Die Variablen, auf die in den Host-Variablennamen verwiesen wird, müssen für jeden Routenserver-Host konfiguriert sein (oder von einer group_var abgeleitet werden).

Bitte sehen Sie den Abschnitt Beispiel-Playbook für ein Beispiel.

Beispiel-Playbook

hosts Datei:

[arouteserver_hosts]
172.17.0.2      # Der Host, auf dem ARouteServer installiert und
                # ausgeführt wird, um Konfigurationsdateien für den Routenserver zu erstellen.

[arouteserver_managed_routeservers]
rs1		# Die Hosts, auf denen die Routenserver betrieben werden.
rs2

group_vars/arouteserver_managed_routeservers Datei:

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

host_vars/rs1 Datei:

daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1

host_vars/rs2 Datei:

daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2

site.yml Datei:

---
- 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

Lizenz

GPLv3

Autor Informationen

Pier Carlo Chiodi - https://pierky.com

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

Über das Projekt

An Ansible role for installing ARouteServer.

Installieren
ansible-galaxy install pierky.arouteserver
GitHub Repository
Lizenz
Unknown
Downloads
73
Besitzer
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis