pierky.arouteserver

ansible-role-arouteserver

Rola do instalacji i konfiguracji ARouteServer.

Opis

Ta rola...

  • instaluję ARouteServer oraz bgpq4

  • kopiuje lokalny plik definicji ogólnej polityki (plik general.yml) lub buduje go na podstawie najlepszych praktyk i sugestii

  • kopiuje lokalną listę klientów (plik clients.yml) lub importuje ją z pliku JSON eksportu członków IX-F (takiego jak te eksportowane przez IXP-Manager)

  • buduje pliki konfiguracyjne serwera tras, które mogą być następnie wysłane do rzeczywistych serwerów tras.

Proszę pamiętać: nie ustawia rzeczywistych hostów serwera tras, ale tylko hosta, na którym ARouteServer będzie uruchamiany.

Rzeczywiste hosty serwera tras muszą być częścią grupy arouteserver_managed_routeservers, aby ta rola mogła je znaleźć.

Większość zachowań tej roli można ustawić za pomocą zmiennych, które są opisane poniżej.

Instalacja

ARouteServer jest instalowany za pomocą pip z PyPI lub z lokalnego pakietu na maszynie kontrolnej. Gdy zmienna ansible arouteserver_upgrade jest ustawiona na true (domyślnie false), argument --upgrade jest przekazywany do pip, aby umożliwić aktualizację instalacji.

Każdy lokalny plik w katalogu templates/config roli jest kopiowany do katalogu ARouteServer (obsługiwane są szablony Jinja2).

Ogólna polityka (general.yml)

Ogólna polityka może być kopiowana z lokalnego pliku (obsługiwane są szablony Jinja2) lub może być budowana na podstawie najlepszych praktyk i sugestii.

Plik general.yml zostanie utworzony dla każdego hosta serwera tras. Szczegóły serwera tras (ASN, router-id, demon BGP) są zbierane z zmiennych samego hosta.

Lista klientów (clients.yml)

Lista klientów może być kopiowana z lokalnego pliku lub importowana z plików JSON eksportu członków Euro-IX, które mogą być również pobierane za pomocą HTTP/HTTPS.

Gdy lista się zmienia, budowanie plików konfiguracyjnych serwera tras również jest uruchamiane.

Budowanie plików konfiguracyjnych serwera tras

Pliki konfiguracyjne serwera tras są zapisywane w katalogu ARouteServer; ich nazwy mają ten schemat: <hostname>-[bird4|bird6|openbgpd].cfg.

Jeśli jest ustawiony, powiadamiany jest zewnętrzny handler, gdy pliki konfiguracyjne się zmieniają.

Tagi

  • configure_policy: gdy ustalone, budowany jest tylko plik definicji ogólnej polityki (general.yml).

  • configure_clients: gdy ustalone, aktualizowana jest tylko lista klientów. Jeśli się zmieni, również uruchamiane jest budowanie plików konfiguracyjnych.

  • build_rs_config: gdy ustalone, budowane są tylko pliki konfiguracyjne serwera tras.

Wymagania

Brak wymagań.

Zmienne roli

Zmienne używane przez tę rolę są wymienione poniżej, pogrupowane tematycznie.

Instalacja pakietu

  • (opcjonalnie) arouteserver_local_package_file: gdy ustawione, rola instaluje ARouteServer z pakietu z tej lokalizacji, w przeciwnym razie pobierana jest najnowsza wersja z PyPI (domyślnie).
  • (opcjonalnie) arouteserver_upgrade; gdy ustawione na true, przekazuje --upgrade do PIP, aby umożliwić selektywne aktualizacje pakietu arouteserver.

Konfiguracja serwera tras: ogólna polityka (general.yml)

  • (opcjonalnie) arouteserver_general_cfg_file: ustaw tę zmienną na lokalną ścieżkę pliku general.yml, który będzie używany do konfiguracji ARouteServer (można użyć szablonu Jinja2). Jeśli nie jest ustawiona, użyta zostanie komenda configure komenda w celu skonfigurowania pliku definicji polityki zgodnie z najlepszymi praktykami i sugerowanymi ustawieniami (domyślnie).

Konfiguracja serwera tras: lista klientów (clients.yml)

Obowiązkowe, jedna z 3 poniższych zmiennych:

  • arouteserver_clients_cfg_file: lokalna ścieżka pliku clients.yml.

  • arouteserver_clients_from_euroix_file: lokalna ścieżka pliku z listą członków Euro-IX, która zostanie wykorzystana do importu listy klientów serwera tras.

  • arouteserver_clients_from_euroix_url: URL listy członków Euro-IX, która zostanie wykorzystana do importu listy klientów serwera tras. Może być używana do integracji ARouteServer z IXP-Manager i pobierania listy klientów stamtąd.

  • (obowiązkowe, gdy używany jest import Euro-IX) arouteserver_clients_from_euroix_ixp_id: ID IXP zawarte w pliku listy członków Euro-IX.

  • (opcjonalnie) arouteserver_clients_from_euroix_extra_args: wszelkie dodatkowe argumenty, które powinny być używane z komendą clients-from-euroix komenda. Przykład: --merge-from-peeringdb as-set max-prefix --vlan-id 123.

Dostosowanie serwera tras: specyficzne dla strony pliki konfiguracyjne

Zmienna arouteserver_local_files_dir oraz arouteserver_use_local_files mogą być ustawione, aby przekazać wskaźniki do lokalnych plików dostosowanych do ARouteServer za pomocą opcji linii poleceń --use-local-files.

Operacje serwera tras: RFC8326 łagodne zamykanie

Zmienna arouteserver_perform_graceful_shutdown, gdy jest ustawiona, instruuje ARouteServer do budowy następującej konfiguracji z opcją łagodnego zamykania, aby tymczasowo odciągnąć ruch podczas wydarzenia konserwacyjnego.

Biorąc pod uwagę charakter operacji łagodnego zamykania, sugeruje się, aby nie ustawiać tej zmiennej na true na stałe, ale raczej przekazywać ją w czasie działania tylko przed przeprowadzeniem konserwacji.

Integracja z innymi rolami

  • (opcjonalnie) arouteserver_notify_on_rs_change: gdy ustawione, rola powiadomi ten handler o zaktualizowanych plikach konfiguracyjnych serwera tras.

Układ katalogów

Katalogi i ścieżki używane do instalacji komponentów roli. Domyślne wartości są podane poniżej:

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

Nazwy zmiennych hostów

Następujące zmienne definiują nazwę hostvars używanych do zbierania niektórych informacji z hostów serwera tras. Na przykład, zmienna referencjonowana przez arouteserver_varname_rs_asn (rs_asn domyślnie) musi być zdefiniowana dla hostów serwera tras i musi zawierać ASN serwera tras.

Proszę zapoznać się z sekcją Przykładowy plik Playbook dla przykładu.

  • arouteserver_varname_rs_asn: rs_asn, ASN serwera tras. Przykład: 64496.
  • arouteserver_varname_daemon: daemon, demon BGP używany na hoście. Jeden z bird lub openbgpd.
  • arouteserver_varname_daemon_version: daemon_version, wersja demona BGP. Przykład: 1.6.3.
  • arouteserver_varname_router_id: router_id, router-id hosta. Przykład: 192.0.2.1.
  • arouteserver_varname_local_networks: local_networks, lista lokalnych sieci oddzielona przecinkami, używanych przez IXP (potrzebne do budowania filtrów, które pozwalają serwerowi tras na odrzucenie jakiejkolwiek zapowiedzi dla własnych prefiksów IXP). Przykład: 192.0.2.0/24,2001:db8::/32.

Wartości używane do ustawiania zmiennych odnoszących się do arouteserver_varname_daemon oraz arouteserver_varname_daemon_version (domyślnie daemon i daemon_version odpowiednio) muszą być ustawione na jeden z demonów oraz jego wersji wspieranych przez ARouteServer.

Będą one używane do ustawienia głównego polecenia oraz argumentu --target-version podczas uruchamiania narzędzia:

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

Pomocnicze polecenia arouteserver --help oraz arouteserver <daemon> --help mogą być używane do uzyskania listy aktualnie wspieranych wartości.

Zależności

Hosty reprezentujące serwery tras muszą być częścią grupy arouteserver_managed_routeservers.

Zmienna odniesione w sekcji Nazwy zmiennych hostów muszą być skonfigurowane na każdym hoście serwera tras (lub dziedziczone przez group_var).

Proszę zapoznać się z sekcją Przykładowy plik Playbook dla przykładu.

Przykładowy plik Playbook

plik hosts:

[arouteserver_hosts]
172.17.0.2      # Hosta, na którym ARouteServer zostanie zainstalowany 
                # i uruchomiony do budowy plików konfiguracyjnych serwera tras.

[arouteserver_managed_routeservers]
rs1		# Hosty, na których będą działały serwery tras.
rs2

plik group_vars/arouteserver_managed_routeservers:

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

plik host_vars/rs1:

daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1

plik host_vars/rs2:

daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2

plik 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

Licencja

GPLv3

Informacje o autorze

Pier Carlo Chiodi - https://pierky.com

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

O projekcie

An Ansible role for installing ARouteServer.

Zainstaluj
ansible-galaxy install pierky.arouteserver
Licencja
Unknown
Pobrania
73
Właściciel
Network Reliability Engineer. Interests: network automation, Internet measurement and IP accounting / network data analysis