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 sugestiikopiuje 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 natrue
, przekazuje--upgrade
do PIP, aby umożliwić selektywne aktualizacje pakietuarouteserver
.
Konfiguracja serwera tras: ogólna polityka (general.yml
)
- (opcjonalnie)
arouteserver_general_cfg_file
: ustaw tę zmienną na lokalną ścieżkę plikugeneral.yml
, który będzie używany do konfiguracji ARouteServer (można użyć szablonu Jinja2). Jeśli nie jest ustawiona, użyta zostanie komendaconfigure
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 plikuclients.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 zbird
lubopenbgpd
.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
An Ansible role for installing ARouteServer.
ansible-galaxy install pierky.arouteserver