Roles: add role documentation

This commit is contained in:
Tobias Hachmer 2017-09-06 11:17:38 +02:00
parent 94cb21daad
commit ed03ad8573
14 changed files with 329 additions and 0 deletions

View file

@ -0,0 +1,21 @@
# Ansible role git-fastd-peers
Diese Ansible role hängt von der role service-fastd-mesh bzw. service-fastd-intragate ab und sollte danach ausgeführt werden.
- installiert die erforderlichen git Pakete
- erstellt die erforderlichen peers Ordner
- klont die fastd peer repos
## Abhängigkeiten:
- service-fastd-*
## Benötigte Variablen
- Dictionary `meshes`
```
meshes:
xx:
...
peers_mesh_repo: # String - https Link zum Github Repository
peers_intragate_repo: # String - https Link zum Github Repository
´´´

View file

@ -0,0 +1,6 @@
# Ansible role kmod-batman
Diese Ansible role installiert das Kernel Modul batman-adv:
- Linux Kernel Headers
- Kernel Modul batman-adv
- Userspace Tool batctl

View file

@ -0,0 +1,33 @@
# Ansible role network-batman
Diese Ansible role konfiguriert batman-adv Netzwerk Interfaces.
- dummy interface pro mesh
- batman-adv interface pro mesh
- konfiguriert sysfs variablen:
- Hop Penalty pro batman-adv interface
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
ipv4_network:
...
batman:
it: # integer: originator interval
gw: # string: gateway mode
mm: # boolean: multicast mode
dat: # boolean: distributed arp table
´´´
- Host Variable `magic`
## MAC-Adressen
Die MAC-Adressen der Interfaces werden aus dem IPv4-Subnetz sowie der `magic`-Nummer des Hosts berechnet.
xx0-prefix: `02:00`
xxBAT-prefix: `02:01`

View file

@ -0,0 +1,26 @@
# Ansible role network-fastd
Diese Ansible role konfiguriert Netzwerk Interfaces für fastd.
- xxVPN pro Mesh
- xxigVPN pro Mesh
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
ipv4_network:
...
´´´
- Host Variable `magic`
## MAC-Adressen
Die MAC-Adressen der Interfaces werden aus dem IPv4-Subnetz sowie der `magic`-Nummerdes Hosts berechnet.
xxVPN-prefix: `02:11`
xxigVPN-prefix: `02:12`

View file

@ -0,0 +1,51 @@
# Ansible role network-ffrl
Diese Ansible role konfiguriert die GRE-Tunnel Interfaces, die für den Internet-Exit über Freifunk Rheinland benötigt werden.
## Benötigte Variablen
- Dictionary `ffrl_exit_server` (Host Variable)
´´´
ffrl_exit_server:
ffrl-a-ak-ber:
public_ipv4_address: 185.66.195.0
tunnel_ipv4_network: # IPv4 Tunnel Transfernetz
tunnel_ipv4_address: # Eigene Tunnel IPv4 Adresse
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network: # IPv6 Tunnel Transfernetz
tunnel_ipv6_netmask: 64
ffrl-b-ak-ber:
public_ipv4_address: 185.66.195.1
tunnel_ipv4_network:
tunnel_ipv4_address:
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network:
tunnel_ipv6_netmask: 64
ffrl-a-ix-dus:
public_ipv4_address: 185.66.193.0
tunnel_ipv4_network:
tunnel_ipv4_address:
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network:
tunnel_ipv6_netmask: 64
ffrl-b-ix-dus:
public_ipv4_address: 185.66.193.1
tunnel_ipv4_network:
tunnel_ipv4_address:
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network:
tunnel_ipv6_netmask: 64
ffrl-a-fra2-fra:
public_ipv4_address: 185.66.194.0
tunnel_ipv4_network:
tunnel_ipv4_address:
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network:
tunnel_ipv6_netmask: 64
ffrl-b-fra2-fra:
public_ipv4_address: 185.66.194.1
tunnel_ipv4_network:
tunnel_ipv4_address:
tunnel_ipv4_netmask: 255.255.255.254
tunnel_ipv6_network:
tunnel_ipv6_netmask: 64
´´´

View file

@ -0,0 +1,31 @@
# Ansible role network-meshbridge
Diese Ansible role konfiguriert die Linux Bridges für die Freifunk Meshes.
- linux bridge pro mesh inklusive IP-Konfiguration
- konfiguriert sysfs variablen:
- hash_max
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
ipv4_network:
...
ipv6:
ula:
- fdxx.../48 # ipv6 ula prefix
public:
- 2xxx.../48 # ipv6 public prefix
´´´
- Host Variable `magic`
## MAC-Adressen
Die MAC-Adressen der Interfaces werden aus dem IPv4-Subnetz sowie der `magic`-Nummer des Hosts berechnet.
xxBR-prefix: `02:10`

View file

@ -0,0 +1,12 @@
# Ansible role network-routetables
Diese Ansible role legt die erforderlichen routing tables an.
## Benötigte Variablen
- `routing_tables`
´´´
routing_tables:
$name: # integer
´´´

View file

@ -0,0 +1,11 @@
# Ansible role server-basic
Diese Ansible role installiert Pakete, die auf allen MWU-Server benötigt werden.
- installiert Pakete, die auf allen Servern benötigt werden
- setzt als default Editor
- setzt die Zeitzone auf Europe/Berlin
## Benötigte Variablen
- Liste `packages` (Rollen Variable)

View file

@ -0,0 +1,29 @@
# Ansible role service-dhcpd
Diese Ansible role installiert und konfiguriert den isc dhcp daemon.
Wir nutzen diesen nur zur Verteilung von IPv4-Adressen.
- installiert isc-dhcp-server
- setzt interfaces in /etc/default/isc-dhcp-server
- schreibt dhcpd.conf
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
site_name: # string
site_code: # string
ipv4_network:
dnssl:
- $domain # string
iface_mtu: # integer
´´´
- Host Variable `magic`
- Host Variable `ipv4_dhcp_range`
## DHCP Range
In der Host-Variable `ipv4_dhcp_range` wird als Integer die Nummer des /22 Blocks aus `ipv4_network` definiert, welcher als DHCP Range verwendet werden soll. Dem Gateway Lotuswurzel ist die DHCP-Range 10.X.16.0-10.X.19.255 zugewiesen. Diese ist der 4. /22er Block, also wird in der Host-Variable für die Lotuswurzel `4` geschrieben.

View file

@ -0,0 +1,38 @@
# Ansible role service-fastd-intragate
Diese Ansible role installiert und konfiguriert die fastd-Instanz für die Intra-Server Kommunikation.
- installiert fastd
- konfiguriert xxigVPN-Instanzen
- stellt sicher, dass die Instanz-Verzeichnisse existieren
- schreibt fastd.conf
- schreibt secret.conf
- der private fastd Schlüssel wird aus dem Admin passwordstore gelesen
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
site_number: # integer
´´´
- Dictionary `fastd_secrets` (Host-Variable)
´´´
fastd_secrets:
mzigVPN: "{{ lookup('passwordstore', 'fastd/mzigVPN/sparegate4') }}"
wiigVPN: "{{ lookup('passwordstore', 'fastd/wiigVPN/sparegate4') }}"
...
´´´
## fastd Secrets
Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben.
Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden.
Das Dictionary `fastd_secrets` folgt dem Aufbau:
```
fastd_secrets:
$Instanz-Name: "{{ lookup('passwordstore', '$Pfad-im-passwordstore') }}"
```

View file

@ -0,0 +1,38 @@
# Ansible role service-fastd-mesh
Diese Ansible role installiert und konfiguriert die fastd-Instanz für die Knoten Kommunikation.
- installiert fastd
- konfiguriert xxVPN-Instanzen
- stellt sicher, dass die Instanz-Verzeichnisse existieren
- schreibt fastd.conf
- schreibt secret.conf
- der private fastd Schlüssel wird aus dem Admin passwordstore gelesen
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
site_number: # integer
´´´
- Dictionary `fastd_secrets` (Host-Variable)
´´´
fastd_secrets:
mzVPN: "{{ lookup('passwordstore', 'fastd/mzVPN/sparegate4') }}"
wiVPN: "{{ lookup('passwordstore', 'fastd/wiVPN/sparegate4') }}"
...
´´´
## fastd Secrets
Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben.
Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden.
Das Dictionary `fastd_secrets` folgt dem Aufbau:
```
fastd_secrets:
$Instanz-Name: "{{ lookup('passwordstore', '$Pfad-im-passwordstore') }}"
```

View file

@ -0,0 +1,3 @@
# Ansible role service-haveged
Diese Ansible role installiert und startet den haveged daemon.

View file

@ -0,0 +1,7 @@
# Ansible role service-ntpd
Diese Ansible role installiert und startet den haveged daemon.
- stellt sicher, dass systemd-timesyncd nicht läuft
- installiert ntp pakete
- startet den ntp daemon

View file

@ -0,0 +1,23 @@
# Ansible role service-radvd
Diese Ansible role installiert und konfiguriert den radvd daemon.
- installiert radvd
- aktiviert systemd unit
- schreibt radvd.conf
## Benötigte Variablen
- Dictionary `meshes`
´´´
meshes:
xx:
...
ipv6:
ula:
- # ULA-Prefix - String
public:
- # Public-Prefix - String
iface_mtu: # Integer
´´´
- Host Variable `magic`