evrardjp.tinc

Tinc

Status testów gałęzi codziennych

Ta rola instaluje tinc w topologii gwiazdy lub pierścienia.

Węzły wymienione w grupie [tinc_nodes] to pełna lista węzłów do zastosowania/zainstalowania roli.

Węzły będące częścią [tinc_spine_nodes] to węzły "rdzeniowe", do których wszystkie węzły się łączą.

Węzły w [tinc_leaf_nodes] łączą się tylko z węzłami rdzeniowymi. Przykładem mogą być urządzenia stojące za NAT.

Jeśli wszystkie [tinc_nodes] są częścią [tinc_spine_nodes], masz bardziej "pierścieniową" topologię. Jeśli masz jeden węzeł w [tinc_spine_nodes], masz bardziej "gwiaździstą" topologię.

Wymagania

  • Ubuntu 18.04 / CentOS 7 (lub nowszy) / OpenWRT
  • W przypadku CentOS i nowszych, repozytorium EPEL musi być skonfigurowane wcześniej.

Aby to zrobić, możesz uruchomić następujące polecenia:

yum install epel-release || dnf install epel-release
yum update || dnf update

Zmienne Roli

  • tinc_key_size: Rozmiar generowanych kluczy (Domyślnie: 4096)
  • tinc_address_family może być ipv4/ipv6/any (lub nieokreślone)
  • tinc_mode może być router, switch lub hub. (Zobacz https://www.tinc-vpn.org/documentation/tinc.conf.5). (Domyślnie: router)
  • tinc_netname: Nazwa sieci tinc
  • tinc_vpn_ip: IP do przypisania jednemu punktowi końcowemu VPN. Użyj zmiennych hosta, aby to ustawić.
  • tinc_vpn_cidr: CIDR używany w sieci tinc (Domyślnie: /24, lub wymuszaj /32 w trybie routera).
  • tinc_vpn_interface: Urządzenie do użycia przez tinc, w przypadku, gdy jest wiele urządzeń tun (Domyślnie: tun0)
  • tinc_control_plane_bind_ip: IP, do którego ma przywiązać się usługa tincd (Domyślnie: ansible_default_ipv4.address)

Inwentarz musi ustawić tinc_control_plane_bind_ip (dla rdzenia) i/lub tinc_vpn_ip (dla rdzenia i węzłów brzegowych). Proszę zapoznać się z plikami zadań.

Przykłady

Tryb routera, topologia pierścienia

(Krótki) Inwentarz:

[tinc_nodes:children]
tinc_spine_nodes
tinc_leaf_nodes

[tinc_spine_nodes]
node1 tinc_vpn_ip=10.10.0.11
node2 tinc_vpn_ip=10.10.0.12
node3 tinc_vpn_ip=10.10.0.13

[tinc_leaf_nodes]
node1
node2
node3

Tryb routera, topologia gwiazdy

(Szczegółowy) Inwentarz:

[tinc_nodes]
node1
node2
node3

[tinc_spine_nodes]
node1

[tinc_leaf_nodes]
node1
node2
node3

Zmienne grupowe dla tinc_nodes:

tinc_netname: mynetname
tinc_vpn_interface: tun0

Zmienne hosta dla węzła rdzeniowego, node1:

tinc_control_plane_bind_ip: "{{ ansible_eth0.ipv4.address | default(ansible_default_ipv4.address) }}"
tinc_vpn_ip: 10.10.0.10

Zmienne hosta dla węzła brzegowego, node2:

tinc_vpn_ip: 10.10.0.11

Zmienne hosta dla węzła brzegowego, node3:

tinc_vpn_ip: 10.10.0.12

Zależności

Brak

Przykładowy Playbook

Zobacz https://raw.githubusercontent.com/evrardjp/ansible-tinc/master/molecule/default/converge.yml

Nie zapomnij ustawić niezbędnych zmiennych w swoim inwentarzu (patrz wyżej).

Testowanie

Testy bazują na frameworku Ansible Molecule, który:

  • sprawdza składnię roli
  • uruchamia kilka kontenerów z różnymi systemami operacyjnymi (tylko do testów. Nie mieszamy wersji Tinc w produkcji)
  • stosuje tę rolę do każdego kontenera
  • przeprowadza testy idempotencji (upewnia się, że drugie uruchomienie nie wprowadzi nieoczekiwanych zmian)
  • verifies that each prepared node able to ping other nodes over VPN

Testy uruchamiane są w akcjach githuba na PR i codziennie. Dodatkowo możesz je wykonać na lokalnej maszynie.

Zależności, które musisz mieć zainstalowane do uruchomienia testów:

Uruchamianie testów ręcznie, korzystając bezpośrednio z molecule

Możesz uruchomić istniejące testy dla topologii gwiazdy i pierścienia:

cd ansible-tinc
molecule test # to uruchomi domyślne testy dla scenariusza pierścienia
molecule test -s star

Polecenie 'molecule test' wykonuje pełny scenariusz: 'create', 'converge', 'check idempotency', 'verify' oraz 'destroy'. Często nie chcesz, aby kontener został natychmiast zniszczony i potrzebujesz do niego dostępu w celu debugowania. W tym celu może być przydatne zastąpienie 'molecule test' na:

molecule converge # to tworzy kontenery i stosuje rolę
molecule verify # uruchamia testy opisane w molecule/default/verify.yml

# po obu krokach masz aktywne kontenery Docker
# możesz uzyskać do nich dostęp przy użyciu zwykłych poleceń 'docker ps', 'docker exec' itd.

molecule destroy

Uruchamianie testów ręcznie, korzystając z tox

tox jest runnerem testów dla Pythona. Zainstaluje wszystkie niezbędne zależności Pythona (ansible, molecule[docker]) w wirtualnym środowisku.

Aby uruchomić test:

tox -e ansible-<version>-<tinc scenario>

Zobacz obsługiwane wartości dla version w tox.ini. Aktualnie testowalne scenariusze dla tinc to pierścień lub gwiazda. Argumenty pozycyjne będą przekazywane do polecenia molecule test.

Na przykład, aby uruchomić test dla ansible-2.9, z topologią pierścienia i zapobiec zniszczeniu przez molecule środowiska:

tox -e ansible-2.9-ring -- --destroy=never

Jak testować rolę z nowym systemem operacyjnym

dodaj nowy obraz do molecule/default/molecule.yml i molecule/star/molecule.yml, naśladując istniejące przykłady. Pliki są podobne, z wyjątkiem zmiennych scenario.name i groups. Następujące wskazówki mogą być pomocne:

Licencja

Apache2

Informacje o autorze

Jean-Philippe Evrard

O projekcie

Role to install tinc vpn in multiple topologies

Zainstaluj
ansible-galaxy install evrardjp.tinc
Licencja
apache-2.0
Pobrania
1k
Właściciel