centos:ansible:ffmuc-rpb4-ol

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
centos:ansible:ffmuc-rpb4-ol [09.03.2020 18:32. ] – [Bsp. 2 : raspi_offloader_file.yml] djangocentos:ansible:ffmuc-rpb4-ol [07.04.2022 18:58. ] – [Kopieren des Raspbian Images auf die microSD-Karte] django
Zeile 11: Zeile 11:
  
 ====== Inhalt ====== ====== Inhalt ======
 +
 +<WRAP center round alert 30%>
 +**ACHTUNG:** Artikel in Überarbeitung!!! **ACHTUNG:**
 +</WRAP>
 +
 +
 <WRAP center round tip 90%> <WRAP center round tip 90%>
 Das Kapitel hier ist in folgende Abschnitte strukturiert.  Das Kapitel hier ist in folgende Abschnitte strukturiert. 
Zeile 66: Zeile 72:
 Grundlegende Informationen zu **[[https://www.ansible.com/|Ansible]]** und dessen Umgang bei der täglichen Arbeit finden sich im Kapitel **[[centos:ansible:start|Ansible]]** hier im **[[:start|WIKI]]**. Grundlegende Informationen zu **[[https://www.ansible.com/|Ansible]]** und dessen Umgang bei der täglichen Arbeit finden sich im Kapitel **[[centos:ansible:start|Ansible]]** hier im **[[:start|WIKI]]**.
  
-==== Installation von Ansible ====+==== Installation von Ansible und Git ====
 Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**. Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**.
-   * RPM basierende Systeme: <code> # dnf install ansible</code> bzw. <code> # yum install ansible</code> +   * RPM basierende Systeme: <code> # dnf install ansible git</code> bzw. <code> # yum install ansible git</code> 
-   * DEB basierende Systeme: <code> # apt get install ansible</code>+   * DEB basierende Systeme: <code> # apt install ansible git </code> bzw. als eigeloggter User via **''sudo''** mit <code> $ sudo apt install ansible git</code> 
  
 ==== Einrichten der eigenen Ansible-Umgebung ==== ==== Einrichten der eigenen Ansible-Umgebung ====
 +=== Ansible Arbeitsverzeichnis ===
 +Für unsere Ansible-Aufgaben (Playbooks) legen wir uns nun im Home-Verzeichnis unseres Admin-Users ein zugehöriges Verzeichnis an.
 +   $ mkdir ~/ansible
 +
 +/*
 === Verzeichnis-Struktur === === Verzeichnis-Struktur ===
-Für unseren Admininstrationsuser legen wir uns zu erst einmal die passende Orderstruktur im Homeverzeichnis an. +Gemäß **[[http://docs.ansible.com/ansible/latest/playbooks_best_practices.html|Ansible's Best Practices]]** gibt es durchaus einige Möglichkeiten wie man seine Playbooks organisiert. In aller Regel wird man hier die eigenen individuellen Bedürfnisse (seiner Unternehmung) vornan stellen. 
-   $ mkdir -p ~/ansible/{inventory,playbooks/templates/Raspbian}+
  
-Hieraus ergibt sich folgende Struktur:+<WRAP center round tip 90%> 
 +Jedoch empfiehlt es sich durchaus auf Empfohlenes zurückzugreifen! So empfiehlt es sich zum Beispiel auch, Rollen anstelle von Aufgaben zu verwenden, da dies wesentlich bei der Flexibilität und besseren Organisation der eigenen Playbooks/Codes helfen! 
 +</WRAP> 
 + 
 +Ansible bietet **[[https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#content-organization|zwei Beispiele]]** für Verzeichnis-Layouts. Wir werden im folgen Beispiel uns eine Umgebung aufbauen, in der unser Inventory, also unsere Hosts und Nodes, in mehreren **''groups''** und **''childs''** aufteilen. 
 + 
 +Mit dieser Struktur sind wir dann in der Lage jede Inventardatei mit ihrer **''group_vars''** und **''host_vars''** in ein separates Verzeichnis zu packen. Fernen können wir so einfach neue Rollen **''roles''**erzeugen, in dem wir dann einfach die bereits vorgefertigte Rollenvorlage **''common''** kopieren. 
 + 
 +Werfen wir also einfach mal auf die beschrieben Verzeichnisstruktur einen genaueren Blick. Die entsprechende Verwendung der einzelnen Verzeichnisse und DAteien ist in der Aufstellung entsprechend angegeben.
 <code>ansible/ <code>ansible/
-├── inventory +├── filter_plugins                 # (optionales) Verzeichnis für individuelle filter plugins 
-└── playbooks +├── library                        # (optionales) Verzeichnis für benutzerdefinierte Module 
-    └── templates +├── module_utils                   # (optionales) Verzeichnis für benutzerdefinierte module_utils zur Unterstützung von Modulen 
-        └── Raspbian</code>+│ 
 +├── inventories                    # Verzeichnis für die einzelnen (unterschiedlichen) Invenory 
 +│   ├── production                 # Verzeichnis für die Hosts aus der Gruppe production 
 +│   │   ├── hosts.yml              # YML-Datei mit den Host-Definitionen aus der Gruppe production 
 +│   │   ├── group_vars             # Verzeichnis für die Gruppenspezifischen Variablen der Gruppe production 
 +│   │   └── host_vars              # Verzeichnis für die Hostspezifischen Variablen der Gruppe production 
 +│   │     
 +│   ── staging                    # Verzeichnis für die Hosts aus der Gruppe staging 
 +│       ├── hosts.yml              # YML-Datei mit den Host-Definitionen aus der Gruppe production 
 +│       ├── group_vars             # Verzeichnis für die Gruppenspezifischen Variablen der Gruppe  
 +│       └── host_vars              # Verzeichnis für die Hostspezifischen Variablen der Gruppe production 
 +│ 
 +├── roles                          # Verzeichnis für die einzelnen (unterschiedlichen) Rollen 
 +│   └── common                     # Verzeichnis "role" common mit seinen entsprechenden Definitionen - Vorlage zum Kopieren 
 +│       ├── defaults               # Verzeichnis "defaults" 
 +│       │   └── main.yml           # Standardvariablen mit niedrigerer Priorität für diese Rolle 
 +│       ├── files                  # Verzeichnis "files" 
 +│       │   └── main.yml           # (Skript-)Dateien zur Verwendung als Kopier- bzw. Script-Rressource 
 +│       ├── handlers               # Verzeichnis "handlers" 
 +│       │   └── main.yml           # Datei mit den Definitionen zu den rollenspezifischen "handlers" 
 +│       ├── library                # Verzeichnis für benutzerdefinierte Module einer der Rolle (role) "common" 
 +│       ├── lookup_plugin          # Verzeichnis für weitere Arten von Plugins, wie in diesem Fall "lookup" 
 +│       ├── meta                   # Verzeichnis "meta" für Rollenspezifische Definitionen/Abhängigkeiten 
 +│       │   └── main.yml           # Datei mit Rollenspezifischen Definitionen 
 +│       ├── module_utils           # Verzeichnis "module_utils", die benutzerdefinierte module_utils der Rollen enthalten könnte 
 +│       ├── tasks                  # Verzeichnis "tasks" für kleinere Aufgabendateien 
 +│       │   └── main.yml           # Datei für kleinere Aufgaben, falls diese benötigt werden würden  
 +│       ├── templates              # Verzeichnis mit den Templates 
 +│       │   └── main.j2            # Template-Datei mit dem Dateisuffix/-Ende .j2 
 +│       └── vars                   # Verzeichnis "vars", mit den zu dieser Rolle zugeordneten Variablen 
 +│           └── main.yml           # Datei mit den Rollenspezifischen Variablen 
 +│ 
 +└── site.yml                       # master playbook 
 +</code> 
 + 
 +Um dieses Verzeichnis-Layout einfach und schnell auf den Weg zu bringen, verwenden wir die nachfolgend gezeigten zwei Befehle bzw. genauer gesagt die beiden Befehlskette: 
 +   $ mkdir -p ~/ansible/inventories/{production,staging}/{group_vars,host_vars} \ 
 +              ~/ansible/{library,module_utils,filter_plugins} \ 
 +              ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta,library,module_utils,lookup_plugin} 
 + 
 +   $ touch    ~/ansible/inventories/{production,staging}/hosts.yml \ 
 +              ~/ansible/site.yml \ 
 +              ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml
  
 +*/
 === Ansible-Konfigurationsdatei === === Ansible-Konfigurationsdatei ===
 +/*
 Als nächstes kopieren wir uns die Vorlage-Konfiguratinsdatei aus dem Verzeichnis **''/etc/ansible/''** in unser Homeverzeichnis. Als nächstes kopieren wir uns die Vorlage-Konfiguratinsdatei aus dem Verzeichnis **''/etc/ansible/''** in unser Homeverzeichnis.
    $ cp /etc/ansible/ansible.cfg ~/.ansible.cfg    $ cp /etc/ansible/ansible.cfg ~/.ansible.cfg
  
 Unter dem Konfigurationsgruppe **[ defaults ]** setzen wir den Parameter **''inventory = ~/ansible/inventory/hosts''** und **''interpreter_python = auto_silent''**. Beim ersten Parameter zeigen wir Ansible, wo die Host-Definitionen zu finden sind. beim Parameter **''interpreter_python''** geben wir an, dass __keine__ Ausgabe zu den Angaben des Pfads zum Python-Interpreter auf dem Raspberry ausgegeben werden soll. Der Parameter **''connect_timeout''** definiert, wie lange eine persistente Verbindung bestehen darf, bevor diese hart getrennt wird. Weitere Information zu den Konfigurationsparametern finden sie in der **[[https://docs.ansible.com/ansible/latest/reference_appendices/config.html|Dokumentation der Konfigurationsoptionen]]** zu Ansible. Unter dem Konfigurationsgruppe **[ defaults ]** setzen wir den Parameter **''inventory = ~/ansible/inventory/hosts''** und **''interpreter_python = auto_silent''**. Beim ersten Parameter zeigen wir Ansible, wo die Host-Definitionen zu finden sind. beim Parameter **''interpreter_python''** geben wir an, dass __keine__ Ausgabe zu den Angaben des Pfads zum Python-Interpreter auf dem Raspberry ausgegeben werden soll. Der Parameter **''connect_timeout''** definiert, wie lange eine persistente Verbindung bestehen darf, bevor diese hart getrennt wird. Weitere Information zu den Konfigurationsparametern finden sie in der **[[https://docs.ansible.com/ansible/latest/reference_appendices/config.html|Dokumentation der Konfigurationsoptionen]]** zu Ansible.
 +
    $ vim ~/.ansible.cfg    $ vim ~/.ansible.cfg
  
Zeile 106: Zeile 170:
 [diff] [diff]
 </code> </code>
 +
 +:GO:
 +
 +*/
 +Als nächstes kopieren wir uns die Vorlage-Konfiguratinsdatei aus dem Verzeichnis **''/etc/ansible/''** in unser Homeverzeichnis.
 +   $ cp /etc/ansible/ansible.cfg ~/.ansible.cfg
 +
 +Unter dem Konfigurationsgruppe **[ defaults ]** setzen wir den Parameter **''inventory = ~/ansible/inventories/production/hosts''** und **''interpreter_python = auto_silent''**. Beim ersten Parameter zeigen wir Ansible, wo die Host-Definitionen zu finden sind. beim Parameter **''interpreter_python''** geben wir an, dass __keine__ Ausgabe zu den Angaben des Pfads zum Python-Interpreter auf dem Raspberry ausgegeben werden soll. Der Parameter **''connect_timeout''** definiert, wie lange eine persistente Verbindung bestehen darf, bevor diese hart getrennt wird. Weitere Information zu den Konfigurationsparametern finden sie in der **[[https://docs.ansible.com/ansible/latest/reference_appendices/config.html|Dokumentation der Konfigurationsoptionen]]** zu Ansible.
 +
 +   $ vim ~/.ansible.cfg
 +
 +Im Ganzen ergibt sich dann hier die doch überschaubare Konfigurationsdatei zu Ansible.
 +   $ egrep -v '(^.*#|^$)' ~/.ansible.cfg 
 +<code>[defaults]
 +inventory          = ~/ansible/inventories/production/hosts
 +interpreter_python = auto_silent
 +[inventory]
 +[privilege_escalation]
 +[paramiko_connection]
 +[ssh_connection]
 +[persistent_connection]
 +connect_timeout = 30
 +[accelerate]
 +[selinux]
 +[colors]
 +[diff]
 +</code>
 +
  
 === Host-Definitionsdatei === === Host-Definitionsdatei ===
 +/*
 Ähnlich wie bereits auch schon die Konfigurationsdatei zu Ansible wird auch die Datei zur Hostdefinition sehr überschaubar bleiben. Ähnlich wie bereits auch schon die Konfigurationsdatei zu Ansible wird auch die Datei zur Hostdefinition sehr überschaubar bleiben.
 Auch hier kopieren wir uns die Vorlagedatei in unser Homeverzeichnis an Ort und Stelle. Auch hier kopieren wir uns die Vorlagedatei in unser Homeverzeichnis an Ort und Stelle.
Zeile 119: Zeile 212:
  
   raspberry-ansible   raspberry-ansible
 +
 +:GO:
 +
 +*/
 +Die Definition unseres Hosts mit den tzugehörigen Variablen beziehen wir später aus dem **[[#kopieren_des_ansible-playbooks|Ansible Playbook Archiv]]**. Somit müssen wir hier nichts extra vorbereiten!
 +
 +
 +
  
 === SSH Konfigurationsdatei === === SSH Konfigurationsdatei ===
Zeile 124: Zeile 225:
    $ vim ~/.ssh/config    $ vim ~/.ssh/config
  
-<code>Host raspberry-ansible+<code>Host raspberry-wireguard
      Hostname 10.0.10.29      Hostname 10.0.10.29
      Port 22      Port 22
Zeile 134: Zeile 235:
 Beim Parameter **''Hostname''** geben wir die IP-Adresse an, die unser **DHCP**-Server dem Raspberry verpasst an; in obigen Konfigurationsbeispiel hat unser Raspberry die IP-Adresse **''10.0.10.29''**. Die Datei mit dem Eingangs erzeugten **[[#erstellen_eines_ssh-schluesselpaares|SSH-Schlüssel]]** geben wir beim Parameter **''IdentityFile''** an. Beim Parameter **''Hostname''** geben wir die IP-Adresse an, die unser **DHCP**-Server dem Raspberry verpasst an; in obigen Konfigurationsbeispiel hat unser Raspberry die IP-Adresse **''10.0.10.29''**. Die Datei mit dem Eingangs erzeugten **[[#erstellen_eines_ssh-schluesselpaares|SSH-Schlüssel]]** geben wir beim Parameter **''IdentityFile''** an.
    
 +==== Klonen des GIT-Repositories (Ansible-Playbook) ====
 +
 +   $ cd ~/ansible
 +   $ git clone https://github.com/Django-BOfH/ffmuc-rpb4-ol.git .
 +Somit ergibt sich folgende Verzeichnis- und Dateistruktur:
 +<code>/ansible/
 +├── filter_plugins
 +│   └── main.yml
 +├── inventories
 +│   ├── production
 +│   │   └── hosts.yml
 +│   └── staging
 +│       └── hosts.yml
 +├── library
 +│   └── main.yml
 +├── LICENSE
 +├── module_utils
 +│   └── main.yml
 +├── README.md
 +├── roles
 +│   ├── basic
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── hostname.yml
 +│   │   │   ├── hosts.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   ├── rfkill.yml
 +│   │   │   ├── update.yml
 +│   │   │   └── usercomment.yml
 +│   │   ├── templates
 +│   │   │   ├── hosts.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── batman
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── backport.yml
 +│   │   │   ├── batmanstart.yml
 +│   │   │   ├── compile.yml
 +│   │   │   ├── install.yml
 +│   │   │   ├── interfaceconfigure.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── modulloads.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   └── utilsinstall.yml
 +│   │   ├── templates
 +│   │   │   ├── batman-adv.module.j2
 +│   │   │   ├── dkms.j2
 +│   │   │   ├── interfaces.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── client-mesh
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── batmanmitwifi.yml
 +│   │   │   ├── batmanohnewifi.yml
 +│   │   │   ├── clientohnemesh.yml
 +│   │   │   ├── getvxlanid.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── meshohneclient.yml
 +│   │   │   └── meshundclient.yml
 +│   │   ├── templates
 +│   │   │   ├── interfaces_client_ohne_mesh.j2
 +│   │   │   ├── interfaces_mesh_mit_client.j2
 +│   │   │   ├── interfaces_mesh_ohne_client.j2
 +│   │   │   ├── main.yml
 +│   │   │   ├── rclocal_both.j2
 +│   │   │   └── rclocal_vxlan.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── common
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── ext-respondd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── aliasgenerate.yml
 +│   │   │   ├── configgenerate.yml
 +│   │   │   ├── copyconfig.yml
 +│   │   │   ├── gitclone.yml
 +│   │   │   ├── gitinstall.yml
 +│   │   │   ├── main.yml
 +│   │   │   └── servicestartup.yml
 +│   │   ├── templates
 +│   │   │   ├── ext-respondd_alias.json.j2
 +│   │   │   ├── ext-respondd_config.json.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── fastd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── directorygenerate.yml
 +│   │   │   ├── fastdconfigure.yml
 +│   │   │   ├── fastdgetsocket.yml
 +│   │   │   ├── fastdinstall.yml
 +│   │   │   ├── fastdkeygen.yml
 +│   │   │   ├── fastdsecretkeyget.yml
 +│   │   │   ├── fastdstartup.yml
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   ├── fastd.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── final
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── main.yml
 +│   │   │   └── reboot.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── hostapd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── configure.yml
 +│   │   │   ├── genconfig.yml
 +│   │   │   ├── install.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── servicestartup.yml
 +│   │   │   └── wlanbridging.yml
 +│   │   ├── templates
 +│   │   │   ├── hostapd.j2
 +│   │   │   ├── main.yml
 +│   │   │   └── rclocal_wifi.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── kvm_hostgen
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── generate.yml
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── kvm-new
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── oled
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── adafruitclone.yml
 +│   │   │   ├── adafruitconfig.yml
 +│   │   │   ├── i2c_arm.yml
 +│   │   │   ├── i2c-bcm2708.yml
 +│   │   │   ├── i2c-dev.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── packages.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   ├── scriptclone.yml
 +│   │   │   ├── scriptconfig.yml
 +│   │   │   ├── scriptstartup.yml
 +│   │   │   └── scriptstart.yml
 +│   │   ├── templates
 +│   │   │   ├── bandwidth.j2
 +│   │   │   ├── config.j2
 +│   │   │   ├── main.yml
 +│   │   │   └── oled-bandwidth.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── vxlan
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── configure.yml
 +│   │   │   ├── main.yml
 +│   │   │   └── vxlanstart.yml
 +│   │   ├── templates
 +│   │   │   ├── main.yml
 +│   │   │   ├── systemd-service-file.j2
 +│   │   │   └── vxlan-init.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   └── wireguard
 +│       ├── defaults
 +│       │   └── main.yml
 +│       ├── files
 +│       │   └── main.yml
 +│       ├── handlers
 +│       │   └── main.yml
 +│       ├── meta
 +│       │   └── main.yml
 +│       ├── tasks
 +│       │   ├── brokerinform.yml
 +│       │   ├── checkup.yml
 +│       │   ├── configuration.yml
 +│       │   ├── genkeys.yml
 +│       │   ├── genlinklocal.yml
 +│       │   ├── install.yml
 +│       │   ├── main.yml
 +│       │   ├── radv-filter.yml
 +│       │   └── wireguardstart.yml
 +│       ├── templates
 +│       │   ├── broker.j2
 +│       │   ├── checkup.j2
 +│       │   ├── crontab.j2
 +│       │   ├── main.yml
 +│       │   ├── radv-filter.j2
 +│       │   └── uplink.j2
 +│       └── vars
 +│           └── main.yml
 +└── wireguard-offloader.yml
 +</code>
 ==== Kopieren des Ansible-Playbooks ==== ==== Kopieren des Ansible-Playbooks ====
-Nun können wir uns "endlich" daran machen unseren Offloader auf Basis eines Raspberry 4B zu bauen. Hierzu greifen wir auf folgendes Playbook zurück und laden es uns auf unseren Rechner.: +Nun können wir uns "endlich" daran machen unseren Offloader auf Basis eines Raspberry 4B zu bauen. Hierzu greifen wir auf folgendes Playbook zurück und laden es uns auf unseren Rechner
-  * {{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz}}((Version v2 vom 09.03.2020))  +  * **{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v6.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v6.tar.gz}}((Version v6 vom 22.02.2021)) ( WireGuard )**  
-  * {{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz}}((Version v1 vom 14.02.2020))+  * //{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v5.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v5.tar.gz}}((Version v5 vom 17.02.2021)) ( WireGuard )// 
 +  * //{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v4.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v4.tar.gz}}((Version v4 vom 12.12.2020)) ( WireGuard )// 
 +  * //{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v3.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v3.tar.gz}}((Version v3 vom 20.11.2020)) ( FASTD )// 
 +  * //{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz}}((Version v2 vom 09.03.2020)) ( FASTD )// 
 +  * //{{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz}}((Version v1 vom 14.02.2020)) ( FASTD )//
  
-   $ wget https://wiki.mailserver.guru/lib/exe/fetch.php/centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz \ +   $ wget 
-          -O ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.tar.gz+         https://wiki.mailserver.guru/lib/exe/fetch.php/centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v6.tar.gz \ 
 +         -O ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.tar.gz
  
 Anschließend entpacken wir es an Ort und Stelle. Anschließend entpacken wir es an Ort und Stelle.
Zeile 147: Zeile 555:
 Somit ergibt sich folgende Verzeichnis- und Dateistruktur: Somit ergibt sich folgende Verzeichnis- und Dateistruktur:
 <code>ansible <code>ansible
-├── inventory +├── filter_plugins 
-│   └── hosts +├── inventories 
-└── playbooks +│   ├── production 
-    ├── raspi_offloader_file.yml +│   │   ├── group_vars 
-    ├── raspi_offloader_menu.yml +│   │   ├── hosts.yml 
-    └── templates +│   │   └── host_vars 
-        └── Raspbian +│   └── staging 
-            ├── bandwidth.j2 +│       ├── group_vars 
-            ├── batman-adv.module.j2 +│       ├── hosts.yml 
-            ├── config.j2 +│       └── host_vars 
-            ├── dkms.j2 +├── library 
-            ├── ext-respondd_alias.json.j2 +├── module_utils 
-            ├── ext-respondd_config.json.j2 +├── roles 
-            ├── fastd.j2 +│   ├── basic 
-            ├── hostapd.j2 +│   │   ├── defaults 
-            ├── hosts.j2 +│   │   │   └── main.yml 
-            ├── interfaces.j2 +│   │   ├── files 
-            ├── interfaces_client_ohne_mesh.j2 +│   │   │   └── main.yml 
-            ├── interfaces_mesh_mit_client.j2 +│   │   ├── handlers 
-            ├── interfaces_mesh_ohne_client.j2 +│   │   │   └── main.yml 
-            ├── oled-bandwidth.j2 +│   │   ├── library 
-            ├── rclocal_both.j2 +│   │   ├── lookup_plugin 
-            ├── rclocal_vxlan.j2 +│   │   ├── meta 
-            └── rclocal_wifi.j2</code> +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── hostname.yml 
 +│   │   │   ├── hosts.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── reboot.yml 
 +│   │   │   ├── rfkill.yml 
 +│   │   │   ├── update.yml 
 +│   │   │   └── usercomment.yml 
 +│   │   ├── templates 
 +│   │   │   ├── hosts.j2 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── batman 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── backport.yml 
 +│   │   │   ├── batmanstart.yml 
 +│   │   │   ├── compile.yml 
 +│   │   │   ├── install.yml 
 +│   │   │   ├── interfaceconfigure.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── modulloads.yml 
 +│   │   │   ├── reboot.yml 
 +│   │   │   └── utilsinstall.yml 
 +│   │   ├── templates 
 +│   │   │   ├── batman-adv.module.j2 
 +│   │   │   ├── dkms.j2 
 +│   │   │   ├── interfaces.j2 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── client-mesh 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── batmanmitwifi.yml 
 +│   │   │   ├── batmanohnewifi.yml 
 +│   │   │   ├── clientohnemesh.yml 
 +│   │   │   ├── getvxlanid.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── meshohneclient.yml 
 +│   │   │   └── meshundclient.yml 
 +│   │   ├── templates 
 +│   │   │   ├── interfaces_client_ohne_mesh.j2 
 +│   │   │   ├── interfaces_mesh_mit_client.j2 
 +│   │   │   ├── interfaces_mesh_ohne_client.j2 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── rclocal_both.j2 
 +│   │   │   └── rclocal_vxlan.j2 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── common 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   └── main.yml 
 +│   │   ├── templates 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── ext-respondd 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── aliasgenerate.yml 
 +│   │   │   ├── configgenerate.yml 
 +│   │   │   ├── copyconfig.yml 
 +│   │   │   ├── gitclone.yml 
 +│   │   │   ├── gitinstall.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   └── servicestartup.yml 
 +│   │   ├── templates 
 +│   │   │   ├── ext-respondd_alias.json.j2 
 +│   │   │   ├── ext-respondd_config.json.j2 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── fastd 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── directorygenerate.yml 
 +│   │   │   ├── fastdconfigure.yml 
 +│   │   │   ├── fastdgetsocket.yml 
 +│   │   │   ├── fastdinstall.yml 
 +│   │   │   ├── fastdkeygen.yml 
 +│   │   │   ├── fastdsecretkeyget.yml 
 +│   │   │   ├── fastdstartup.yml 
 +│   │   │   └── main.yml 
 +│   │   ├── templates 
 +│   │   │   ├── fastd.j2 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── final 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── main.yml 
 +│   │   │   └── reboot.yml 
 +│   │   ├── templates 
 +│   │   │   └── main.yml 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── hostapd 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── configure.yml 
 +│   │   │   ├── genconfig.yml 
 +│   │   │   ├── install.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── servicestartup.yml 
 +│   │   │   └── wlanbridging.yml 
 +│   │   ├── templates 
 +│   │   │   ├── hostapd.j2 
 +│   │   │   ├── main.yml 
 +│   │   │   └── rclocal_wifi.j2 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── oled 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── adafruitclone.yml 
 +│   │   │   ├── adafruitconfig.yml 
 +│   │   │   ├── i2c_arm.yml 
 +│   │   │   ├── i2c-bcm2708.yml 
 +│   │   │   ├── i2c-dev.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── packages.yml 
 +│   │   │   ├── reboot.yml 
 +│   │   │   ├── scriptclone.yml 
 +│   │   │   ├── scriptconfig.yml 
 +│   │   │   ├── scriptstartup.yml 
 +│   │   │   └── scriptstart.yml 
 +│   │   ├── templates 
 +│   │   │   ├── bandwidth.j2 
 +│   │   │   ├── config.j2 
 +│   │   │   ── main.yml 
 +│   │   │   └── oled-bandwidth.j2 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   ├── vxlan 
 +│   │   ├── defaults 
 +│   │   │   └── main.yml 
 +│   │   ├── files 
 +│   │   │   └── main.yml 
 +│   │   ├── handlers 
 +│   │   │   └── main.yml 
 +│   │   ├── library 
 +│   │   ├── lookup_plugin 
 +│   │   ├── meta 
 +│   │   │   └── main.yml 
 +│   │   ├── module_utils 
 +│   │   ├── tasks 
 +│   │   │   ├── configure.yml 
 +│   │   │   ├── main.yml 
 +│   │   │   └── vxlanstart.yml 
 +│   │   ├── templates 
 +│   │   │   ├── main.yml 
 +│   │   │   ├── systemd-service-file.j2 
 +│   │   │   └── vxlan-init.j2 
 +│   │   └── vars 
 +│   │       └── main.yml 
 +│   └── wireguard 
 +│       ├── defaults 
 +│       │   └── main.yml 
 +│       ├── files 
 +│       │   └── main.yml 
 +│       ├── handlers 
 +│       │   └── main.yml 
 +│       ├── library 
 +│       ├── lookup_plugin 
 +│       ├── meta 
 +│       │   └── main.yml 
 +│       ├── module_utils 
 +│       ├── tasks 
 +│       │   ├── brokerinform.yml 
 +│       │   ├── checkup.yml 
 +│       │   ├── configuration.yml 
 +│       │   ├── genkeys.yml 
 +│       │   ├── genlinklocal.yml 
 +│       │   ├── install.yml 
 +│       │   ├── main.yml 
 +│       │   └── wireguardstart.yml 
 +│       ├── templates 
 +│       │   ├── broker.j2 
 +│       │   ├── checkup.j2 
 +│       │   ├── crontab.j2 
 +│       │   ├── main.yml 
 +│       │   └── uplink.j2 
 +│       └── vars 
 +│           └── main.yml 
 +└── wireguard-offloader.yml 
 +</code> 
 +==== Aufbau des Ansible-Playbooks - Inhalte ====
 Nachfolgend finden wir die Inhalte der einzelnen Dateien die im ansible-playbook enthalten sind: Nachfolgend finden wir die Inhalte der einzelnen Dateien die im ansible-playbook enthalten sind:
-=== raspi_offloader_file.yml === +=== Inventory-Definition === 
-<file java raspi_offloader_file.yml>--- ### Ansible Playbook für (statische) Konfiguration eines Offloader auf Basis eines Raspberry PI 4B +<file java ~/ansible/inventories/production/hosts.yml>--- #YAML start syntax (optional) 
-- name:         raspi_offloader_file.yml +ffmuc: 
-  hosts:        raspberry-ansible+  children: 
 +    ffmuc_deb: 
 +      vars: 
 +        ansible_ssh_user: pi 
 +      hosts: 
 +        raspberry-wireguard: 
 +          wireguard_ports: 
 +            muc_cty:            40002 
 +            muc_nord:           40003 
 +            muc_ost:            40004 
 +            muc_sued:           40005 
 +            muc_west:           40006 
 +            uml_nord:           40007 
 +            uml_ost:            40008 
 +            uml_sued:           40009 
 +            uml_west:           40010 
 +            gauting:            40012 
 +            freising:           40013 
 +            welt:               40011 
 +          vxlan_ids: 
 +            muc_cty:            10758607 
 +            muc_nord:           15521492 
 +            muc_ost:            2948862 
 +            muc_sued:           8599288 
 +            muc_west:           7318933 
 +            uml_nord:           5705961 
 +            uml_ost:            4892713 
 +            uml_sued:           16544703 
 +            uml_west:           16677749 
 +            gauting:            16175732 
 +            freising:           12937858 
 +            welt:               16306234 
 +          gw_linklocal: 
 +            gw04:               "fe80::27c:16ff:fec0:6c74" 
 +            gw05:               "fe80::281:8eff:fef0:73aa" 
 +            gw06:               "fe80::2a2:e4ff:fef9:2269" 
 +            gw07:               "fe80::23b:d2ff:fe95:967f" 
 +          gw_publickey: 
 +            gw04:               "TszFS3oFRdhsJP3K0VOlklGMGYZy+oFCtlaghXJqW2g=" 
 +            gw05:               "igyqOmWiz4EZxPG8ZzU537MnHhaqlwfa7HarB3KmnEg=" 
 +            gw06:               "pkRaUOoLuuHnUt9BEGeKrhF3OMYBPecc0iYkika6uhE=" 
 +            gw07:               "PcKkakZcTEx3LKh+G06Opb8/esg08aWK33A5/Ff1YXE="       
 +          gw_vxlan_ids: 
 +            muc_cty:            3836090 
 +            muc_nord:           1920014 
 +            muc_ost:            12097488 
 +            muc_sued:           12815947 
 +            muc_west:           29149 
 +            uml_nord:           403289 
 +            uml_ost:            12645856 
 +            uml_sued:           12090508 
 +            uml_west:           935867 
 +            gauting:            4681119 
 +            freising:           4669918 
 +            welt:               4831583 
 +          batman_adv_version:   "2020.4" 
 +          ffmuc_segment:        "muc_ost" 
 +          ffmuc_gateway:        "gw04" 
 +          raspberry_hostname:   "raspbian-ansible-offloader" 
 +          node_contact_address: "https://bit.ly/2VxGoXp" 
 +          raspberry_latitude:   "48.239094621" 
 +          raspberry_longitude:  "11.558936834" 
 +          raspberry_wifi:       "ja" 
 +          raspberry_clientvlan: "123" 
 +          raspberry_meshvlan:   "456" 
 +          raspberry_oled:       "ja" 
 +          dtparam:              "i2c_arm=on" 
 +... #YAML ende syntax (optional) 
 +</file> 
 + 
 + 
 +=== Playbook "main" === 
 +<file java ~/ansible/wireguard-offloader.yml>--- # Ansible Playbook für (statische) Konfiguration eines Offloader auf Basis eines Raspberry PI 4B 
 +- name:         raspi_offloader_file.yml  
 +  hosts:        raspberry-wireguard
   become:       yes   become:       yes
   become_user:  root   become_user:  root
  
-  vars+  roles
-    fastd_ports: +    - basic         # Basiskonfiguration des Hosts (Host-/Username anpassen und System Updaten) 
-      muc_cty:  30002 +    - batman        # Installation und Konfiguration der BATMAN Kernel-Module 
-      muc_nord: 30003 +    - wireguard     # Installation und Konfiguration des wireguard Tunnels 
-      muc_ost:  30004 +    - vxlan         # Konfiguration von VXLAN für wireguard-Tunnel-Verbindung in Richtung Gateway 
-      muc_sued: 30005 +    - ext-respondd  # Installation und Konfiguration des ext-respondd (Statistiken für https://map.ffmuc.net) 
-      muc_west: 30006 +    - hostapd       # Installation und Konfiguration des hostap Treibers für den WiFi-Support 
-      uml_nord: 30007 +    - client-mesh   # Grundkonfiguration von Client und/oder Meshing (V)LANs 
-      uml_ost:  30008 +    - oled          # Konfiguration eines OLEDisplays sofern eines am Respberry 4B verbaut ist 
-      uml_sued: 30009 +    - final         # Reboot nach Abschluss der Konfiguration unseres Offloaders 
-      uml_west: 30010 +
-      gauting:  30012 +
-      freising: 30013 +
-      welt:     30011  +
-    vxlan_ids: +
-      muc_cty:  10758607 +
-      muc_nord: 15521492 +
-      muc_ost:  2948862 +
-      muc_sued: 8599288 +
-      muc_west: 7318933 +
-      uml_nord: 5705961 +
-      uml_ost:  4892713 +
-      uml_sued: 16544703 +
-      uml_west: 16677749 +
-      gauting:  16175732 +
-      freising: 12937858 +
-      welt:     16306234 +
-    batman_adv_version:   "2019.5"  +
-    ffmuc_segment:        "welt" +
-    raspberry_hostname:   "ff_django_rpb4_ansible" +
-    node_contact_address: "BOfH aka Django : django@nausch.org" +
-    raspberry_latitude  "48.158542598" +
-    raspberry_longitude:  "11.769297123" +
-    raspberry_wifi:       "ja" +
-    raspberry_clientvlan: "333" +
-    raspberry_meshvlan:   "666" +
-    raspberry_oled:       "ja" +
-    dtparam:              "i2c_arm=on"+
  
-  tasks: +... # YML Ende 
-    - name: Hostname ändern +</file>
-      shell: hostnamectl set-hostname {{ raspberry_hostname }}+
  
-    nameAnpassung /etc/hosts +=== Rolle "basic" === 
-      template+== Tasks == 
-        srcRaspbian/hosts.j2 +<file java ~/ansible/roles/basic/tasks/main.yml>--- # Grundkonfiguration und Systemupgrade des Raspberry Pi OS 
-        dest: /etc/hosts+- includehostname.yml                 # Hostname ändern 
 +- include: hosts.yml                    # /etc/hosts anpassen 
 +- includeusercomment.yml              # Beschreibung des User 'pi' anpassen 
 +- includerfkill.yml                   # Service rfkill bei Raspberry Pi OS deaktivieren 
 +- includeupdate.yml                   # Update und Upgrade der APT-Pakete 
 +- include: reboot.yml                   # Reboot nach update 
 +</file>
  
-    - name: Beschreibung des User 'pi' anpassen +<file java ~/ansible/roles/basic/tasks/hostname.yml>--- 
-      user+  - name: "Hostname ändern" 
-        namepi +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        comment"Raspbian System User" +    shell:  
-        state: present+      cmdhostnamectl set-hostname {{ raspberry_hostname }} 
 +</file>
  
-    - name: Service rfkill am Raspberry deaktivieren +<file java ~/ansible/roles/basic/tasks/hosts.yml>--- 
-      shellrfkill unblock wifi+  - name: "Template Konfigurationsdatei für /etc/hosts an Ort und Stelle kopieren und Variablen anpassen" 
 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      srctemplates/hosts.j2 
 +      dest: /etc/hosts 
 +</file>
  
-    - name: Update und Upgrade der APT-Pakete +<file java ~/ansible/roles/basic/tasks/usercomment.yml>--- 
-      apt+  - name: "Beschreibung des User 'pi' anpassen" 
-        upgradedist +    # https://docs.ansible.com/ansible/latest/modules/user_module.htm 
-        update_cacheyes+    user:  
 +      namepi 
 +      comment"Raspberry Pi OS System User" 
 +      statepresent 
 +</file>
  
-    - name: Reboot nach update +<file java ~/ansible/roles/basic/tasks/rfkill.yml>--- 
-      reboot:+  - name: "Service rfkill am Raspberry deaktivieren" 
 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell:  
 +      cmdrfkill unblock wifi 
 +</file>
  
-    - name: Download des aktuellen BATMAN Archives  +<file java ~/ansible/roles/basic/tasks/update.yml>--- 
-      get_url: +  - name: "Update und Upgrade der APT-Pakete" 
-        url: https://downloads.open-mesh.org/batman/releases/batman-adv-{{ batman_adv_version }}/batman-adv-{{ batman_adv_version }}.tar.gz +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-        dest/usr/src/batman-adv-{{ batman_adv_version }}.tar.gz +    apt:  
-        mode'0644'+      upgradedist 
 +      update_cache: yes 
 +</file>
  
-    - name: BATMAN-Archiv entpacken +<file java ~/ansible/roles/basic/tasks/reboot.yml>--- 
-      unarchive+  - name: "Reboot nach update" 
-        src: /usr/src/batman-adv-{{ batman_adv_version }}.tar.gz +    # https://docs.ansible.com/ansible/latest/modules/reboot_module.html 
-        dest: /usr/src +    reboot: 
-        remote_srcyes+</file> 
 +== Templates == 
 +<file java ~/ansible/roles/basic/templates/hosts.j2>127.0.0.1 localhost {{ raspberry_hostname }} 
 +::1 localhost ip6-localhost ip6-loopback 
 +ff02::1 ip6-allnodes 
 +ff02::2 ip6-allrouters 
 +</file> 
 +=== Rolle "batman" === 
 +== Tasks == 
 +<file java ~/ansible/roles/batman/tasks/main.yml>--- # Installation und Konfiguration von BATMAN 
 +- includeinstall.yml                  # Download des aktuellen BATMAN Archives 
 +- include: compile.yml                  # BATMAN Kernel-Module erzeugen 
 +- include: modulloads.yml               # MATMAN-ADV und DUMMY Module laden 
 +- include: backport.yml                 # Buster-backports für Installation von batctl vorbereiten 
 +- include: utilsinstall.yml             # Installation der bridge-utils und batctl  
 +- include: batmanstart.yml              # Aktivierung von BATMAN_V 
 +- include: interfaceconfigure.yml       # Konfiguration der Interfaces 
 +- include: reboot.yml                   # Rebot nach Ende des Installationsschritts 
 +</file>
  
-    - name: Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi Linux Kernel +<file java ~/ansible/roles/batman/tasks/install.yml>--- 
-      apt+  - name: "*BATMAN Installation* : Download des aktuellen BATMAN Archives" 
-        update_cacheyes +    # https://docs.ansible.com/ansible/latest/modules/get_url_module.html 
-        pkg: +    get_url:  
-          dkms +      urlhttps://downloads.open-mesh.org/batman/releases/batman-adv-{{ batman_adv_version }}/batman-adv-{{ batman_adv_version }}.tar.gz 
-          raspberrypi-kernel-headers +      dest: /usr/src/batman-adv-{{ batman_adv_version }}.tar.gz 
-        statepresent+      mode'0644'
  
-    - name: Rebuild BATMAN Kernel Header Dateien +  - name: "*BATMAN Installation* : Entpacken des BATMAN-Archives" 
-      make+    # https://docs.ansible.com/ansible/latest/modules/unarchive_module.html 
-        chdir: /usr/src/linux-headers-{{ ansible_kernel }} +    unarchive: 
-        targetscripts +      src: /usr/src/batman-adv-{{ batman_adv_version }}.tar.gz 
-      ignore_errors: yes+      dest/usr/src 
 +      remote_src: yes 
 +</file>
  
-    - name: Anlegen der dkms.conf für Dynamic Kernel Module Support +<file java ~/ansible/roles/batman/tasks/compile.yml>--- 
-      template+  - name: "*BATMAN compile* : Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi OS Linux Kernel" 
-        srcRaspbian/dkms.j2 +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-        dest: /usr/src/batman-adv-{{ batman_adv_version }}/dkms.conf+    apt:  
 +      update_cacheyes 
 +      pkg: 
 +        - dkms 
 +        - raspberrypi-kernel-headers 
 +      state: present
  
-    - name: Dynamic Kernel Module Support hinzufügen +  - name: "*BATMAN compile* : Rebuild BATMAN Kernel Header Dateien" 
-      #becomeyes +    https://docs.ansible.com/ansible/latest/modules/make_module.html 
-      commanddkms add -m batman-adv -v {{ batman_adv_version }} +    make
-      registerret +      chdir/usr/src/linux-headers-{{ ansible_kernel }} 
-      failed_whenret.rc != 0 and ret.rc != 3 +      targetscripts 
-      changed_when: ret.rc == 0+    ignore_errorsyes
  
-    - name: Dynamic Kernel Module Support bauen +  - name: "*BATMAN compile* : Anlegen der dkms.conf für Dynamic Kernel Module Support" 
-      #becomeyes +    https://docs.ansible.com/ansible/latest/modules/template_module.html 
-      command: dkms build -m batman-adv -{{ batman_adv_version }}+    template
 +      srctemplates/dkms.j2 
 +      dest: /usr/src/batman-adv-{{ batman_adv_version }}/dkms.conf
  
-    - name: Dynamic Kernel Module Support installieren +  - name: "*BATMAN compile* : Dynamic Kernel Module Support hinzufügen" 
-      #becomeyes +    https://docs.ansible.com/ansible/latest/modules/command_module.html 
-      command: dkms install -m batman-adv -v {{batman_adv_version }}+    command: dkms add -m batman-adv -v {{ batman_adv_version }} 
 +    register: ret 
 +    failed_when: ret.rc != 0 and ret.rc != 3 
 +    changed_when: ret.rc == 0
  
-    - name: Laden des Kernelmodul beim Booten veranlassen +  - name: "*BATMAN compile* Dynamic Kernel Module bauen" 
-      template+    # https://docs.ansible.com/ansible/latest/modules/command_module.html 
-        srcRaspbian/batman-adv.module.j2 +    command: dkms build -batman-adv -v {{ batman_adv_version }}
-        dest: /etc/modules-load.d/batman-adv.module.conf+
  
-    - name: Laden des BATMAN Moduls +  - name: "*BATMAN compile* : BATMAN Dynamic Kernel Module installieren" 
-      #becomeyes +    https://docs.ansible.com/ansible/latest/modules/command_module.html 
-      modprobe+    commanddkms install -m batman-adv -v {{batman_adv_version }} 
-        name: batman_adv +</file>
-        state: present+
  
-    - name: Laden des dummy Moduls +<file java ~/ansible/roles/batman/tasks/modulloads.yml>--- 
-      #becomeyes +  - name: "*BATMAN load-modules* : Laden der BATMAN Dynamic Kernel Module beim Booten sicherstellen" 
-      modprobe+    https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        namedummy +    template:  
-        statepresent+      srctemplates/batman-adv.module.j2 
 +      dest/etc/modules-load.d/batman-adv.module.conf
  
-    - name: Installation der  bridge-utils +  - name: "*BATMAN load-modules* : dummy Modul laden" 
-      apt+    # https://docs.ansible.com/ansible/latest/modules/modprobe_module.html 
-        update_cacheyes +    modprobe:  
-        pkg+      namedummy 
-         - batctl +      state: present
-         - bridge-utils +
-        state: present+
  
-    - name: Aktivierung von BATMAN_V +  - name: "*BATMAN load-modules* : BATMAN-ADV Modul laden" 
-      shellbatctl ra BATMAN_V+    # https://docs.ansible.com/ansible/latest/modules/modprobe_module.html 
 +    modprobe:  
 +      namebatman_adv 
 +      state: present 
 +</file>
  
-    - name: Konfiguration des Interfaces +<file java ~/ansible/roles/batman/tasks/backport.yml>--- 
-      template+  - name: "*buster-backport* PGP-Schlüssel 04EE7237B7D453EC für buster-backports installieren" 
-        srcRaspbian/interfaces.j2 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        dest: /etc/network/interfaces+    shell: 
 +      cmd: apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-key 04EE7237B7D453EC
  
-    - name: Installation von FASTD +  - name: "*buster-backport* : PGP-Schlüssel 648ACFD622F3D138 für buster-backports installieren" 
-      #becomeyes +    https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-      apt+    shell
-        namefastd +      cmdapt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-key 648ACFD622F3D138
-        statepresent+
  
-    - name: Verzeichnis für fastdKonfigurationsdatei anlegen +  - name: "*buster-backport* buster-backports dem System bekannt machen" 
-      file:  +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        path: /etc/fastd/{{ ffmuc_segment }}  +    shell: 
-        statedirectory+      cmd: echo "deb http://deb.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/buster-backports.list
  
-    - name: Schlüssel für fastd erstellen +  - name: "*buster-backport* APT-Cache aktualisieren"  
-      shellfastd --generate-key > /root/fastd.key+    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
 +    apt: 
 +      update_cache: yes 
 +</file>
  
-    - name: FASTD Secret Key aus /root/fastd.key in Variable übergeben +<file java ~/ansible/roles/batman/tasks/utilsinstall.yml>--- 
-      shell: grep Secret /root/fastd.key | awk '{print substr($0,9)}'  +  - name: "*utils-installation* : Installation der bridge-utils" 
-      registersecretkey_var+    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
 +    apt:  
 +      #update_cache: yes 
 +      pkg: 
 +       - bridge-utils 
 +       - dnsutils 
 +       - vim 
 +      statepresent
  
-    - name: FASTD Socket ermitteln +  - name: "*utils-installation* : Installation der bridge-utils" 
-      set_fact+    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-        ffmuc_fast_port"{{ item.value }}" +    apt: 
-      loop"{{ lookup('dict', fastd_ports) }}" +      #update_cacheyes 
-      when"ffmuc_segment in item.key"+      pkg
 +      - batctl 
 +      default_releasebuster-backports 
 +      statepresent 
 +</file>
  
-    - name: Erstellen der fastd Konfigurationsdatei +<file java ~/ansible/roles/batman/tasks/batmanstart.yml>--- 
-      template+  - name: "*BATMAN-ADV* Aktivierung von BATMAN_V" 
-        srcRaspbian/fastd.j2 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        dest: /etc/fastd/{{ ffmuc_segment }}/fastd.conf+    shell:  
 +      cmd: batctl ra BATMAN_V 
 +</file>
  
-    - name: Service fastd beim Booten starten +<file java ~/ansible/roles/batman/tasks/interfaceconfigure.yml>--- 
-      systemd+  - name: "*BATMAN-ADV Interfaces* : Konfiguration des Interfaces"   
-        namefastd@{{ ffmuc_segment }} +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        statestarted +    template
-        enabledyes+      srctemplates/interfaces.j2 
 +      dest/etc/network/interfaces 
 +</file>
  
-    - name: Installation der Pakete git und python3-netifaces +<file java ~/ansible/roles/batman/tasks/reboot.yml>--- 
-      apt+  - name: "*BATMAN Installation* : Reboot nach Ende der BATMAN Installationsschritte" 
-        update_cacheyes +    # https://docs.ansible.com/ansible/latest/modules/reboot_module.html 
-        pkg: +    reboot
-          - git +</file>
-          - python3-netifaces +
-        state: present+
  
-    - name: Repo ext-respondd klonen +== Templates == 
-      git: +<file java ~/ansible/roles/batman/templates/batman-adv.module.j2># 
-        repo: https://github.com/freifunkMUC/ext-respondd  +# Load batman-adv module on system boot 
-        dest: /opt/ext-respondd/+
 +batman-adv 
 +dummy 
 +</file>
  
-    - name: Systemd Startdatei für respondd kopieren +<file java ~/ansible/roles/batman/templates/dkms.j2>PACKAGE_NAME=batman-adv 
-      shell: cp /opt/ext-respondd/ext-respondd.service.example /etc/systemd/system/ext-respondd.service+PACKAGE_VERSION={{ batman_adv_version }}
  
-    - name: Erstellen der resondd Konfigurationsdatei alias.json +DEST_MODULE_LOCATION=/extra 
-      template: +BUILT_MODULE_NAME=batman-adv 
-        src: Raspbian/ext-respondd_alias.json.j2 +BUILT_MODULE_LOCATION=net/batman-adv
-        dest: /opt/ext-respondd/alias.json+
  
-    - name: Erstellen der resondd Konfigurationsdatei config.json +MAKE="'make'" 
-      template: +CLEAN="'make' clean"
-        src: Raspbian/ext-respondd_config.json.j2 +
-        dest: /opt/ext-respondd/config.json+
  
-    - name: Service ext-respondd beim Booten starten +AUTOINSTALL="yes" 
-      systemd: +</file>
-        name: ext-respondd +
-        daemon_reload: yes +
-        state: started +
-        enabled: yes+
  
-    - name: Paket hostapd für WLAN installieren 
-      apt: 
-        update_cache: yes 
-        pkg: 
-          - hostapd 
-        state: present 
-      when: ( raspberry_wifi == "ja" 
  
-    - name: hostapd konfigurieren +<file java ~/ansible/roles/batman/templates/interfaces.j2># interfaces(5) file used by ifup(8) and ifdown(8)
-      shell: echo 'DAEMON_OPTS="-d"' >> /etc/default/hostapd +
-      when: raspberry_wifi == "ja" )+
  
-    - name: hostapd Konfigurationsdatei anlegen   +# Please note that this file is written to be used with dhcpcd 
-      template: +# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
-        src: Raspbian/hostapd.j2  +
-        dest: /etc/hostapd/hostapd.conf  +
-      when: ( raspberry_wifi == "ja" )+
  
-    - name: wlan0 in Bridge packen +# Include files from /etc/network/interfaces.d: 
-      template: +# source-directory /etc/network/interfaces.d
-        src: Raspbian/rclocal_wifi.j2 +
-        dest: /etc/rc.local +
-      when: ( raspberry_wifi == "ja" )+
  
-    name: Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen +auto eth0 
-      systemd: +iface eth0 inet dhcp 
-        name: hostapd +  
-        enabled: yes +auto br-{{ ffmuc_segment }} 
-        maskedno +iface br-{{ ffmuc_segment }} inet dhcp 
-        statestarted +        bridge-ports bat-{{ ffmuc_segment }} 
-      when: ( raspberry_wifi == "ja" )+        pre-up /usr/sbin/batctl ra BATMAN_V 
 +        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} 
 +        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} 
 +</file>
  
-    - name: Konfiguration des Client-VLAN ohne Mesh-Netz 
-      template: 
-        src: Raspbian/interfaces_client_ohne_mesh.j2 
-        dest: /etc/network/interfaces  
-      when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length == 0 ) 
  
-    namevxlan_id für ausgewähltes Segment ermitteln +=== Rolle "wireguard" === 
-      set_fact+== Tasks == 
-        ffmuc_vxlan_id"{{ item.value }}" +<file java ~/ansible/roles/wireguard/tasks/main.yml>--- # Installation und Konfiguration von WIREGUARD 
-      loop"{{ lookup('dict', vxlan_ids) }}" +- includeinstall.yml                  # Installation des wireguard-Paketes 
-      when"ffmuc_segment in item.key"  +- includegenkeys.yml                  # Schlüsselmaterial erzeugen 
 +- includegenlinklocal.yml             # lokale link-local IPv6 Adresse generieren 
 +- includeconfiguration.yml            # Konfigurationsdatei kopieren und anpassen 
 +- includebrokerinform.yml             # Public-Key unseres Nodes an den Broker übermitteln  
 +- include: wireguardstart.yml           # Aktivierung des wireguard client-daemon 
 +- include: checkup.yml                  # Wireguard überprüfen 
 +</file>
  
-    name: Konfiguration des Mesh-VLAN ohne Client-VLAN +<file java ~/ansible/roles/wireguard/tasks/install.yml>--- 
-      template+  - name"*wireguard* : Installation von wireguard" 
-        srcRaspbian/interfaces_mesh_ohne_client.j2 +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-        dest: /etc/network/interfaces +    apt:  
-      when( raspberry_clientvlan|length == 0 ) and ( raspberry_meshvlan|length 0 )+      #update_cacheyes 
 +      pkg: 
 +       - wireguard 
 +      state: present 
 +</file>
  
-    name: Konfiguration von Meshund Client-VLAN +<file java ~/ansible/roles/wireguard/tasks/genkeys.yml>--- 
-      template+  - name: "*wireguard* Schlüsselmaterial erstellen" 
-        srcRaspbian/interfaces_mesh_mit_client.j2 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        dest: /etc/network/interfaces +    shell: /usr/bin/wg genkey | tee client_private.key | wg pubkey | tee client_public.key  
-      when( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length > 0 )+    args: 
 +      chdir: /etc/wireguard
 +      createsclient_private.key  
  
-    - name: Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung +  - name: "*wireguard* : Zugriffsrechte des Private Keys anpassen" 
-      template: +    # https://docs.ansible.com/ansible/latest/modules/file_module.html 
-        src: Raspbian/rclocal_vxlan.j2 +    file:  
-        dest: /etc/rc.local +      path: /etc/wireguard/client_private.key 
-      when( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi != "ja" )+      mode'0600'
  
-    - name: Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung +  - name: "*wireguard* : Zugriffsrechte des Public Keys anpassen" 
-      template: +    # https://docs.ansible.com/ansible/latest/modules/file_module.html 
-        src: Raspbian/rclocal_both.j2 +    file:  
-        dest: /etc/rc.local +      path: /etc/wireguard/client_public.key 
-      when( raspberry_meshvlan|length 0 ) and ( raspberry_wifi == "ja" )      +      mode'0600' 
 +</file>
  
-    - name: Für OLED-Konfiguration i2c-bcm2708 in /etc/modules eintragen +<file java ~/ansible/roles/wireguard/tasks/genlinklocal.yml>--- 
-      shell: echo i2c-bcm2708 >> /etc/modules +  - name: "*wireguard* : lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen" 
-      when: raspberry_oled == "ja" )+    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell: cat /etc/wireguard/client_public.key | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/fe80::02\1:\2ff:fe\3:\4\5/' 
 +    register: wg_node_linklocal 
 +</file>
  
-    - name: Für OLED-Konfiguration i2c-dev in /etc/modules eintragen +<file java ~/ansible/roles/wireguard/tasks/configuration.yml>--- 
-      shell: echo i2c-dev >> /etc/modules +  - name: "*wireguard* : private-key einlesen und in Variable übergeben" 
-      when( raspberry_oled == "ja" )+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/shell_module.html 
 +    shell: cat /etc/wireguard/client_private.key 
 +    registerwg_client_privatekey
  
-    - name: Installation der für das OLED benötigten Pakete +  - name: "*wireguard* public-key einlesen und in Variable übergeben" 
-      apt+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/shell_module.html 
-        update_cacheyes +    shellcat /etc/wireguard/client_public.key 
-        pkg: +    registerwg_client_publickey
-          - python3-dev  +
-          - python3-smbus  +
-          - i2c-tools  +
-          - python3-pil  +
-          - python3-pip  +
-          - python3-setuptools  +
-          - python3-rpi.gpio +
-          - git  +
-          - fonts-freefont-ttf +
-        statepresent +
-      when: ( raspberry_oled == "ja" )+
  
-    - name: Laden des Kernelmodul i2c_arm beim Booten veranlassen +  - name: "*wireguard* Socket ermitteln" 
-      template+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html 
-        srcRaspbian/config.j2 +    set_fact: 
-        dest: /boot/config.txt +      ffmuc_wireguard_port: "{{ item.value }}" 
-      when( raspberry_oled == "ja" )+    loop: "{{ lookup('dict', wireguard_ports}}" 
 +    when: "ffmuc_segment in item.key"
  
-    - name: Reboot nach Konfigurationsänderung +  - name: "*wireguard* : link-local des Gateways ermitteln" 
-      reboot+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html 
-      when( raspberry_oled == "ja" )+    set_fact
 +      ffmuc_wireguard_linklocal: "{{ item.value }}" 
 +    loop: "{{ lookup('dict', gw_linklocal}}" 
 +    when: "ffmuc_gateway in item.key"
  
-    - name: Repo Adafruit_Python_SSD1306 klonen +  - name: "*wireguard* publickey des Gateways ermitteln" 
-      git+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html 
-        repo: https://github.com/adafruit/Adafruit_Python_SSD1306.git +    set_fact: 
-        dest: /usr/local/src/Adafruit_Python_SSD1306 +      ffmuc_wireguard_gwpubkey: "{{ item.value }}" 
-      when( raspberry_oled == "ja" )+    loop: "{{ lookup('dict', gw_publickey}}" 
 +    when: "ffmuc_gateway in item.key"
  
-    - name: Für OLED-Konfiguration Adafruit_Python_SSD1306 installieren +  - name: "*wireguard* : Konfigurationsdatei des wireguard-Tunnels erzeugen" 
-      shellcd /usr/local/src/Adafruit_Python_SSD1306 && python3 setup.py install +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-      when( raspberry_oled == "ja" )+    template: 
 +      src: templates/uplink.j2 
 +      dest/etc/wireguard/wg-uplink.conf 
 +</file>
  
-    - name: Script zur Anzeige klonen +<file java ~/ansible/roles/wireguard/tasks/brokerinform.yml>--- 
-      git+  - name: "*wireguard* systemd unit file für broker -Information anlegen"     
-        repo: https://github.com/awlx/raspberry-oled-bandwidth +     # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /usr/local/src/raspberry-oled-bandwidth +    template: 
-      when( raspberry_oled == "ja" )+      src: templates/broker.j2 
 +      dest/etc/systemd/system/broker.service
  
-    - name: Script zur Bandbreitenauslastung anpassen +  - name: "*wireguard* Service broker starten beim Booten starten" 
-      template+    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        srcRaspbian/bandwidth.j2 +    systemd: 
-        dest: /usr/local/src/raspberry-oled-bandwidth/bandwidth.py +      namebroker 
-      when( raspberry_oled == "ja" )+      daemon_reload: yes 
 +      state: started 
 +      enabled: yes 
 +</file>
  
-    - name: Startscript für das OLED anlegen +<file java ~/ansible/roles/wireguard/tasks/wireguardstart.yml>--- 
-      template+  - name: "*wireguard* Service wireguard via systemd startem" 
-        srcRaspbian/oled-bandwidth.j2      +    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        dest: /etc/systemd/system/oled-bandwidth.service +    systemd: 
-      when( raspberry_oled == "ja" )+      namewg-quick@wg-uplink 
 +      daemon_reload: yes 
 +      state: started 
 +      enabled: yes 
 +</file>
  
-    name: Service oled-bandwidth beim Booten starten +<file java ~/ansible/roles/wireguard/tasks/checkup.yml>--- 
-      systemd: +  name: "*wireguard* : lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen" 
-        name: oled-bandwidth +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        daemon_reloadyes +    shellcat /etc/wireguard/client_public.key | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/fe80::02\1:\2ff:fe\3:\4\5/' 
-        statestarted +    registerwg_node_linklocal 
-        enabledyes +
-      when( raspberry_oled == "ja" )+
  
-    - name: Reboot nach Abschluss der Konfiguration unseres Offloaders +  - name: "*wireguard* : checkupscript zum Testen der wireguard-Verbindung anlegen" 
-      reboot:+    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template: 
 +      src: templates/checkup.j2 
 +      dest/usr/local/bin/checkup
  
 +  - name: "*wireguard* : Ausführungsrechte des Bash-Scripts anpassen"
 +    # https://docs.ansible.com/ansible/latest/modules/file_module.html
 +    file:
 +      path: /usr/local/bin/checkup
 +      mode: '0740'
  
-... #YAML Ende Syntax</file>+  - name: "*wireguard* : crontab für minütlichen checkup der wireguard-Verbindung anlegen" 
 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template: 
 +      src: templates/crontab.j2 
 +      dest: /etc/crontab 
 + </file>
  
-=== raspi_offloader_menu.yml === +== Templates == 
-<file java raspi_offloader_menu.yml>--### Ansible Playbook für menügeführte Konfiguration eines Offloader auf Basis eines Raspberry PI 4B +<file java ~/ansible/roles/wireguard/templates/broker.j2># Django : 2020-12-07 
-name        raspi_offloader_menu.yml +[Unit] 
-  hosts       raspberry-ansible +see man systemd.unit 
-  become      yes +Description=Inform tunnel about our wireguard-public key 
-  become_user:  root+Documentation=https://wiki.mailserver.guru/doku.php/centos:ansible:ffmuc-rpb4-ol 
 +Before=wg-quick.target
  
-  vars: +[Service] 
-    fastd_ports: +# see man systemd.service, systemd.exec 
-      muc_cty 30002 +ExecStart=/usr/bin/wget -q -O- --post-data='{"domain":"ffmuc_{{ ffmuc_segment }}","public_key":"{{ wg_client_publickey.stdout }}"}' http://broker.ffmuc.net/api/v1/wg/key/exchange 
-      muc_nord30003 +StandardOutput=syslog 
-      muc_ost 30004 +StandardError=syslog
-      muc_sued: 30005 +
-      muc_west: 30006 +
-      uml_nord: 30007 +
-      uml_ost:  30008 +
-      uml_sued: 30009 +
-      uml_west: 30010 +
-      gauting:  30012 +
-      freising: 30013 +
-      welt:     30011  +
-    vxlan_ids: +
-      muc_cty:  10758607 +
-      muc_nord: 15521492 +
-      muc_ost:  2948862 +
-      muc_sued: 8599288 +
-      muc_west: 7318933 +
-      uml_nord: 5705961 +
-      uml_ost:  4892713 +
-      uml_sued: 16544703 +
-      uml_west: 16677749 +
-      gauting:  16175732 +
-      freising: 12937858 +
-      welt:     16306234 +
-    dtparam:    "i2c_arm=on"+
  
-  vars_prompt: +[Install] 
-    - name: batman_adv_version +WantedBy=default.target 
-      prompt: "\nWas ist die aktuelle BATMAN Version, die hier\nhttps://downloads.open-mesh.org/batman/releases/ gelistet ist?             " +</file>
-      private: no+
  
-    - name: ffmuc_segment +<file java ~/ansible/roles/wireguard/templates/checkup.j2>#!/bin/bash
-      prompt: "\nIn welchem der Segmente hier soll der Offloader betrieben werden: \n                                                                  muc_cty \n                                                                  muc_nord \n                                                                  muc_ost \n                                                                  muc_sued \n                                                                  muc_west \n                                                                  uml_nord \n                                                                  uml_ost \n                                                                  uml_sued \n                                                                  uml_west \n                                                                  gauting \n                                                                  freising \n                                                                  welt     " +
-      private: no+
  
-    nameraspberry_hostname +# Check connectivity to supernode 
-      prompt: "\nWie lautet der Hostname des Raspberry Offloaders?                          +HTTP_STATUS_CODE=(`curl --silent --interface wg-uplink --get --ipv6 --connect-timeout 5 --write-out '%{http_code}' --output /dev/null 'http://[{{ ffmuc_wireguard_linklocal }}]:80'`) 
-      privateno+if [ ${HTTP_STATUS_CODE} != "200" ]; then 
 +        logger -t checkuplink "curl --silent --interface wg-uplink --get --ipv6 --connect-timeout 5 --write-out '%{http_code}' --output /dev/null 'http://[{{ ffmuc_wireguard_linklocal }}]:80' faild with HTTP-errorcode: ${HTTP_STATUS_CODE}" 
 +        logger -t checkuplink "... better we restart the wireguar-tunnel!
 +        ip link set nomaster bat-{{ ffmuc_segment }} dev vxlan-mesh &> /dev/null 
 +        ip link del dev mesh-vpn &> /dev/null 
 +        ip link del wg-uplink &> /dev/null 
 +        systemctl stop wg-quick@wg-uplink 
 +        systemctl restart networking 
 +        logger -t checkuplink "Sending public-key to the broker." 
 +        /usr/bin/wget -q -O- --post-data='{"domain":"ffmuc_{{ ffmuc_segment }}","public_key":"{{ wg_client_publickey.stdout }}"}' http://broker.ffmuc.net/api/v1/wg/key/exchange 
 +        logger -t checkuplink "Starting wireguard-daemon." 
 +        systemctl start wg-quick@wg-uplink 
 +        logger -t checkuplink "Starting vxlan-meshing." 
 +        vxlan 
 +else 
 +        #logger -t checkuplink "wiregurad-tunnel is up an running : HTTP-statuscode: ${HTTP_STATUS_CODE}" 
 +fi 
 +</file>
  
-    - namenode_contact_address +<file java ~/ansible/roles/wireguard/templates/crontab.j2># /etc/crontabsystem-wide crontab 
-      prompt: "\nWie lautet die Kontakt-Adresse des Node-Betreibers?                        " +# Unlike any other crontab you don't have to run the `crontab' 
-      private: no+# command to install the new version when you edit this file 
 +# and files in /etc/cron.d. These files also have username fields, 
 +# that none of the other crontabs do.
  
-    - name: raspberry_latitude +SHELL=/bin/sh 
-      prompt"\nWie lautet der Geographische Breitengrad des Raspberry Offloaders?         " +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-      privateno+
  
-    - name: raspberry_longitude +# Example of job definition: 
-      prompt: "\nWie lautet der Geographische Längengrad des Raspberry Offloaders?          " +# .---------------- minute (0 - 59) 
-      private: no+# |  .------------- hour (0 - 23) 
 +# |  |  .---------- day of month (1 - 31) 
 +# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ... 
 +# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
 +# |  |  |  |  | 
 +# *  *  *  *  * user-name command to be executed 
 +17 * * * * root    cd / && run-parts --report /etc/cron.hourly 
 +25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 
 +47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 
 +52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) 
 +#
  
-    name: raspberry_wifi +# check wireguard-connection 
-      prompt: "\nSoll der Raspberry Offloader auch ein WLAN ausstrahlen, 'ja'?              "  +* * * * * root /usr/local/bin/checkup 2>&1 /dev/null 
-      private: no+</file>
  
-    - name: raspberry_clientvlan +<file java ~/ansible/roles/wireguard/templates/uplink.j2>[Interface] 
-      prompt: "\nSoll der Raspberry Offloader ein Client-VLAN zur Verfügung stellen?\n                                   Wenn ja, wie lautet die VLAN-ID?        " +PrivateKey = {{ wg_client_privatekey.stdout }} 
-      private: no+Address = {{ wg_node_linklocal.stdout }}
  
-    - name: raspberry_meshvlan +[Peer] 
-      prompt: "\nSoll der Raspberry Offloader ein Mesh-VLAN zur Verfügung stellen?\n                                   Wenn ja, wie lautet die VLAN-ID?        " +PublicKey = {{ ffmuc_wireguard_gwpubkey }} 
-      privateno+AllowedIPs = {{ ffmuc_wireguard_linklocal }} 
 +Endpoint = {{ ffmuc_gateway }}.ext.ffmuc.net:{{ ffmuc_wireguard_port }} 
 +PersistentKeepalive = 25 
 +</file>
  
-    - name: raspberry_oled 
-      prompt: "\nIst ein OLE-Display an dem Raspberry Offloader angeschlossen?              " 
-      private: no 
  
-  tasks: +=== Rolle "vxlan" === 
-    nameHostname ändern +<file java ~/ansible/roles/vxlan/tasks/main.yml>--- # Installation und Konfiguration von VXLAN 
-      shellhostnamectl set-hostname {{ raspberry_hostname }}+includeconfigure.yml                # VXLAN Konfigurieren 
 +- includevxlanstart.yml               # Aktivierung des wireguard client-daemon 
 +</file>
  
-    - name: Anpassung /etc/hosts +== Tasks == 
-      template+<file java ~/ansible/roles/vxlan/tasks/configure.yml>  - name: "*VXLAN* Paketfilter anpassen - Eingehenden VXLAN Verkehr auf dem Mesh-Interface erlauben" 
-        srcRaspbian/hosts.j2 +    # https://docs.ansible.com/ansible/latest/modules/commans_module.html 
-        dest: /etc/hosts+    command: ip6tables -I INPUT 1 -i wg-uplink -m udp -p udp --dport 8472 -j ACCEPT 
  
-    - name: Beschreibung des User 'pi' anpassen +  - name: "*VXLAN* : VXLAN-ID des gewählten Segments ermitteln" 
-      user+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html 
-        namepi +    set_fact
-        comment: "Raspbian System User+      ffmuc_vxlan_id: "{{ item.value }}
-        statepresent+    loop"{{ lookup('dict', gw_vxlan_ids) }}" 
 +    when: "ffmuc_segment in item.key"
  
-    - name: Service rfkill am Raspberry deaktivieren +  - name: "*VXLAN* : link-local des Gateways ermitteln" 
-      shellrfkill unblock wifi+    # https://docs.ansible.com/ansible/latest/collections/ansible/builtin/set_fact_module.html 
 +    set_fact: 
 +      ffmuc_wireguard_linklocal: "{{ item.value }}" 
 +    loop: "{{ lookup('dict', gw_linklocal) }}" 
 +    when"ffmuc_gateway in item.key"
  
-    - name: Update und Upgrade der APT-Pakete +  - name: "*VXLAN* : lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen" 
-      apt+    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        upgradedist +    shell: cat /etc/wireguard/client_public.key | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/fe80::02\1:\2ff:fe\3:\4\5/' 
-        update_cacheyes+    registerwg_node_linklocal
  
-    - name: Reboot nach update +  - name: "*VXLAN* : Startupdatei für VXLAN kopieren" 
-      reboot:+    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template: 
 +      src: templates/vxlan-init.j2 
 +      dest/usr/local/bin/vxlan
  
-    - name: Download des aktuellen BATMAN Archives  +  - name: "*VXLAN* : Ausführungsrechte des Bash-Scripts anpassen" 
-      get_url: +    # https://docs.ansible.com/ansible/latest/modules/file_module.html 
-        url: https://downloads.open-mesh.org/batman/releases/batman-adv-{{ batman_adv_version }}/batman-adv-{{ batman_adv_version }}.tar.gz +    file: 
-        dest: /usr/src/batman-adv-{{ batman_adv_version }}.tar.gz +      path: /usr/local/bin/vxlan 
-        mode: '0644'+      mode: '0740' 
 +</file>
  
-    - name: BATMAN-Archiv entpacken +<file java ~/ansible/roles/vxlan/tasks/vxlanstart.yml>--- 
-      unarchive+  - name: "*VXLAN* : systemd-unitfile anlegen" 
-        src: /usr/src/batman-adv-{{ batman_adv_version }}.tar.gz +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /usr/src +    template: 
-        remote_src: yes+      src: templates/systemd-service-file.j2 
 +      dest: /etc/systemd/system/vxlan.service
  
-    - name: Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi Linux Kernel +  - name: "*VXLAN* Neues Unitfile dem systemd bekannt geben" 
-      apt+    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        update_cacheyes +    systemd
-        pkg+      daemon_reexecyes
-          - dkms +
-          - raspberrypi-kernel-headers +
-        statepresent+
  
-    - name: Rebuild BATMAN Kernel Header Dateien +  - name: "*VXLAN* Service vxlan via systemd starten" 
-      make+    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        chdir: /usr/src/linux-headers-{{ ansible_kernel }} +    systemd
-        targetscripts +      name: vxlan.service 
-      ignore_errors: yes+      daemon_reload: yes 
 +      state: started 
 +      enabled: yes 
 +</file>
  
-    - name: Anlegen der dkms.conf für Dynamic Kernel Module Support +== Templates == 
-      template: +<file java ~/ansible/roles/vxlan/templates/systemd-service-file.j2>[Unit] 
-        src: Raspbian/dkms.j2 +# see man systemd.unit 
-        dest: /usr/src/batman-adv-{{ batman_adv_version }}/dkms.conf+Description=Bringing up VXLAN Interface 
 +Documentation=https://wiki.mailserver.guru/doku.php/centos:ansible:ffmuc-rpb4-ol 
 +After=wg-quick@wg-uplink.service
  
-    - name: Dynamic Kernel Module Support hinzufügen +[Service] 
-      #become: yes +see man systemd.service, systemd.exec 
-      command: dkms add -m batman-adv -v {{ batman_adv_version }} +Type=oneshot 
-      register: ret +ExecStart=/usr/local/bin/vxlan 
-      failed_when: ret.rc !0 and ret.rc != 3 +StandardOutput=syslog 
-      changed_when: ret.rc =0+StandardError=syslog
  
-    name: Dynamic Kernel Module Support bauen +[Install] 
-      #become: yes +WantedBy=multi-user.target 
-      command: dkms build -m batman-adv -v {{ batman_adv_version }}+</file>
  
-    name: Dynamic Kernel Module Support installieren +<file bash ~/ansible/roles/vxlan/templates/vxlan-init.j2>#!/bin/bash
-      #become: yes +
-      command: dkms install -m batman-adv -v {{batman_adv_version }}+
  
-    - name: Laden des Kernelmodul beim Booten veranlassen +# Bring up VXLAN 
-      template: +ip link add mesh-vpn type vxlan id {{ ffmuc_vxlan_id }} local {{ wg_node_linklocal.stdout }} remote {{ ffmuc_wireguard_linklocal }} dstport 8472 dev wg-uplink 
-        src: Raspbian/batman-adv.module.j2 +ip link set up dev mesh-vpn
-        dest: /etc/modules-load.d/batman-adv.module.conf+
  
-    name: Laden des BATMAN Moduls +# Bind mesh-vpn to BATMAN-Device 
-      #become: yes +/usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add mesh-vpn
-      modprobe: +
-        name: batman_adv +
-        state: present+
  
-    - name: Laden des dummy Moduls +If we have a BATMAN_V env we need to correct the throughput value now 
-      #become: yes +/usr/sbin/batctl hardif mesh-vpn throughput_override 10000 
-      modprobe: +</file>
-        name: dummy +
-        state: present+
  
-    - name: Installation der  bridge-utils 
-      apt: 
-        update_cache: yes 
-        pkg: 
-         - batctl 
-         - bridge-utils 
-        state: present 
  
-    - name: Aktivierung von BATMAN_V 
-      shell: batctl ra BATMAN_V 
  
-    name: Konfiguration des Interfaces +=== Rolle "ext-respondd" === 
-      template+== Tasks == 
-        srcRaspbian/interfaces.j2 +<file java ~/ansible/roles/ext-respondd/tasks/main.yml>--- # Installation und Konfiguration des ext-respondd (Statistiken für https://map.ffmuc.net) 
-        dest: /etc/network/interfaces+- includegitinstall.yml               # Installation der Pakete git und python3-netifaces  
 +- includegitclone.yml                 # Repo ext-respondd klonen  
 +- includecopyconfig.yml               # Systemd Startdatei für respondd kopieren 
 +- include: aliasgenerate.yml            # Erstellen der resondd Konfigurationsdatei alias.json  
 +- include: configgenerate.yml           # Erstellen der resondd Konfigurationsdatei config.json 
 +- include: servicestartup.yml           # Service ext-respondd beim Booten starten 
 +</file>
  
-    - name: Installation von FASTD +<file java ~/ansible/roles/ext-respondd/tasks/aliasgenerate.yml>--- 
-      #becomeyes +  - name: "Erstellen der resondd Konfigurationsdatei alias.json" 
-      apt+    https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        namefastd +    template:  
-        statepresent+      srctemplates/ext-respondd_alias.json.j2 
 +      dest/opt/ext-respondd/alias.json 
 +</file>
  
-    - name: Verzeichnis für fastd- Konfigurationsdatei anlegen +<file java ~/ansible/roles/ext-respondd/tasks/configgenerate.yml>--- 
-      file:  +  - name: "Erstellen der resondd Konfigurationsdatei config.json" 
-        path: /etc/fastd/{{ ffmuc_segment }}  +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        state: directory+    template:  
 +      srctemplates/ext-respondd_config.json.j2 
 +      dest: /opt/ext-respondd/config.json 
 +</file>
  
-    - name: Schlüssel für fastd erstellen +<file java ~/ansible/roles/ext-respondd/tasks/copyconfig.yml>--- 
-      shell: fastd --generate-key > /root/fastd.key+  - name: "Systemd Startdatei für respondd kopieren" 
 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell:  
 +      cmd: cp /opt/ext-respondd/ext-respondd.service.example /etc/systemd/system/ext-respondd.service 
 +</file>
  
-    - name: FASTD Secret Key aus /root/fastd.key in Variable übergeben +<file java ~/ansible/roles/ext-respondd/tasks/gitclone.yml>--- 
-      shellgrep Secret /root/fastd.key | awk '{print substr($0,9)}'  +  - name: "Repo ext-respondd klonen" 
-      registersecretkey_var+    # https://docs.ansible.com/ansible/latest/modules/git_module.html 
 +    git: 
 +      repo: https://github.com/freifunkMUC/ext-respondd 
 +      dest/opt/ext-respondd/ 
 +</file>
  
-    - name: FASTD Socket ermitteln +<file java ~/ansible/roles/ext-respondd/tasks/gitinstall.yml>--- 
-      set_fact+  - name: "Installation der Pakete git und python3-netifaces" 
-        ffmuc_fast_port"{{ item.value }}" +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-      loop"{{ lookup('dict', fastd_ports) }}" +    apt:  
-      when"ffmuc_segment in item.key"+      update_cacheyes 
 +      pkg: 
 +        - git 
 +        - python3-netifaces 
 +      state: present 
 +</file>
  
-    - name: Erstellen der fastd Konfigurationsdatei +<file java ~/ansible/roles/ext-respondd/tasks/servicestartup.yml>--- 
-      template: +  - name: "Service ext-respondd beim Booten starten" 
-        src: Raspbian/fastd.j2 +    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        dest: /etc/fastd/{{ ffmuc_segment }}/fastd.conf+    systemd: 
 +      name: ext-respondd 
 +      daemon_reload: yes 
 +      state: started 
 +      enabled: yes 
 +</file>
  
-    nameService fastd beim Booten starten +== Templates == 
-      systemd+<file java ~/ansible/roles/ext-respondd/templates/ext-respondd_alias.json.j2>
-        namefastd@{{ ffmuc_segment }} +  "nodeinfo"
-        statestarted +    "hostname": "{{ raspberry_hostname }}", 
-        enabledyes+    "hardware": { 
 +      "model""Raspberry Pi 4B" 
 +    }, 
 +    "owner"
 +      "contact": "{{ node_contact_address }}" 
 +    }, 
 +    "system":
 +      "site_code": "ffmuc_{{ ffmuc_segment }}", 
 +      "role""client" 
 +    }, 
 +    "location"
 +    "latitude": {{ raspberry_latitude }}, 
 +    "longitude": {{ raspberry_longitude }} 
 +    } 
 +  }, 
 +  "firstseen": "2019-08-14T12:34:56" 
 +
 +</file>
  
-    name: Installation der Pakete git und python3-netifaces +<file java ~/ansible/roles/ext-respondd/templates/ext-respondd_config.json.j2>{ 
-      apt+  "batman""bat-{{ ffmuc_segment }}", 
-        update_cacheyes +  "bridge""br-{{ ffmuc_segment }}", 
-        pkg: +  "mesh-vpn": [ "fastd-{{ ffmuc_segment }}" ], 
-          git +  "wan""eth0", 
-          python3-netifaces +  "rate_limit": 30, 
-        statepresent+  "rate_limit_burst": 10 
 +
 +</file>
  
-    - name: Repo ext-respondd klonen 
-      git: 
-        repo: https://github.com/freifunkMUC/ext-respondd  
-        dest: /opt/ext-respondd/ 
  
-    nameSystemd Startdatei für respondd kopieren +=== Rolle "hostapd" === 
-      shellcp /opt/ext-respondd/ext-respondd.service.example /etc/systemd/system/ext-respondd.service+== Tasks == 
 +<file java ~/ansible/roles/hostapd/tasks/main.yml>--- # Installation und Konfiguration des hostap Treibers für den WiFi-Support 
 +- includeinstall.yml                  # Paket hostapd für WLAN installieren 
 +- includeconfigure.yml                # hostapd konfigurieren 
 +include: genconfig.yml                # hostapd Konfigurationsdatei anlegen 
 +- include: wlanbridging.yml             # wlan0 in Bridge packen 
 +include: servicestartup.yml           # Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen 
 +</file>
  
-    - name: Erstellen der resondd Konfigurationsdatei alias.json +<file java ~/ansible/roles/hostapd/tasks/configure.yml>--- 
-      template: +  - name: "hostapd konfigurieren" 
-        src: Raspbian/ext-respondd_alias.json.j2 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-        dest: /opt/ext-respondd/alias.json+    shellecho 'DAEMON_OPTS="-d"' >> /etc/default/hostapd 
 +    when: ( raspberry_wifi == "ja"
 +</file>
  
-    - name: Erstellen der resondd Konfigurationsdatei config.json +<file java ~/ansible/roles/hostapd/tasks/genconfig.yml>--- 
-      template: +  - name: "hostapd Konfigurationsdatei anlegen" 
-        src: Raspbian/ext-respondd_config.json.j2 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /opt/ext-respondd/config.json+    template:  
 +      src: templates/hostapd.j2 
 +      dest: /etc/hostapd/hostapd.conf 
 +    when: ( raspberry_wifi == "ja"
 +</file>
  
-    - name: Service ext-respondd beim Booten starten +<file java ~/ansible/roles/hostapd/tasks/install.yml>--- 
-      systemd+  - name: "Paket hostapd für WLAN installieren" 
-        nameext-respondd +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
-        daemon_reload: yes +    apt
-        state: started +      update_cache: yes 
-        enabledyes+      pkg: 
 +        - hostapd 
 +      state: present 
 +    when( raspberry_wifi == "ja"
 +</file>
  
-    - name: Paket hostapd für WLAN installieren +<file java ~/ansible/roles/hostapd/tasks/servicestartup.yml>--- 
-      apt+  - name: "Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen" 
-        update_cache: yes +    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-        pkg+    systemd: 
-          - hostapd +      namehostapd 
-        state: present +      enabled: yes 
-      when: ( raspberry_wifi == "ja"+      maskedno 
 +      state: started 
 +    when: ( raspberry_wifi == "ja" ) 
 +</file>
  
-    - name: hostapd konfigurieren +<file java ~/ansible/roles/hostapd/tasks/wlanbridging.yml>--- 
-      shell: echo 'DAEMON_OPTS="-d"' >> /etc/default/hostapd +  - name: "wlan0 in Bridge packen" 
-      when: ( raspberry_wifi == "ja" )+    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      src: templates/rclocal_wifi.j2 
 +      dest: /etc/rc.local 
 +    when: ( raspberry_wifi == "ja" ) 
 +</file>
  
-    - name: hostapd Konfigurationsdatei anlegen   +== Templates == 
-      template: +<file java ~/ansible/roles/hostapd/templates/hostapd.j2>ssid=muenchen.freifunk.net/{{ ffmuc_segment }}
-        src: Raspbian/hostapd.j2  +
-        dest: /etc/hostapd/hostapd.conf  +
-      when: ( raspberry_wifi == "ja" )+
  
-    - name: wlan0 in Bridge packen +country_code=US
-      template: +
-        src: Raspbian/rclocal_wifi.j2 +
-        dest: /etc/rc.local +
-      when: ( raspberry_wifi == "ja" )+
  
-    - name: Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen +interface=wlan0 
-      systemd: +driver=nl80211
-        name: hostapd +
-        enabled: yes +
-        masked: no +
-        state: started +
-      when: ( raspberry_wifi ="ja" )+
  
-    - name: Konfiguration des Client-VLAN ohne Mesh-Netz +macaddr_acl=0
-      template: +
-        src: Raspbian/interfaces_client_ohne_mesh.j2 +
-        dest: /etc/network/interfaces  +
-      when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length == 0 )+
  
-    - name: vxlan_id für ausgewähltes Segment ermitteln +logger_syslog=0 
-      set_fact: +logger_syslog_level=4 
-        ffmuc_vxlan_id: "{{ item.value }}" +logger_stdout=-1 
-      loop: "{{ lookup('dict', vxlan_ids) }}" +logger_stdout_level=0
-      when: "ffmuc_segment in item.key"  +
  
-    - name: Konfiguration des Mesh-VLAN ohne Client-VLAN +hw_mode=a 
-      template: +wmm_enabled=1
-        src: Raspbian/interfaces_mesh_ohne_client.j2 +
-        dest: /etc/network/interfaces +
-      when: ( raspberry_clientvlan|length =0 ) and ( raspberry_meshvlan|length > 0 )+
  
-    - name: Konfiguration von Mesh- und Client-VLAN +# N 
-      template: +ieee80211n=1 
-        src: Raspbian/interfaces_mesh_mit_client.j2 +require_ht=1 
-        dest: /etc/network/interfaces +ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]
-      when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length > 0 )+
  
-    name: Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung +# AC 
-      template: +ieee80211ac=1 
-        src: Raspbian/rclocal_vxlan.j2 +require_vht=1 
-        dest: /etc/rc.local +ieee80211d=0 
-      when: ( raspberry_meshvlan|length 0 ) and ( raspberry_wifi != "ja" )+ieee80211h=0 
 +vht_capab=[MAX-AMSDU-3839][SHORT-GI-80] 
 +vht_oper_chwidth=1 
 +channel=36 
 +vht_oper_centr_freq_seg0_idx=42 
 +</file>
  
-    - name: Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung +<file java ~/ansible/roles/hostapd/templates/rclocal_wifi.j2>#!/bin/sh -e 
-      template: +
-        src: Raspbian/rclocal_both.j2 +rc.local 
-        dest: /etc/rc.local +
-      when: ( raspberry_meshvlan|length > ) and ( raspberry_wifi == "ja" )      +# This script is executed at the end of each multiuser runlevel. 
 +# Make sure that the script will "exit 0" on success or any other 
 +# value on error. 
 +
 +# In order to enable or disable this script just change the execution 
 +# bits. 
 +
 +# By default this script does nothing.
  
-    - name: Für OLED-Konfiguration i2c-bcm2708 in /etc/modules eintragen +# Print the IP address 
-      shell: echo i2c-bcm2708 >> /etc/modules +_IP=$(hostname -I) || true 
-      when: ( raspberry_oled == "ja)+if [ "$_IP]; then 
 +  printf "My IP address is %s\n" "$_IP" 
 +fi 
 +sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 
 +exit 0 
 +</file>
  
-    - name: Für OLED-Konfiguration i2c-dev in /etc/modules eintragen 
-      shell: echo i2c-dev >> /etc/modules 
-      when: ( raspberry_oled == "ja" ) 
  
-    name: Installation der für das OLED benötigten Pakete +=== Rolle "client-mesh" === 
-      apt: +== Tasks == 
-        update_cache: yes +<file java ~/ansible/roles/client-mesh/tasks/main.yml>--- # Grundkonfiguration von Client und/oder Meshing (V)LANs 
-        pkg: +include: clientohnemesh.yml           # Konfiguration des Client-VLAN ohne Mesh-Netz 
-          python3-dev  +include: getvxlanid.yml               # vxlan_id für ausgewähltes Segment ermitteln 
-          python3-smbus  +include: meshohneclient.yml           # Konfiguration des Mesh-VLAN ohne Client-VLAN 
-          i2c-tools  +include: meshundclient.yml            # Konfiguration von Meshund Client-VLAN 
-          python3-pil  +include: batmanohnewifi.yml           # Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung 
-          python3-pip  +include: batmanmitwifi.yml            # Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung 
-          python3-setuptools  +</file>
-          python3-rpi.gpio +
-          git  +
-          fonts-freefont-ttf +
-        state: present +
-      when: ( raspberry_oled == "ja" )+
  
-    - name: Laden des Kernelmodul i2c_arm beim Booten veranlassen +<file java ~/ansible/roles/client-mesh/tasks/batmanmitwifi.yml>--- 
-      template: +  - name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung" 
-        src: Raspbian/config.j2 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /boot/config.txt +    template:  
-      when: ( raspberry_oled == "ja" )+      src: templates/rclocal_both.j2 
 +      dest: /etc/rc.local 
 +    when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi == "ja" ) 
 +</file>
  
-    - name: Reboot nach Konfigurationsänderung +<file java  ~/ansible/roles/client-mesh/tasks/batmanohnewifi.yml>--- 
-      reboot+  - name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung" 
-      when: ( raspberry_oled == "ja" )+    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      srctemplates/rclocal_vxlan.j2 
 +      dest: /etc/rc.local 
 +    when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi != "ja" ) 
 +</file>
  
-    nameRepo Adafruit_Python_SSD1306 klonen +<file java ~/ansible/roles/client-mesh/tasks/clientohnemesh.yml>django@Djangos-ThinkPad-X230:~$ cat ~/ansible/roles/client-mesh/tasks/clientohnemesh.yml  
-      git: +--- 
-        repo: https://github.com/adafruit/Adafruit_Python_SSD1306.git +  - name"Konfiguration des Client-VLAN ohne Mesh-Netz" 
-        dest: /usr/local/src/Adafruit_Python_SSD1306 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-      when: ( raspberry_oled == "ja" )+    template:  
 +      src: templates/interfaces_client_ohne_mesh.j2 
 +      dest: /etc/network/interfaces 
 +    when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length == ) 
 +</file>
  
-    - name: Für OLED-Konfiguration Adafruit_Python_SSD1306 installieren +<file java  ~/ansible/roles/client-mesh/tasks/getvxlanid.yml>--- 
-      shellcd /usr/local/src/Adafruit_Python_SSD1306 && python3 setup.py install +  - name: "vxlan_id für ausgewähltes Segment ermitteln" 
-      when( raspberry_oled == "ja" )+    # https://docs.ansible.com/ansible/latest/modules/set_fact_module.html 
 +    set_fact: 
 +      ffmuc_vxlan_id: "{{ item.value }}" 
 +    loop: "{{ lookup('dict', vxlan_ids}}" 
 +    when: "ffmuc_segment in item.key" 
 +</file>
  
-    - name: Script zur Anzeige klonen +<file java ~/ansible/roles/client-mesh/tasks/meshohneclient.yml>--- 
-      git: +  - name: "Konfiguration des Mesh-VLAN ohne Client-VLAN" 
-        repo: https://github.com/awlx/raspberry-oled-bandwidth +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /usr/local/src/raspberry-oled-bandwidth +    template:  
-      when: ( raspberry_oled == "ja" )+      src: templates/interfaces_mesh_ohne_client.j2 
 +      dest: /etc/network/interfaces 
 +    when: ( raspberry_clientvlan|length == and ( raspberry_meshvlan|length > 0 ) 
 +</file>
  
-    - name: Script zur Bandbreitenauslastung anpassen +<file java  ~/ansible/roles/client-mesh/tasks/meshundclient.yml>--- 
-      template: +  - name: "Konfiguration von Mesh- und Client-VLAN" 
-        src: Raspbian/bandwidth.j2 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-        dest: /usr/local/src/raspberry-oled-bandwidth/bandwidth.py +    template:  
-      when: ( raspberry_oled == "ja" )+      src: templates/interfaces_mesh_mit_client.j2 
 +      dest: /etc/network/interfaces 
 +    when: ( raspberry_clientvlan|length > 0 and ( raspberry_meshvlan|length > 0 ) 
 +</file>
  
-    - name: Startscript für das OLED anlegen +== Templates == 
-      template: +<file java ~/ansible/roles/client-mesh/templates/interfaces_client_ohne_mesh.j2># interfaces(5) file used by ifup(8) and ifdown(8)
-        src: Raspbian/oled-bandwidth.j2      +
-        dest: /etc/systemd/system/oled-bandwidth.service +
-      when: raspberry_oled == "ja" )+
  
-    - name: Service oled-bandwidth beim Booten starten +# Please note that this file is written to be used with dhcpcd 
-      systemd: +# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
-        name: oled-bandwidth +
-        daemon_reload: yes +
-        state: started +
-        enabled: yes +
-      when: ( raspberry_oled == "ja" )+
  
-    - nameReboot nach Abschluss der Konfiguration unseres Offloaders +# Include files from /etc/network/interfaces.d
-      reboot:+# source-directory /etc/network/interfaces.d 
 + 
 +auto eth0 
 +iface eth0 inet dhcp 
 + 
 +auto eth0.{{ raspberry_clientvlan }} 
 +iface eth0.{{ raspberry_clientvlan }} inet manual
    
-... #YAML Ende Syntax</file>+auto br-{{ ffmuc_segment }} 
 +iface br-{{ ffmuc_segment }} inet dhcp 
 +        bridge-ports bat-{{ ffmuc_segment }} eth0.{{ raspberry_clientvlan }} 
 +        pre-up /usr/sbin/batctl ra BATMAN_V 
 +        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} 
 +        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} 
 +</file> 
 + 
 +<file java ~/ansible/roles/client-mesh/templates/interfaces_mesh_mit_client.j2># interfaces(5) file used by ifup(8) and ifdown(8) 
 + 
 +# Please note that this file is written to be used with dhcpcd 
 +# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' 
 + 
 +Include files from /etc/network/interfaces.d: 
 +# source-directory /etc/network/interfaces.d 
 + 
 +auto eth0 
 +iface eth0 inet dhcp 
 + 
 +auto eth0.{{ raspberry_meshvlan }} 
 +iface eth0.{{ raspberry_meshvlan }} inet manual 
 +        pre-up /sbin/ip link add vxlan-mesh type vxlan id {{ ffmuc_vxlan_id }} group ff02::15c dstport 4789 port 32768 61000 no udpcsum udp6zerocsumtx udp6zerocsumrx dev eth0.{{ raspberry_meshvlan }} || true 
 +        up /sbin/ip link set vxlan-mesh up 
 +        post-up /usr/sbin/batctl ra BATMAN_V 
 +        post-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add vxlan-mesh 
 +        down ip link set vxlan-mesh down 
 +        post-down ip link del vxlan-mesh || true 
 + 
 +auto eth0.{{ raspberry_clientvlan }} 
 +iface eth0.{{ raspberry_clientvlan }} inet manual 
 +  
 +auto br-{{ ffmuc_segment }} 
 +iface br-{{ ffmuc_segment }} inet dhcp 
 +        bridge-ports bat-{{ ffmuc_segment }} eth0.{{ raspberry_clientvlan }} 
 +        pre-up /usr/sbin/batctl ra BATMAN_V 
 +        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} 
 +        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} 
 +</file> 
 + 
 +<file java ~/ansible/roles/client-mesh/templates/interfaces_mesh_ohne_client.j2># interfaces(5) file used by ifup(8) and ifdown(8) 
 + 
 +# Please note that this file is written to be used with dhcpcd 
 +# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' 
 + 
 +# Include files from /etc/network/interfaces.d: 
 +# source-directory /etc/network/interfaces.d 
 + 
 +auto eth0 
 +iface eth0 inet dhcp 
 + 
 +auto eth0.{{ raspberry_meshvlan }} 
 +iface eth0.{{ raspberry_meshvlan }} inet manual 
 +        pre-up /sbin/ip link add vxlan-mesh type vxlan id {{ ffmuc_vxlan_id }} group ff02::15c dstport 4789 port 32768 61000 no udpcsum udp6zerocsumtx udp6zerocsumrx dev eth0.{{ raspberry_meshvlan }} || true 
 +        up /sbin/ip link set vxlan-mesh up 
 +        post-up /usr/sbin/batctl ra BATMAN_V 
 +        post-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add vxlan-mesh 
 +        down ip link set vxlan-mesh down 
 +        post-down ip link del vxlan-mesh || true 
 +  
 +auto br-{{ ffmuc_segment }} 
 +iface br-{{ ffmuc_segment }} inet dhcp 
 +        bridge-ports bat-{{ ffmuc_segment }} 
 +        pre-up /usr/sbin/batctl ra BATMAN_V 
 +        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} 
 +        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up 
 +        pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client 
 +        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} 
 +        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} 
 +</file> 
 + 
 +<file bash ~/ansible/roles/client-mesh/templates/rclocal_both.j2>#!/bin/sh -e 
 +
 +# rc.local 
 +
 +# This script is executed at the end of each multiuser runlevel. 
 +# Make sure that the script will "exit 0" on success or any other 
 +# value on error. 
 +
 +# In order to enable or disable this script just change the execution 
 +# bits. 
 +
 +# By default this script does nothing. 
 + 
 +# Print the IP address 
 +_IP=$(hostname -I) || true 
 +if [ "$_IP" ]; then 
 +  printf "My IP address is %s\n" "$_IP" 
 +fi 
 +sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 
 +/usr/sbin/batctl hardif mesh-vpn throughput_override 10000 
 +exit 0 
 +</file> 
 + 
 +<file bash ~/ansible/roles/client-mesh/templates/rclocal_vxlan.j2>#!/bin/sh -e 
 +
 +# rc.local 
 +
 +# This script is executed at the end of each multiuser runlevel. 
 +# Make sure that the script will "exit 0" on success or any other 
 +# value on error. 
 +
 +# In order to enable or disable this script just change the execution 
 +# bits. 
 +
 +# By default this script does nothing. 
 + 
 +# Print the IP address 
 +_IP=$(hostname -I) || true 
 +if [ "$_IP" ]; then 
 +  printf "My IP address is %s\n" "$_IP" 
 +fi 
 +/usr/sbin/batctl hardif mesh-vpn throughput_override 10000 
 +exit 0 
 +</file> 
 + 
 + 
 +=== Rolle "oled" === 
 +== Tasks == 
 +<file java ~/ansible/roles/oled/tasks/main.yml>--- # Konfiguration eines OLEDisplays sofern eines am Respberry 4B verbaut ist 
 +- include: i2c-bcm2708.yml              # Für OLED-Konfiguration i2c-bcm2708 in /etc/modules eintragen 
 +- include: i2c-dev.yml                  # Für OLED-Konfiguration i2c-dev in /etc/modules eintragen 
 +- include: packages.yml                 # Installation der für das OLED benötigten Pakete 
 +- include: i2c_arm.yml                  # Laden des Kernelmodul i2c_arm beim Booten veranlassen 
 +- include: reboot.yml                   # Reboot nach Konfigurationsänderung 
 +- include: adafruitclone.yml            # Repo Adafruit_Python_SSD1306 klonen 
 +- include: adafruitconfig.yml           # Für OLED-Konfiguration Adafruit_Python_SSD1306 installieren 
 +- include: scriptclone.yml              # Script zur Anzeige klonen  
 +- include: scriptconfig.yml             # Script zur Bandbreitenauslastung anpassen  
 +- include: scriptstart.yml              # Startscript für das OLED anlegen  
 +- include: scriptstartup.yml            # Service oled-bandwidth beim Booten starten 
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/adafruitclone.yml>--- 
 +  - name: "Repo Adafruit_Python_SSD1306 klonen" 
 +    # https://docs.ansible.com/ansible/latest/modules/git_module.html 
 +    git: 
 +      repo: https://github.com/adafruit/Adafruit_Python_SSD1306.git 
 +      dest: /usr/local/src/Adafruit_Python_SSD1306 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/adafruitconfig.yml>--- 
 +  - name: "Für OLED-Konfiguration Adafruit_Python_SSD1306 installieren" 
 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell: cd /usr/local/src/Adafruit_Python_SSD1306 && python3 setup.py install && pip3 install Adafruit-BBIO 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/i2c_arm.yml>--- 
 +  - name: "Laden des Kernelmodul i2c_arm beim Booten veranlassen" 
 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      src: templates/config.j2 
 +      dest: /boot/config.txt 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/i2c-bcm2708.yml>--- 
 +  - name: "Für OLED-Konfiguration i2c-bcm2708 in /etc/modules eintragen" 
 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell: echo i2c-bcm2708 >> /etc/modules 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/i2c-dev.yml>--- 
 +  - name: "Für OLED-Konfiguration i2c-dev in /etc/modules eintragen" 
 +    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
 +    shell: echo i2c-dev >> /etc/modules 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/packages.yml>--- 
 +  - name: "Installation der für das OLED benötigten Pakete" 
 +    # https://docs.ansible.com/ansible/latest/modules/apt_module.html 
 +    apt: 
 +      update_cache: yes 
 +      pkg: 
 +        - python3-dev 
 +        - python3-smbus 
 +        - i2c-tools 
 +        - python3-pil 
 +        - python3-pip 
 +        - python3-setuptools 
 +        - python3-rpi.gpio 
 +        - git 
 +        - fonts-freefont-ttf 
 +      state: present 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/reboot.yml>--- 
 +  - name: "Reboot nach Konfigurationsänderung" 
 +    # https://docs.ansible.com/ansible/latest/modules/reboot_module.html 
 +    reboot: 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/scriptclone.yml>--- 
 +  - name: "Script zur Anzeige klonen" 
 +    # https://docs.ansible.com/ansible/latest/modules/git_module.html 
 +    git: 
 +      repo: https://github.com/awlx/raspberry-oled-bandwidth 
 +      dest: /usr/local/src/raspberry-oled-bandwidth 
 +      force: yes 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/scriptconfig.yml>--- 
 +  - name: "Script zur Bandbreitenauslastung anpassen" 
 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      src: templates/bandwidth.j2 
 +      dest: /usr/local/src/raspberry-oled-bandwidth/bandwidth.py 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/scriptstart.yml>--- 
 +  - name: "Startscript für das OLED anlegen" 
 +    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
 +    template:  
 +      src: templates/oled-bandwidth.j2 
 +      dest: /etc/systemd/system/oled-bandwidth.service 
 +    when: ( raspberry_oled == "ja"
 +</file> 
 + 
 +<file java ~/ansible/roles/oled/tasks/scriptstartup.yml>--- 
 +  - name: "Service oled-bandwidth beim Booten starten" 
 +    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
 +    systemd: 
 +      name: oled-bandwidth 
 +      daemon_reload: yes 
 +      state: started 
 +      enabled: yes 
 +    when: ( raspberry_oled == "ja"
 +</file>
  
-=== bandwith.j2 === +== Templates == 
-<file java bandwith.j2>+<file python ~/ansible/roles/oled/templates/bandwidth.j2># Inspired by https://github.com/DarrenBeck/rpi-oled-bandwidth and https://photochirp.com/r-pi/use-raspberry-pi-oled-bandwidth-monitor/
-# Inspired by https://github.com/DarrenBeck/rpi-oled-bandwidth and https://photochirp.com/r-pi/use-raspberry-pi-oled-bandwidth-monitor/+
 # #
 # Maintained by awlnx - aw@awlnx.space # Maintained by awlnx - aw@awlnx.space
Zeile 948: Zeile 2086:
 # Adjust to your needs # Adjust to your needs
 wifi = 'wlan0' wifi = 'wlan0'
-vpn = 'fastd-{{ ffmuc_segment }}'+vpn = 'mesh-vpn'
 batman = 'bat-{{ ffmuc_segment }}' batman = 'bat-{{ ffmuc_segment }}'
 primary_mac = '{{ ansible_eth0.macaddress }}' primary_mac = '{{ ansible_eth0.macaddress }}'
Zeile 961: Zeile 2099:
  
 # Raspberry Pi pin configuration: # Raspberry Pi pin configuration:
-RST = 24+RST = 'P9_15'
  
 # 128x64 display with hardware I2C: # 128x64 display with hardware I2C:
Zeile 1146: Zeile 2284:
  
     # Batman Clients     # Batman Clients
-    clients = subprocess.check_output("batctl -m " + batman + " tl | egrep -v '(MainIF|" + primary_mac + ")' | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | wc -l", shell=True).split().pop()+    clients = subprocess.check_output("batctl meshif " + batman + " tl | egrep -v '(MainIF|" + primary_mac + ")' | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | wc -l", shell=True).split().pop()
     draw.text((0,48), "Clients", font=fontverysmall, fill=255)     draw.text((0,48), "Clients", font=fontverysmall, fill=255)
     draw.text((10,55), clients.decode("utf-8"), font=fontverysmall, fill=255)     draw.text((10,55), clients.decode("utf-8"), font=fontverysmall, fill=255)
Zeile 1160: Zeile 2298:
  
     disp.image(image)     disp.image(image)
-    disp.display()</file> +    disp.display() 
- +</file>
- +
-=== batman-adv.module.j2 === +
-<file java batman-adv.module.j2># +
-# Load batman-adv module on system boot +
-+
-batman-adv +
-dummy</file>+
  
-=== config.j2 === +<file bash ~/ansible/roles/oled/templates/config.j2># For more options and information see
-<file java config.j2># For more options and information see+
 # http://rpf.io/configtxt # http://rpf.io/configtxt
 # Some settings may impact device functionality. See link above for details # Some settings may impact device functionality. See link above for details
Zeile 1236: Zeile 2366:
  
 [all] [all]
-#dtoverlay=vc4-fkms-v3d</file> +#dtoverlay=vc4-fkms-v3d
-=== dkms.j2 === +
-<file j2 dkms.j2>PACKAGE_NAME=batman-adv +
-PACKAGE_VERSION={{ batman_adv_version }} +
- +
-DEST_MODULE_LOCATION=/extra +
-BUILT_MODULE_NAME=batman-adv +
-BUILT_MODULE_LOCATION=net/batman-adv +
- +
-MAKE="'make'" +
-CLEAN="'make' clean" +
- +
-AUTOINSTALL="yes" +
-[django@T410 Raspbian]$  +
-[django@T410 Raspbian]$  +
-[django@T410 Raspbian]$  +
-[django@T410 Raspbian]$  +
-[django@T410 Raspbian]$ cat dkms.j2  +
-PACKAGE_NAME=batman-adv +
-PACKAGE_VERSION={{ batman_adv_version }} +
- +
-DEST_MODULE_LOCATION=/extra +
-BUILT_MODULE_NAME=batman-adv +
-BUILT_MODULE_LOCATION=net/batman-adv +
- +
-MAKE="'make'" +
-CLEAN="'make' clean" +
- +
-AUTOINSTALL="yes"</file> +
- +
-=== ext-respondd_alias.json.j2 === +
-<file j2 ext-respondd_alias.json.j2>+
-  "nodeinfo":+
-    "hostname": "{{ raspberry_hostname }}", +
-    "hardware":+
-      "model": "Raspberry Pi 4B" +
-    }, +
-    "owner":+
-      "contact": "{{ node_contact_address }}" +
-    }, +
-    "system":+
-      "site_code": "ffmuc_{{ ffmuc_segment }}", +
-      "role": "client" +
-    }, +
-    "location":+
-    "latitude": {{ raspberry_latitude }}, +
-    "longitude": {{ raspberry_longitude }} +
-    } +
-  }, +
-  "firstseen": "2019-08-14T12:34:56" +
-}</file> +
- +
-=== ext-respondd_config.json.j2 === +
-<file j2 ext-respondd_config.json.j2>+
-  "batman": "bat-{{ ffmuc_segment }}", +
-  "bridge": "br-{{ ffmuc_segment }}", +
-  "mesh-vpn": [ "fastd-{{ ffmuc_segment }}" ], +
-  "wan": "eth0", +
-  "rate_limit": 30, +
-  "rate_limit_burst": 10 +
-}</file> +
- +
-=== fastd.j2 === +
-<file j2 fastd.j2># +
-# welt FASTd configuration +
-+
- +
-log to syslog level info; +
- +
-interface "fastd-{{ ffmuc_segment }}"; +
- +
-method "salsa2012+umac"; +
-method "null"; +
- +
-secret "{{ secretkey_var.stdout }}"; +
- +
-mtu 1406; +
- +
-status socket "/var/run/fastd.{{ ffmuc_segment }}.sock"; +
- +
-on up " +
-        batctl ra BATMAN_V +
-        ip link set $INTERFACE down +
-        ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev $INTERFACE +
-        ip link set $INTERFACE up +
-        batctl -m bat-{{ ffmuc_segment }} if add $INTERFACE +
- +
-"; +
- +
-on down " +
-        batctl -m bat-{{ ffmuc_segment }} if del $INTERFACE +
-"; +
-peer group "ffmuc"+
-        peer limit 1; +
-         +
-        peer "gw01.in.ffmuc.net"+
-                key "e9e222c88de0613d7c2f2ca13b61e9146ca15c344b3d7ec55e0705f9fb730706"; +
-                remote "gw01.ext.ffmuc.net" port {{ ffmuc_fast_port }}; +
-        } +
- +
-        peer "gw02.in.ffmuc.net"+
-                key "9520145b940bc89358198918f4fb085b24280c3f9ac68600407395f89e856dcb"; +
-                remote "gw02.ext.ffmuc.net" port {{ ffmuc_fast_port }}; +
-        } +
- +
-        peer "gw07.in.ffmuc.net"+
-                key "845702d2d9c45f584f405cedb453d1fd61135273c08553156caf0cfa780c7b9a"; +
-                remote "gw07.ext.ffmuc.net" port {{ ffmuc_fast_port }}; +
-        } +
-}</file> +
- +
-=== hostapd.j2 === +
-<file j2 hostapd.j2>ssid=muenchen.freifunk.net/{{ ffmuc_segment }} +
- +
-country_code=US +
- +
-interface=wlan0 +
-driver=nl80211 +
- +
-macaddr_acl=0 +
- +
-logger_syslog=0 +
-logger_syslog_level=4 +
-logger_stdout=-1 +
-logger_stdout_level=0 +
- +
-hw_mode=a +
-wmm_enabled=1 +
- +
-# N +
-ieee80211n=1 +
-require_ht=1 +
-ht_capab=[MAX-AMSDU-3839][HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40] +
- +
-# AC +
-ieee80211ac=1 +
-require_vht=1 +
-ieee80211d=0 +
-ieee80211h=0 +
-vht_capab=[MAX-AMSDU-3839][SHORT-GI-80] +
-vht_oper_chwidth=1 +
-channel=36 +
-vht_oper_centr_freq_seg0_idx=42</file> +
- +
-=== hosts.j2 === +
-<file j2 hosts.j2>127.0.0.1 localhost {{ raspberry_hostname }} +
-::1 localhost ip6-localhost ip6-loopback +
-ff02::1 ip6-allnodes +
-ff02::2 ip6-allrouters</file> +
- +
-=== interfaces_client_ohne_mesh.j2 === +
-<file j2 interfaces_client_ohne_mesh.j2># interfaces(5) file used by ifup(8) and ifdown(8) +
- +
-# Please note that this file is written to be used with dhcpcd +
-# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' +
- +
-# Include files from /etc/network/interfaces.d: +
-# source-directory /etc/network/interfaces.d +
- +
-auto eth0 +
-iface eth0 inet dhcp +
- +
-auto eth0.{{ raspberry_clientvlan }} +
-iface eth0.{{ raspberry_clientvlan }} inet manual +
-  +
-auto br-{{ ffmuc_segment }} +
-iface br-{{ ffmuc_segment }} inet dhcp +
-        bridge-ports bat-{{ ffmuc_segment }} eth0.{{ raspberry_clientvlan }} +
-        pre-up /usr/sbin/batctl ra BATMAN_V +
-        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} gw_mode client +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} +
-        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }}</file> +
- +
-=== interfaces.j2 === +
-<file j2 interfaces.j2># interfaces(5) file used by ifup(8) and ifdown(8) +
- +
-# Please note that this file is written to be used with dhcpcd +
-# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' +
- +
-# Include files from /etc/network/interfaces.d: +
-# source-directory /etc/network/interfaces.d +
- +
-auto eth0 +
-iface eth0 inet dhcp +
-  +
-auto br-{{ ffmuc_segment }} +
-iface br-{{ ffmuc_segment }} inet dhcp +
-        bridge-ports bat-{{ ffmuc_segment }} +
-        pre-up /usr/sbin/batctl ra BATMAN_V +
-        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} gw_mode client +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} +
-        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }}+
 </file> </file>
  
-=== interfaces_mesh_mit_client.j2 === +<file bash ~/ansible/roles/oled/templates/oled-bandwidth.j2># Django : 2019-09-11
-<file j2 interfaces_mesh_mit_client.j2># interfaces(5) file used by ifup(8) and ifdown(8) +
- +
-# Please note that this file is written to be used with dhcpcd +
-# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' +
- +
-# Include files from /etc/network/interfaces.d: +
-# source-directory /etc/network/interfaces.d +
- +
-auto eth0 +
-iface eth0 inet dhcp +
- +
-auto eth0.{{ raspberry_meshvlan }} +
-iface eth0.{{ raspberry_meshvlan }} inet manual +
-        pre-up /sbin/ip link add vxlan-mesh type vxlan id {{ ffmuc_vxlan_id }} group ff02::15c dstport 4789 port 32768 61000 no udpcsum udp6zerocsumtx udp6zerocsumrx dev eth0.{{ raspberry_meshvlan }} || true +
-        up /sbin/ip link set vxlan-mesh up +
-        post-up /usr/sbin/batctl ra BATMAN_V +
-        post-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add vxlan-mesh +
-        down ip link set vxlan-mesh down +
-        post-down ip link del vxlan-mesh || true +
- +
-auto eth0.{{ raspberry_clientvlan }} +
-iface eth0.{{ raspberry_clientvlan }} inet manual +
-  +
-auto br-{{ ffmuc_segment }} +
-iface br-{{ ffmuc_segment }} inet dhcp +
-        bridge-ports bat-{{ ffmuc_segment }} eth0.{{ raspberry_clientvlan }} +
-        pre-up /usr/sbin/batctl ra BATMAN_V +
-        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} gw_mode client +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} +
-        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} +
-</file> +
- +
-=== interfaces_mesh_ohne_client.j2 === +
-<file j2 interfaces_mesh_ohne_client.j2># interfaces(5) file used by ifup(8) and ifdown(8) +
- +
-# Please note that this file is written to be used with dhcpcd +
-# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' +
- +
-# Include files from /etc/network/interfaces.d: +
-# source-directory /etc/network/interfaces.d +
- +
-auto eth0 +
-iface eth0 inet dhcp +
- +
-auto eth0.{{ raspberry_meshvlan }} +
-iface eth0.{{ raspberry_meshvlan }} inet manual +
-        pre-up /sbin/ip link add vxlan-mesh type vxlan id {{ ffmuc_vxlan_id }} group ff02::15c dstport 4789 port 32768 61000 no udpcsum udp6zerocsumtx udp6zerocsumrx dev eth0.{{ raspberry_meshvlan }} || true +
-        up /sbin/ip link set vxlan-mesh up +
-        post-up /usr/sbin/batctl ra BATMAN_V +
-        post-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add vxlan-mesh +
-        down ip link set vxlan-mesh down +
-        post-down ip link del vxlan-mesh || true +
-  +
-auto br-{{ ffmuc_segment }} +
-iface br-{{ ffmuc_segment }} inet dhcp +
-        bridge-ports bat-{{ ffmuc_segment }} +
-        pre-up /usr/sbin/batctl ra BATMAN_V +
-        pre-up /sbin/ip link add dummy-{{ ffmuc_segment }} type dummy +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set dummy-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} if add dummy-{{ ffmuc_segment }} +
-        pre-up /sbin/ip link set bat-{{ ffmuc_segment }} up +
-        pre-up /usr/sbin/batctl -m bat-{{ ffmuc_segment }} gw_mode client +
-        pre-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev bat-{{ ffmuc_segment }} +
-        post-up /sbin/ip link set address $(ip -br l | grep eth0 | egrep -o '([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})' | head -1) dev br-{{ ffmuc_segment }} +
-</file> +
-=== oled-bandwidth.j2 === +
-<file bash oled-bandwidth.j2># Django : 2019-09-11+
 [Unit] [Unit]
 +# see man systemd.unit
 +Description=Starting OLED-Trafic output
 +Documentation=https://wiki.mailserver.guru/doku.php/centos:ansible:ffmuc-rpb4-ol
 After=network.target After=network.target
  
 [Service] [Service]
 +# see man systemd.service, systemd.exec
 ExecStart=/usr/bin/python3 /usr/local/src/raspberry-oled-bandwidth/bandwidth.py ExecStart=/usr/bin/python3 /usr/local/src/raspberry-oled-bandwidth/bandwidth.py
 +StandardOutput=syslog
 +StandardError=syslog
  
 [Install] [Install]
-WantedBy=default.target</file>+WantedBy=default.target 
 +</file>
  
-=== rclocal_both.j2 === 
-<file java rclocal_both.j2>#!/bin/sh -e 
-# 
-# rc.local 
-# 
-# This script is executed at the end of each multiuser runlevel. 
-# Make sure that the script will "exit 0" on success or any other 
-# value on error. 
-# 
-# In order to enable or disable this script just change the execution 
-# bits. 
-# 
-# By default this script does nothing. 
  
-# Print the IP address +=== Rolle "final=== 
-_IP=$(hostname -I) || true +== Tasks == 
-if [ "$_IP]; then +<file java ~/ansible/roles/final/tasks/main.yml>--- # Reboot nach Abschluss der Konfiguration unseres Offloaders 
-  printf "My IP address is %s\n" "$_IP" +- include: reboot.yml                   # /etc/hosts anpassen 
-fi +... #YAML Ende Syntax 
-sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 +</file>
-echo 1000000 > /sys/devices/virtual/net/vxlan-mesh/batman_adv/throughput_override +
-exit 0</file>+
  
-=== rclocal_vxlan.j2 === +<file java ~/ansible/roles/final/tasks/reboot.yml>--- 
-<file java rclocal_vxlan.j2>#!/bin/sh -e +  - name: "Reboot nach Abschluss der Konfiguration unseres Offloaders
-+    https://docs.ansible.com/ansible/latest/modules/reboot_module.html 
-# rc.local +    reboot: 
-+</file>
-# This script is executed at the end of each multiuser runlevel. +
-# Make sure that the script will "exit 0on success or any other +
-value on error. +
-+
-# In order to enable or disable this script just change the execution +
-# bits+
-# +
-# By default this script does nothing.+
  
-# Print the IP address +==== Download des auf Debian Buster basierenden Raspbian ====
-_IP=$(hostname -I) || true +
-if [ "$_IP" ]; then +
-  printf "My IP address is %s\n" "$_IP" +
-fi +
-echo 1000000 > /sys/devices/virtual/net/vxlan-mesh/batman_adv/throughput_override +
-exit 0</file>+
  
-=== rclocal_wifi.j2 === +Nachdem es aktuell((Stand: April 2022)) noch kein fertiges Gluon Image für das **[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry PI 4B]]** gibt, holen wir uns nun das aktuelle **[[https://www.raspberrypi.org/software/operating-systems/|Raspberry Pi OS]]** (früher unter dem Namen //Raspbian// bekannt) auf unseren Rechner. Dies hat mitunter auch noch den Charme, dass wir bei Bedarf alle normalen Anwendungen wie Webserver, Chatserver oder z.B. den Unifi-Controller einfach installieren können. 
-<file java rclocal_both.j2>#!/bin/sh -e +
-+
-# rc.local +
-+
-# This script is executed at the end of each multiuser runlevel. +
-# Make sure that the script will "exit 0" on success or any other +
-# value on error. +
-+
-# In order to enable or disable this script just change the execution +
-# bits. +
-+
-# By default this script does nothing. +
- +
-# Print the IP address +
-_IP=$(hostname -I) || true +
-if [ "$_IP" ]; then +
-  printf "My IP address is %s\n" "$_IP" +
-fi +
-sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 +
-echo 1000000 > /sys/devices/virtual/net/vxlan-mesh/batman_adv/throughput_override +
-exit 0</file> +
- +
-==== Download des auf Debian Buster basierenden Raspbian ==== +
-Nachdem es aktuell((Stand: Februar 2020)) noch kein fertiges Gluon Image für das **[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry PI 4B]]** gibt, holen wir uns nun das aktuelle Raspbian auf unseren Rechner. Dies hat mitunter auch noch den Charme, dass wir bei Bedarf alle normalen Anwendungen wie Webserver, Chatserver oder z.B. den Unifi-Controller einfach installieren können. +
  
 Eine Anleitung zur manuellen Installation findet man auf der **[[https://www.raspberrypi.org/documentation/installation/installing-images/README.md|offiziellen Raspbian Seite]]**.  Eine Anleitung zur manuellen Installation findet man auf der **[[https://www.raspberrypi.org/documentation/installation/installing-images/README.md|offiziellen Raspbian Seite]]**. 
  
-   $ wget https://downloads.raspberrypi.org/raspbian_lite_latest+   $ wget https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64-lite.zip{,.sha256}
  
-Bevor wir nun das Archiv entpacken überprüfen wir noch die Integrität der heruntergeladenen Datei. Heirzu berechnen wir erst einmal die **SHA256**-Prüfsumme der Datei **raspbian_lite_latest**. +Bevor wir nun das Archiv entpacken überprüfen wir noch die Integrität der heruntergeladenen Datei. Hierzu berechnen wir erst einmal die **SHA256**-Prüfsumme der Datei **raspbian_lite_latest**. 
-   $ sha256sum raspbian_lite_latest+   $ sha256sum --check 2022-01-28-raspios-bullseye-arm64-lite.zip.sha256 
 +    
 +  2022-01-28-raspios-bullseye-arm64-lite.zip: OK
  
-  12ae6e17bf95b6ba83beca61e7394e7411b45eba7e6a520f434b0748ea7370e8  raspbian_lite_latest+Da der SHA256-Prüfsummencheck positiv erfolgreich war und mit einem **OK** bestätigt wurde, können wir nun das Archiv entpacken. 
 +   $ unzip 2022-01-28-raspios-bullseye-arm64-lite.zip
  
-Die Zeichenfolge überprüfen wir nun mit den Angaben auf der Seitehttps://www.raspberrypi.org/downloads/raspbian/ +<code>Archive 2022-01-28-raspios-bullseye-arm64-lite.zip 
-{{ :centos:ansible:raspbian_buster_lite.png?nolink&600 |Bild: Bildschirmhardcopy der Seite www.raspberrypi.org/downloads/raspbian/ (Stand: 16.02.2020)}}+  inflating2022-01-28-raspios-bullseye-arm64-lite.img</code>
  
-Da sich beide SHA-Werte **__nicht__** unterscheiden können wir das herunter geladene ZIP-Archiv nun entpacken.    
-   $ unzip raspbian_lite_latest 
- 
-<code>Archive:  raspbian_lite_latest 
-  inflating: 2020-02-13-raspbian-buster-lite.img   
-</code> 
  
 ==== Kopieren des Raspbian Images auf die microSD-Karte ==== ==== Kopieren des Raspbian Images auf die microSD-Karte ====
 Nun können wir das Image auf die MicroSD Karte, die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte. Nun können wir das Image auf die MicroSD Karte, die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte.
-   # tail -f /var/log/syslog+<code> tail -f /var/log/messages</code> bzw. <code> $ sudo tail -f /var/log/syslog</code>
  
-<code>Feb 16 21:47:29 T410 kernel: usb 1-1.2: new high-speed USB device number 6 using ehci-pci +<code>Sep  5 21:10:57 Djangos-ThinkPad-X230 kernel: [12795.867603] mmc0: new high speed SDHC card at address aaaa 
-Feb 16 21:47:29 T410 kernel: usb 1-1.2New USB device found, idVendor=1908, idProduct=0226, bcdDevice= 1.11 +Sep  5 21:10:57 Djangos-ThinkPad-X230 kernel: [12795.868313] mmcblk0mmc0:aaaa SC16G 14.8 GiB  
-Feb 16 21:47:29 T410 kernel: usb 1-1.2New USB device strings: Mfr=0, Product=0, SerialNumber=0 +Sep  5 21:10:57 Djangos-ThinkPad-X230 kernel: [12795.871017]  mmcblk0p1 p2 
-Feb 16 21:47:29 T410 kernel: usb-storage 1-1.2:1.0: USB Mass Storage device detected +Sep  5 21:10:58 Djangos-ThinkPad-X230 kernel[12796.199093] FAT-fs (mmcblk0p1)Volume was not properly unmounted. Some data may be corrupt. Please run fsck
-Feb 16 21:47:29 T410 kernel: scsi host4: usb-storage 1-1.2:1.0 +Sep  5 21:10:58 Djangos-ThinkPad-X230 systemd[1]: Finished Clean the /media/django/boot mount point
-Feb 16 21:47:29 T410 mtp-probe[38884]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" +Sep  5 21:10:58 Djangos-ThinkPad-X230 udisksd[976]: Mounted /dev/mmcblk0p1 at /media/django/boot on behalf of uid 1001 
-Feb 16 21:47:29 T410 mtp-probe[38884]: bus: 1, device: 6 was not an MTP device +Sep  5 21:10:58 Djangos-ThinkPad-X230 kernel: [12796.302402] EXT4-fs (mmcblk0p2): recovery complete 
-Feb 16 21:47:29 T410 mtp-probe[38887]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" +Sep  5 21:10:58 Djangos-ThinkPad-X230 kernel: [12796.303545] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) 
-Feb 16 21:47:29 T410 mtp-probe[38887]: bus: 1, device: 6 was not an MTP device +Sep  5 21:10:58 Djangos-ThinkPad-X230 systemd[1]Finished Clean the /media/django/rootfs mount point. 
-Feb 16 21:47:30 T410 kernel: scsi 4:0:0:0: Direct-Access     Generic  Mass-Storage     1.11 PQ: 0 ANSI: 2 +Sep  5 21:10:58 Djangos-ThinkPad-X230 udisksd[976]: Mounted /dev/mmcblk0p2 at /media/django/rootfs on behalf of uid 1001 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: Attached scsi generic sg2 type 0 +Sep  5 21:11:09 Djangos-ThinkPad-X230 gnome-terminal-[8119]: g_menu_insert_item: assertion 'G_IS_MENU_ITEM (item)' failed</code>
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB) +
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdbWrite Protect is off +
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] No Caching mode page found +
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] Assuming drive cache: write through +
-Feb 16 21:47:30 T410 kernel: sdb: sdb1 sdb2 < sdb5 > +
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] Attached SCSI removable disk +
-Feb 16 21:47:31 T410 kernel: EXT4-fs (sdb5): recovery complete +
-Feb 16 21:47:31 T410 kernel: EXT4-fs (sdb5): mounted filesystem with ordered data mode. Opts: (null) +
-Feb 16 21:47:31 T410 kernelext4 filesystem being mounted at /run/media/django/SETTINGS supports timestamps until 2038 (0x7fffffff) +
-Feb 16 21:47:31 T410 journal[1042]: Mounted /dev/sdb5 at /run/media/django/SETTINGS on behalf of uid 1000</code>+
  
-In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/dev/sdb''**. Wir wissen also wie wir nun die zuvor heruntergeladene **[[#download_des_auf_debian_buster_basierenden_raspbian|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren müssen. In der Regel hat der "normale Nutzer" keine Rechte um diese Gerätedatei anzusprechen, wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** die  Gerätedatei **'' /dev/sdb''** in diesem Konfigurationsbeispiel ansprechen.+In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/dev/mmcblk0''**. Wir wissen also wie wir nun die zuvor heruntergeladene **[[#download_des_auf_debian_buster_basierenden_raspbian|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren müssen. In der Regel hat der "normale Nutzer" keine Rechte um diese Gerätedatei anzusprechen, wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** die  Gerätedatei **''/dev/mmcblk0''** in diesem Konfigurationsbeispiel ansprechen.
  
-   # dd if=~/2020-02-13-raspbian-buster-lite.img of=/dev/sdb bs=4M status=progress conv=fsync+<code> # dd if=/home/django/Freifunk/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code> bzw.  
 +<code> $ sudo dd if=/home/django/Freifunk/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code>
  
-Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''/boot/ssh''** auf der SD-Karte ab. Nach dem erneuten Anstecken der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/run/media/''** gemountet. Zum Anlagen der betreffenden Datei  **''ssh''** in dem Verzeichnis reicht also folgender Aufruf: +Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''/boot/ssh''** auf der SD-Karte ab. Nach dem erneuten Anstecken der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/run/media/''** oder auch **''/media/''**gemountet. Zum Anlagen der betreffenden Datei  **''ssh''** in dem Verzeichnis reicht also folgender Aufruf, bei dem wir den Usernamen natürlich unseren Gegebenheiten entsprechend anpassen.
-   # touch /run/media/django/boot/ssh+<code> # touch /run/media/django/boot/ssh</code> bzw. <code> $ touch /media/django/boot/ssh</code>
  
-Anschließend könne wir nach einem unmounten des Gerätes **''/dev/sdb''** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk und dem zugehörigen Netzteil verbinden und starten.+Anschliessend können wir nach einem unmounten des Gerätes **''/dev/sdb''** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk sowie dem zugehörigen Netzteil verbinden und starten.
  
 ==== Ändern des Default-Passwortes und kopieren des SSH-Public-Keys auf den Raspberry 4 ==== ==== Ändern des Default-Passwortes und kopieren des SSH-Public-Keys auf den Raspberry 4 ====
 +
 <WRAP center round important 80%> <WRAP center round important 80%>
 Der Benutzername lautet **''pi''**und das Passwort **__''raspberry''__**. Das Passwort dieses Nutzers ändern wir nun als erstes ab, da sonst die **Gefahr** besteht, dass Fremde sich unseres Offloaders bemächtigen! Der Benutzername lautet **''pi''**und das Passwort **__''raspberry''__**. Das Passwort dieses Nutzers ändern wir nun als erstes ab, da sonst die **Gefahr** besteht, dass Fremde sich unseres Offloaders bemächtigen!
Zeile 1657: Zeile 2456:
          ssh-copy-id -i ~/.ssh/id_ed25519_ffmuc.pub -o IdentitiesOnly=yes pi@raspberry-ansible          ssh-copy-id -i ~/.ssh/id_ed25519_ffmuc.pub -o IdentitiesOnly=yes pi@raspberry-ansible
  
-Alternativ dazu müssten wir den Raspberry 4B über die IP-Adresse ansprechen, die dieser zugewiesen bekommt. In dem folgenden Beispiel wäre das die IP-Adresse: **10.0.10.29**: +Alternativ dazu müssten wir den Raspberry 4B über die IP-Adresse ansprechen, die dieser zugewiesen bekommt. In dem folgenden Beispiel wäre das die IP-Adresse: **192.168.0.25**: 
-   $ ssh -l pi 10.0.10.29 -o IdentitiesOnly=yes "passwd" && \ +   $ ssh -l pi 192.168.0.25 -o IdentitiesOnly=yes "passwd" && \ 
-         ssh-copy-id -i ~/.ssh/id_ed25519_ffmuc.pub -o IdentitiesOnly=yes pi@10.0.10.29+         ssh-copy-id -i ~/.ssh/id_ed25519_ffmuc.pub -o IdentitiesOnly=yes pi@192.168.0.25
  
 In dem folgenden Konfigurationsbeispiel vergeben wir für den Benutzer **''pi''** das Passwort **''gECzebzn7GYSLvXueECAxeGm7l7''**. Beim Ändern des bestehenden Passwortes müssen wir einmal das Default-Passwort **''raspberry''** eingeben und dann 2x das neue **''gECzebzn7GYSLvXueECAxeGm7l7''**. Beim Kopieren des Public-Keys müssen wir dann einmalig das neue geänderte Passwort **''gECzebzn7GYSLvXueECAxeGm7l7''** verwenden. In dem folgenden Konfigurationsbeispiel vergeben wir für den Benutzer **''pi''** das Passwort **''gECzebzn7GYSLvXueECAxeGm7l7''**. Beim Ändern des bestehenden Passwortes müssen wir einmal das Default-Passwort **''raspberry''** eingeben und dann 2x das neue **''gECzebzn7GYSLvXueECAxeGm7l7''**. Beim Kopieren des Public-Keys müssen wir dann einmalig das neue geänderte Passwort **''gECzebzn7GYSLvXueECAxeGm7l7''** verwenden.
  
- +<code>The authenticity of host '10.0.10.29 (10.0.10.29)' can't be established. 
- +ECDSA key fingerprint is SHA256:vXhdvud24tyTUtOan4XeTZ7GzxZDQn9Rj0mxuhimkH4.
- +
- +
-<code>The authenticity of host 'raspberry-ansible (<no hostip for proxy command>)' can't be established. +
-ECDSA key fingerprint is SHA256:scR7cgECzebzn7GYSLvXueECAxeGm7l7Rp0fp4DHaUk.+
 Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
-Warning: Permanently added 'raspberry-ansible' (ECDSA) to the list of known hosts. +Warning: Permanently added '10.0.10.29' (ECDSA) to the list of known hosts. 
-pi@raspberry-ansible's password: +pi@10.0.10.29's password: 
 Current password: raspberry Current password: raspberry
 New password: gECzebzn7GYSLvXueECAxeGm7l7 New password: gECzebzn7GYSLvXueECAxeGm7l7
Zeile 1677: Zeile 2472:
 passwd: password updated successfully passwd: password updated successfully
 Changing password for pi. Changing password for pi.
- +/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/django/.ssh/id_ed25519_freifunk.pub"
-/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_ed25519_ffmuc.pub"+
 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
-pi@raspberry-ansible's password: +pi@10.0.10.29's password: 
  
 Number of key(s) added: 1 Number of key(s) added: 1
Zeile 1688: Zeile 2482:
 and check to make sure that only the key(s) you wanted were added. and check to make sure that only the key(s) you wanted were added.
 </code> </code>
- 
- 
- 
  
    $ ssh raspberry-ansible     $ ssh raspberry-ansible 
  
 <html><pre class="code"> <html><pre class="code">
-<font style="color: rgb(0, 0, 0)">Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l+<font style="color: rgb(0, 0, 0)">Linux raspberrypi 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l
  
 The programs included with the Debian GNU/Linux system are free software; The programs included with the Debian GNU/Linux system are free software;
 the exact distribution terms for each program are described in the the exact distribution terms for each program are described in the
-individual files in /usr/share/doc/*/copyright.+individual files in /usr/share/doc/STERNCHEN/copyright.
  
 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
Zeile 1713: Zeile 2504:
 ==== Starten des Ansible-Playbooks ==== ==== Starten des Ansible-Playbooks ====
 Beim Abarbeiten des ansible-playbook werden zur Konfiguration des Offloaders und dessen Komponenten/Dienste folgende Parameter benötigt: Beim Abarbeiten des ansible-playbook werden zur Konfiguration des Offloaders und dessen Komponenten/Dienste folgende Parameter benötigt:
-  * Batman-Relase ([[https://downloads.open-mesh.org/batman/releases/|Version]]) der zum Einsatz kommen soll.+  * Batman-Release ([[https://downloads.open-mesh.org/batman/releases/|Version]]) der zum Einsatz kommen soll.
   * [[https://ffmuc.net/wiki/doku.php?id=knb:gui#domaene|Segment/Domäne]] in dem der Offloader betrieben werden soll   * [[https://ffmuc.net/wiki/doku.php?id=knb:gui#domaene|Segment/Domäne]] in dem der Offloader betrieben werden soll
   * Angaben zur [[https://map.ffmuc.net/#!/de/map|Freifunk Karte]] zur Darstellung    * Angaben zur [[https://map.ffmuc.net/#!/de/map|Freifunk Karte]] zur Darstellung 
Zeile 1726: Zeile 2517:
   * Ist an dem Raspberry ein OLE-Display von [[https://www.az-delivery.de/products/0-96zolldisplay|AZDelivery]] verbaut/angeschlossen?   * Ist an dem Raspberry ein OLE-Display von [[https://www.az-delivery.de/products/0-96zolldisplay|AZDelivery]] verbaut/angeschlossen?
  
-Bei der Ausführung sind seit Version v2 ((Version v2 vom 09.03.2020)) zwei ansible-playbooks enthalten: +=== wireguard-offloader.yml === 
-  - **raspi_offloader_menu.yml** \\ Hier werden die benötigten Parameter bei der Ausführung des ansible-playbooks interaktiv abgefragt. Somit ist eine Änderung/Bearbeitung des Playbooks __nicht__ nötig und der ungeübtere Ansible-Nutzer kann sofort loslegen. Möchte man erneut den gleichen Raspberry neu betanken, weil z.B. die MicroSD-Karte getauscht werden musste, so muss man freilich die Informationen sich gesondert merken und bei einem abermaligen Aufruf erneut eingeben. \\ \\ +In dem tar.gz-Archiv des Playbooks ist seit Version v4 ((Version v4 vom 12.12.2020)) folgendes ansible-playbooks enthalten: **wireguard-offloader.yml.yml**  
-  - **raspi_offloader_file.yml** \\ Hier werden die zur Konfiguration benötigten Parameter nicht beim Aufruf des Playbooks abgefragt, sondern im playbook selbst hinterlegt. Das ist im ersten Schritt für den ungeübten Ansible-Nutzer zwar augenscheinlich aufwändiger, hat aber den Vorteil, dass man die zur Konfiguration benötigten Parameter immer sofort "zur Hand" hat. \\ In den Zeilen **''34 bis 43''** sind diese Parameter entsprechend zu hinterlegen. <code> $ vim raspi_offloader_file.yml +34</code><code> 34     batman_adv_version:   "2019.5" + 
- 35     ffmuc_segment:        "welt" +Hier werden die zur Konfiguration benötigten Parameter nicht beim Aufruf des Playbooks abgefragt, sondern in zugehörigen **[[#inventory-definition|Inventory-Datei]]** hinterlegt. Das ist im ersten Schritt für den ungeübten Ansible-Nutzer zwar augenscheinlich aufwändiger, hat aber den Vorteil, dass man die zur Konfiguration benötigten Parameter immer sofort "zur Hand" hat.  
- 36     raspberry_hostname:   "ff_django_rpb4_ansible" + 
- 37     node_contact_address: "BOfH aka Django : django@nausch.org" +In den Zeilen **''55 bis 64''** sind diese Parameter entsprechend zu hinterlegen.  
- 38     raspberry_latitude:   "48.158542598" +   $ vim ~/ansible/inventories/production/hosts.yml +54
- 39     raspberry_longitude:  "11.769297123" +
- 40     raspberry_wifi:       "ja" +
- 41     raspberry_clientvlan: "333" +
- 42     raspberry_meshvlan:   "666" +
- 43     raspberry_oled:       "ja"</code>+
  
-=== Bsp. 1 raspi_offloader_menu.yml === +<code> 54     batman_adv_version  "2020.4" 
-Am besten besorgen wir uns die entsprechenden Daten vorab und halten diese parat, da diese nach dem Start des ansible-playbooks abgefragt werden.+ 55     ffmuc_segment:        "muc_ost" 
 + 56     ffmuc_gateway:        "gw04" 
 + 57     raspberry_hostname:   "raspbian-ansible-offloader" 
 + 58     node_contact_address: "https://bit.ly/2VxGoXp" 
 + 59     raspberry_latitude:   "48.239094621" 
 + 60     raspberry_longitude:  "11.558936834" 
 + 61     raspberry_wifi:       "ja" 
 + 62     raspberry_clientvlan: "123" 
 + 63     raspberry_meshvlan:   "456" 
 + 64     raspberry_oled:       "ja"</code>
  
-Haben wir die Informationen vorrätigbleibt uns zum Schluss nur noch der Aufruf des Ansible-Scriptes. +=== Playbook Lauf === 
-   $ ansible-playbook ~/ansible/playbooks/raspi_offloader_menu.yml+Nachdem wir die Informationen in dem Ansible-Playbook hinterlegt habenkönnen wir wie gewohnt das Ansible-Scriptes ausführen
 +   $ ansible-playbook ~/ansible/wireguard-offloader.yml
  
 <html><pre class="code"> <html><pre class="code">
 <font style="color: rgb(0, 0, 0)"> <font style="color: rgb(0, 0, 0)">
-Was ist die aktuelle BATMAN Version, die hier +PLAY [raspi_offloader.yml] *********************************************************************************************************************************
-https://downloads.open-mesh.org/batman/releases/ gelistet ist?             : 2019.5+
  
-In welchem der Segmente hier soll der Offloader betrieben werden +TASK [Gathering Facts] ************************************************************************************************************************************* 
-                                                                  muc_cty  +<font style="colorrgb(51, 145, 5)">ok[raspi_offloader]</font>
-                                                                  muc_nord  +
-                                                                  muc_ost  +
-                                                                  muc_sued  +
-                                                                  muc_west  +
-                                                                  uml_nord  +
-                                                                  uml_ost  +
-                                                                  uml_sued  +
-                                                                  uml_west  +
-                                                                  gauting  +
-                                                                  freising  +
-                                                                  welt     welt+
  
-Wie lautet der Hostname des Raspberry Offloaders?                          raspi-offloader+TASK [basic : Hostname ändern] ***************************************************************************************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed[raspi_offloader]</font>
  
-Wie lautet die Kontakt-Adresse des Node-Betreibers?                        Django aka BOFH - django@nausch.org+TASK [basic Template Konfigurationsdatei für /etc/hosts an Ort und Stelle kopieren und Variablen anpassen] *********************************************** 
 +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-Wie lautet der Geographische Breitengrad des Raspberry Offloaders?         48.198105+TASK [basic : Beschreibung des User 'pi' anpassen] ********************************************************************************************************* 
 +<font style="color: rgb(191, 125, 0)">changed[raspi_offloader]</font>
  
-Wie lautet der Geographische Längengrad des Raspberry Offloaders?          11.798415+TASK [basic : Service rfkill am Raspberry deaktivieren] **************************************************************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed[raspi_offloader]</font>
  
-Soll der Raspberry Offloader auch ein WLAN ausstrahlen'ja'?              ja+TASK [basic : Update und Upgrade der APT-Paket] ************************************************************************************************************ 
 +<font style="color: rgb(169, 126, 155)"><b>[WARNING]: Updating cache and auto-installing missing dependency: python-apt</b></font> 
 +<font style="color: rgb(191, 1250)">changed[raspi_offloader]</font>
  
-Soll der Raspberry Offloader ein Client-VLAN zur Verfügung stellen? +TASK [basic : Reboot nach update] ************************************************************************************************************************** 
-                                   Wenn jawie lautet die VLAN-ID?        333+<font style="color: rgb(191, 1250)">changed[raspi_offloader]</font>
  
-Soll der Raspberry Offloader ein Mesh-VLAN zur Verfügung stellen? +TASK [batman : *BATMAN Installation* : Download des aktuellen BATMAN Archives] ***************************************************************************** 
-                                   Wenn jawie lautet die VLAN-ID?        666+<font style="color: rgb(191, 1250)">changed[raspi_offloader]</font>
  
-Ist ein OLE-Display an dem Raspberry Offloader angeschlossen?              ja+TASK [batman : *BATMAN Installation* : Entpacken des BATMAN-Archives] ************************************************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed[raspi_offloader]</font>
  
-PLAY [raspi_offloader.yml] *************************************************************************************************************+TASK [batman : *BATMAN compile: Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi OS Linux Kernel] ****** 
 +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Gathering Facts] ***************************************************************************************************************** +TASK [batman : *BATMAN compile* : Rebuild BATMAN Kernel Header Dateien] ************************************************************************************ 
-<font style="colorrgb(51, 145, 5)">ok: [raspberry-ansible]</font> +<font style="color: rgb(201, 0, 0)">fatal: [raspberry-wireguard]: FAILED! => {"changed": false, "cmd": "/usr/bin/make scripts", "msg": "make: *** No rule to make target 'scripts' Stop.", "rc": 2, "stderr": "make: *** No rule to make target 'scripts' Stop.\n", "stderr_lines": ["make: *** No rule to make target 'scripts' Stop."], "stdout": "", "stdout_lines": []}</font>
- +
-TASK [Hostname ändern] ***************************************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Anpassung /etc/hosts] ************************************************************************************************************ +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Beschreibung des User 'pi' anpassen] ********************************************************************************************* +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Service rfkill am Raspberry deaktivieren] **************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Update und Upgrade der APT-Pakete] *********************************************************************************************** +
-<font style="color: rgb(169, 126, 155)">[WARNING]: Updating cache and auto-installing missing dependency: python-apt</font> +
- +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Reboot nach update] ************************************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Download des aktuellen BATMAN Archives] ****************************************************************************************** +
-<font style="colorrgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [BATMAN-Archiv entpacken] ********************************************************************************************************* +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi Linux Kernel] ***************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Rebuild BATMAN Kernel Header Dateien] ******************************************************************************************** +
- +
-<font style="color: rgb(201, 0, 0)">fatal: [raspberry-ansible]: FAILED! => {"changed": false, "cmd": "/usr/bin/make scripts", "msg": "scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory\n #include <tools/be_byteshift.h>\n          ^~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\nmake[1]: *** [scripts/Makefile.host:90: scripts/sortextable] Error 1\nmake: *** [Makefile:1067: scripts] Error 2", "rc": 2, "stderr": "scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory\n #include <tools/be_byteshift.h>\n          ^~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\nmake[1]: *** [scripts/Makefile.host:90: scripts/sortextable] Error 1\nmake: *** [Makefile:1067: scripts] Error 2\n", "stderr_lines": ["scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory", " #include <tools/be_byteshift.h>",         ^~~~~~~~~~~~~~~~~~~~~~", "compilation terminated.", "make[1]: *** [scripts/Makefile.host:90: scripts/sortextable] Error 1", "make: *** [Makefile:1067: scripts] Error 2"], "stdout": CC      scripts/mod/empty.o\n  MKELF   scripts/mod/elfconfig.h\n  HOSTCC  scripts/mod/modpost.o\n  CC      scripts/mod/devicetable-offsets.s\n  HOSTCC  scripts/mod/file2alias.o\n  HOSTCC  scripts/mod/sumversion.o\n  HOSTLD  scripts/mod/modpost\n  HOSTCC  scripts/sortextable\n", "stdout_lines": [ CC      scripts/mod/empty.o", MKELF   scripts/mod/elfconfig.h", HOSTCC  scripts/mod/modpost.o", CC      scripts/mod/devicetable-offsets.s", HOSTCC  scripts/mod/file2alias.o", HOSTCC  scripts/mod/sumversion.o", HOSTLD  scripts/mod/modpost", HOSTCC  scripts/sortextable"]}</font>+
 <font style="color: rgb(2, 110, 147)">...ignoring</font> <font style="color: rgb(2, 110, 147)">...ignoring</font>
  
-TASK [Anlegen der dkms.conf für Dynamic Kernel Module Support] ************************************************************************* +TASK [batman : *BATMAN compile* : Anlegen der dkms.conf für Dynamic Kernel Module Support] ***************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support hinzufügen] **************************************************************************************** +TASK [batman : *BATMAN compile* : Dynamic Kernel Module Support hinzufügen] ******************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support bauen] ********************************************************************************************* +TASK [batman : *BATMAN compile* : Dynamic Kernel Module bauen] ********************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support installieren] ************************************************************************************** +TASK [batman : *BATMAN compile* : BATMAN Dynamic Kernel Module installieren] ******************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Laden des Kernelmodul beim Booten veranlassen*********************************************************************************** +TASK [batman : *BATMAN load-modules* : Laden der BATMAN Dynamic Kernel Module beim Booten sicherstellen] *************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Laden des BATMAN Moduls********************************************************************************************************* +TASK [batman : *BATMAN load-modules* : dummy Modul laden] ************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Laden des dummy Moduls] ********************************************************************************************************** +TASK [batman : *BATMAN load-modules: BATMAN-ADV Modul laden] ********************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation der  bridge-utils************************************************************************************************** +TASK [batman : *buster-backport* : PGP-Schlüssel 04EE7237B7D453EC für buster-backports installieren] ******************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Aktivierung von BATMAN_V] ******************************************************************************************************** +TASK [batman : *buster-backport: PGP-Schlüssel 648ACFD622F3D138 für buster-backports installieren] ******************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Konfiguration des Interfaces] **************************************************************************************************** +TASK [batman : *buster-backport: buster-backports dem System bekannt machen] ***************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation von FASTD] ********************************************************************************************************** +TASK [batman : *buster-backport: APT-Cache aktualisieren] ************************************************************************************************ 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Verzeichnis für fastdKonfigurationsdatei anlegen] ****************************************************************************** +TASK [batman : *utils-installation* : Installation der bridge-utils*************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Schlüssel für fastd erstellen] *************************************************************************************************** +TASK [batman : *utils-installation: Installation der bridge-utils] *************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [FASTD Secret Key aus /root/fastd.key in Variable übergeben] ********************************************************************** +TASK [batman : *BATMAN-ADV* : Aktivierung von BATMAN_V**************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [FASTD Socket ermitteln] ********************************************************************************************************** +TASK [batman : *BATMAN-ADV Interfaces: Konfiguration des Interfaces] ************************************************************************************* 
-<font style="color: rgb(2110147)">skipping: [raspberry-ansible=> (item={'key': 'muc_cty', 'value': 30002})  +<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
-skipping: [raspberry-ansible] => (item={'key': 'muc_nord', 'value': 30003})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_ost', 'value': 30004})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_sued', 'value': 30005})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_west', 'value': 30006})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_nord', 'value': 30007})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_ost', 'value': 30008})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_sued', 'value': 30009})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_west', 'value': 30010})  +
-skipping: [raspberry-ansible] => (item={'key': 'gauting', 'value': 30012})  +
-skipping: [raspberry-ansible] => (item={'key': 'freising', 'value': 30013})</font> +
-<font style="color: rgb(51, 145, 5)">ok: [raspberry-ansible] => (item={'key': 'welt', 'value': 30011})</font>+
  
-TASK [Erstellen der fastd Konfigurationsdatei***************************************************************************************** +TASK [batman : *BATMAN Installation* : Reboot nach Ende der BATMAN Installationsschritte] ****************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Service fastd beim Booten starten] *********************************************************************************************** +TASK [wireguard : *wireguard* : Installation von wireguard************************************************************************************************ 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation der Pakete git und python3-netifaces] ******************************************************************************* +TASK [wireguard : *wireguard* : Schlüsselmaterial erstellen*********************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Repo ext-respondd klonen] ******************************************************************************************************** +TASK [wireguard : *wireguard: Zugriffsrechte des Private Keys anpassen] ********************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Systemd Startdatei für respondd kopieren] **************************************************************************************** +TASK [wireguard : *wireguard : *wireguard: Zugriffsrechte des Public Keys anpassen] ********************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Erstellen der resondd Konfigurationsdatei alias.json] **************************************************************************** +TASK [wireguard : *wireguard : *wireguard: lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen] *************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Erstellen der resondd Konfigurationsdatei config.json] *************************************************************************** +TASK [wireguard : *wireguard* : private-key einlesen und in Variable übergeben**************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Service ext-respondd beim Booten starten**************************************************************************************** +TASK [wireguard : *wireguard* : public-key einlesen und in Variable übergeben] ***************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Paket hostapd für WLAN installieren] ********************************************************************************************* +TASK [wireguard : *wireguard* : Socket ermitteln********************************************************************************************************** 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(2110147)">skipping: [raspberry-wireguard=> (item={'key': 'muc_cty', 'value': 40002})  
 +skipping: [raspberry-wireguard] => (item={'key': 'muc_nord', 'value': 40003})</font> 
 +<font style="color: rgb(51, 145, 5)">ok: [raspberry-wireguard] => (item={'key': 'muc_ost', 'value': 40004})</font> 
 +<font style="color: rgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'muc_sued', 'value': 40005})  
 +skipping: [raspberry-wireguard] => (item={'key': 'muc_west', 'value': 40006})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_nord', 'value': 40007})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_ost', 'value': 40008})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_sued', 'value': 40009})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_west', 'value': 40010})  
 +skipping: [raspberry-wireguard] => (item={'key': 'gauting', 'value': 40012})  
 +skipping: [raspberry-wireguard] => (item={'key': 'freising', 'value': 40013})  
 +skipping: [raspberry-wireguard] => (item={'key': 'welt', 'value': 40011})</font> 
  
-TASK [hostapd konfigurieren] *********************************************************************************************************** +TASK [wireguard : *wireguard: link-local des Gateways ermitteln] ****************************************************************************************** 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(511455)">ok: [raspberry-wireguard=> (item={'key': 'gw04', 'value': 'fe80::27c:16ff:fec0:6c74'})</font> 
 +<font style="color: rgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'gw05', 'value': 'fe80::281:8eff:fef0:73aa'})</font>
  
-TASK [hostapd Konfigurationsdatei anlegen] ********************************************************************************************* +TASK [wireguard : *wireguard: publickey des Gateways ermitteln] ******************************************************************************************* 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(511455)">ok: [raspberry-wireguard=> (item={'key': 'gw04', 'value': 'TszFS3oFRdhsJP3K0VOlklGMGYZy+oFCtlaghXJqW2g='})</font> 
 +<font style="color: rgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'gw05', 'value': 'igyqOmWiz4EZxPG8ZzU537MnHhaqlwfa7HarB3KmnEg='})</font>
  
-TASK [wlan0 in Bridge packen] ********************************************************************************************************** +TASK [wireguard : *wireguard: Konfigurationsdatei des wireguard-Tunnels erzeugen] ************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen] ********************** +TASK [wireguard : *wireguard* : systemd unit file für broker -Information anlegen************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Konfiguration des Client-VLAN ohne Mesh-Netz] ************************************************************************************ +TASK [wireguard : *wireguard: Service broker starten beim Booten starten] ********************************************************************************* 
-<font style="color: rgb(2110147)">skipping: [raspberry-ansible]</font>+<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
  
-TASK [vxlan_id für ausgewähltes Segment ermitteln] ************************************************************************************* +TASK [wireguard : *wireguard* : Service wireguard via systemd starten************************************************************************************** 
-<font style="color: rgb(2110147)">skipping: [raspberry-ansible=> (item={'key': 'muc_cty', 'value': 10758607})  +<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
-skipping: [raspberry-ansible] => (item={'key': 'muc_nord', 'value': 15521492})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_ost', 'value': 2948862})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_sued', 'value': 8599288})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_west', 'value': 7318933})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_nord', 'value': 5705961})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_ost', 'value': 4892713})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_sued', 'value': 16544703})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_west', 'value': 16677749})  +
-skipping: [raspberry-ansible] => (item={'key': 'gauting', 'value': 16175732})  +
-skipping: [raspberry-ansible] => (item={'key': 'freising', 'value': 12937858})</font> +
-<font style="color: rgb(51, 145, 5)">ok: [raspberry-ansible] => (item={'key': 'welt', 'value': 16306234})</font>+
  
-TASK [Konfiguration des Mesh-VLAN ohne Client-VLAN************************************************************************************ +TASK [wireguard : *wireguard* : lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen] ***************************************************************** 
-<font style="color: rgb(2110147)">skipping: [raspberry-ansible]</font>+<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
  
-TASK [Konfiguration von Mesh- und Client-VLAN***************************************************************************************** +TASK [wireguard : *wireguard* : checkupscript zum Testen der wireguard-Verbindung anlegen] ****************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Konfiguration des bevorzugte Meshingpoint in BATMAN_V] *************************************************************************** +TASK [wireguard : *wireguard* : Ausführungsrechte des Bash-Scripts anpassen******************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Reboot am Ende] ****************************************************************************************************************** +TASK [wireguard : *wireguard: crontab für minütlichen checkup der wireguard-Verbindung anlegen] *********************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-PLAY RECAP ***************************************************************************************************************************** +TASK [Installation von FASTD] ******************************************************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">raspberry-ansible          </font>: <font style="color: rgb(51, 145, 5)">ok=43</font>   <font style="color: rgb(191, 125, 0)">changed=39</font>   unreachable=0    failed=0    <font style="colorrgb(2, 110, 147)">skipped=2</font>    rescued=0    <font style="color: rgb(169, 126, 155)">ignored=1</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-</pre> +TASK [Verzeichnis für fastd- Konfigurationsdatei anlegen] *************************************************************************************************** 
-</html>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-Nach dem letzten Rebootder automatisch ausgeführt wirdfinden wir unseren Offloader auf der Freifunkkarte:+TASK [Schlüssel für fastd erstellen] ************************************************************************************************************************ 
 +<font style="color: rgb(1911250)">changed[raspi_offloader]</font>
  
-{{ :centos:ansible:raspi-offloader.png?nolink&600 |BildAusschnitt aus der Freifunk Karte}}+TASK [vxlan *VXLAN* Paketfilter anpassen Eingehenden VXLAN Verkehr auf dem Mesh-Interface erlauben] *************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed[raspi_offloader]</font>
  
-=== Bsp. 2 : raspi_offloader_file.yml === +TASK [vxlan : *VXLAN* : VXLAN-ID des gewählten Segments ermitteln] ****************************************************************************************** 
-Falls noch nicht geschehenist es vor dem Aufruf des ansible-Playbooks notwendigdie Konfigurationsparameter in den Zeilen **''34 bis 43''**des Raspberry 4B Offloaders im playbook direkt zu hinterlegen. +<font style="color: rgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'muc_cty', 'value': 3836090})  
-   $ vim raspi_offloader_file.yml +34+skipping: [raspberry-wireguard] => (item={'key': 'muc_nord', 'value': 1920014})</font> 
 +<font style="color: rgb(51, 145, 5)">ok: [raspberry-wireguard] => (item={'key': 'muc_ost', 'value': 12097488})</font> 
 +<font style="color: rgb(2, 110, 147)">skipping[raspberry-wireguard] => (item={'key': 'muc_sued', 'value': 12815947})  
 +skipping: [raspberry-wireguard] => (item={'key': 'muc_west', 'value': 29149})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_nord''value': 403289})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_ost', 'value': 12645856})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_sued', 'value': 12090508})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_west', 'value': 935867})  
 +skipping: [raspberry-wireguard] => (item={'key': 'gauting', 'value': 4681119})  
 +skipping: [raspberry-wireguard] => (item={'key': 'freising', 'value': 4669918})  
 +skipping: [raspberry-wireguard] => (item={'key': 'welt', 'value': 4831583})</font>
  
-<code> 34     batman_adv_version  "2019.5" +TASK [vxlan : *VXLAN* : link-local des Gateways ermitteln] ************************************************************************************************** 
- 35     ffmuc_segment       "welt" +<font style="colorrgb(51, 145, 5)">ok[raspberry-wireguard] => (item={'key''gw04', 'value''fe80::27c:16ff:fec0:6c74'})</font> 
- 36     raspberry_hostname  "ff_ansible_demo" +<font style="colorrgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'gw05', 'value': 'fe80::281:8eff:fef0:73aa'})</font>
- 37     node_contact_address"BOfH aka Django django@nausch.org" +
- 38     raspberry_latitude  "48.158542598" +
- 39     raspberry_longitude "11.769297123" +
- 40     raspberry_wifi      "ja" +
- 41     raspberry_clientvlan: "333" +
- 42     raspberry_meshvlan  "666" +
- 43     raspberry_oled      "ja"</code>+
  
-Haben wir die Informationen in dem Ansible-Playbook hinterlegtkönnen wir wie geohnt das Ansible-Scriptes ausführen. +TASK [vxlan : *VXLAN* : lokale link-local IPv6 Adresse aus dem PUBLIC-Key erzeugen] ************************************************************************* 
-   $ ansible-playbook ~/ansible/playbooks/raspi_offloader_file.yml+<font style="color: rgb(191125, 0)">changed: [raspi_offloader]</font>
  
-<html><pre class="code"> +TASK [vxlan : *VXLAN: Startupdatei für VXLAN kopieren] **************************************************************************************************** 
-<font style="colorrgb(0, 0, 0)"> +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
-PLAY [raspi_offloader.yml] *************************************************************************************************************+
  
-TASK [Gathering Facts] ***************************************************************************************************************** +TASK [vxlan : *VXLAN: Ausführungsrechte des Bash-Scripts anpassen] **************************************************************************************** 
-<font style="color: rgb(511455)">ok: [raspberry-ansible]</font>+<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
  
-TASK [Hostname ändern] ***************************************************************************************************************** +TASK [vxlan : *VXLAN: systemd-unitfile anlegen] *********************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Anpassung /etc/hosts] ************************************************************************************************************ +TASK [vxlan : *VXLAN: Neues Unitfile dem systemd bekannt geben] ******************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Beschreibung des User 'pi' anpassen] ********************************************************************************************* +TASK [vxlan : *VXLAN* : Service vxlan via systemd starten************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Service rfkill am Raspberry deaktivieren**************************************************************************************** +TASK [ext-respondd : Installation der Pakete git und python3-netifaces] ************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Update und Upgrade der APT-Pakete] *********************************************************************************************** +TASK [ext-respondd : Repo ext-respondd klonen************************************************************************************************************** 
-<font style="color: rgb(169126155)">[WARNING]: Updating cache and auto-installing missing dependency: python-apt</font>+<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
  
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+TASK [ext-respondd : Systemd Startdatei für respondd kopieren] ********************************************************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Reboot nach update************************************************************************************************************** +TASK [ext-respondd : Erstellen der resondd Konfigurationsdatei alias.json] ********************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Download des aktuellen BATMAN Archives****************************************************************************************** +TASK [ext-respondd : Erstellen der resondd Konfigurationsdatei config.json] ********************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [BATMAN-Archiv entpacken********************************************************************************************************* +TASK [ext-respondd : Service ext-respondd beim Booten starten] ********************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation des Dynamic Kernel Module Support Framework und der Header Files für den Raspberry Pi Linux Kernel] ***************** +TASK [hostapd : Paket hostapd für WLAN installieren******************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Rebuild BATMAN Kernel Header Dateien] ********************************************************************************************+TASK [hostapd : hostapd konfigurieren] ********************************************************************************************************************** 
 +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-<font style="color: rgb(201, 0, 0)">fatal: [raspberry-ansible]FAILED! => {"changed": false, "cmd": "/usr/bin/make scripts", "msg": "scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory\n #include <tools/be_byteshift.h>\n          ^~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\nmake[1]*** [scripts/Makefile.host:90: scripts/sortextable] Error 1\nmake: *** [Makefile:1067: scripts] Error 2", "rc": 2, "stderr": "scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory\n #include <tools/be_byteshift.h>\n          ^~~~~~~~~~~~~~~~~~~~~~\ncompilation terminated.\nmake[1]: *** [scripts/Makefile.host:90: scripts/sortextable] Error 1\nmake: *** [Makefile:1067: scripts] Error 2\n", "stderr_lines": ["scripts/sortextable.c:31:10: fatal error: tools/be_byteshift.h: No such file or directory", " #include <tools/be_byteshift.h>",         ^~~~~~~~~~~~~~~~~~~~~~", "compilation terminated.", "make[1]: *** [scripts/Makefile.host:90: scripts/sortextable] Error 1", "make: *** [Makefile:1067: scripts] Error 2"], "stdout": CC      scripts/mod/empty.o\n  MKELF   scripts/mod/elfconfig.h\n  HOSTCC  scripts/mod/modpost.o\n  CC      scripts/mod/devicetable-offsets.s\n  HOSTCC  scripts/mod/file2alias.o\n  HOSTCC  scripts/mod/sumversion.o\n  HOSTLD  scripts/mod/modpost\n  HOSTCC  scripts/sortextable\n", "stdout_lines": ["  CC      scripts/mod/empty.o", MKELF   scripts/mod/elfconfig.h", HOSTCC  scripts/mod/modpost.o", CC      scripts/mod/devicetable-offsets.s", HOSTCC  scripts/mod/file2alias.o", HOSTCC  scripts/mod/sumversion.o", HOSTLD  scripts/mod/modpost", HOSTCC  scripts/sortextable"]}</font> +TASK [hostapd hostapd Konfigurationsdatei anlegen] ******************************************************************************************************** 
-<font style="color: rgb(2110147)">...ignoring</font>+<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
  
-TASK [Anlegen der dkms.conf für Dynamic Kernel Module Support] ************************************************************************* +TASK [hostapd : wlan0 in Bridge packen********************************************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support hinzufügen**************************************************************************************** +TASK [hostapd : Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen] ********************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support bauen********************************************************************************************* +TASK [client-mesh : Konfiguration des Client-VLAN ohne Mesh-Netz] ******************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Dynamic Kernel Module Support installieren] ************************************************************************************** +TASK [client-mesh : vxlan_id für ausgewähltes Segment ermitteln******************************************************************************************** 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(2110147)">skipping: [raspberry-wireguard=> (item={'key': 'muc_cty', 'value': 10758607})  
 +skipping: [raspberry-wireguard] => (item={'key': 'muc_nord', 'value': 15521492})</font> 
 +<font style="color: rgb(51, 145, 5)">ok: [raspberry-wireguard] => (item={'key': 'muc_ost', 'value': 2948862})</font> 
 +<font style="color: rgb(2, 110, 147)">skipping: [raspberry-wireguard] => (item={'key': 'muc_sued', 'value': 8599288})  
 +skipping: [raspberry-wireguard] => (item={'key': 'muc_west', 'value': 7318933})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_nord', 'value': 5705961})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_ost', 'value': 4892713})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_sued', 'value': 16544703})  
 +skipping: [raspberry-wireguard] => (item={'key': 'uml_west', 'value': 16677749})  
 +skipping: [raspberry-wireguard] => (item={'key': 'gauting', 'value': 16175732})  
 +skipping: [raspberry-wireguard] => (item={'key': 'freising', 'value': 12937858})  
 +skipping: [raspberry-wireguard] => (item={'key': 'welt', 'value': 16306234})</font>
  
-TASK [Laden des Kernelmodul beim Booten veranlassen] *********************************************************************************** +TASK [client-mesh : Konfiguration des Mesh-VLAN ohne Client-VLAN******************************************************************************************* 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(2110147)">skipping: [raspi_offloader]</font>
  
-TASK [Laden des BATMAN Moduls********************************************************************************************************* +TASK [client-mesh : Konfiguration von Mesh- und Client-VLAN] ************************************************************************************************ 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Laden des dummy Moduls********************************************************************************************************** +TASK [client-mesh : Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung] **************************************************************** 
-<font style="color: rgb(1911250)">changed: [raspberry-ansible]</font>+<font style="color: rgb(2110147)">skipping: [raspi_offloader]</font>
  
-TASK [Installation der  bridge-utils] ************************************************************************************************** +TASK [client-mesh : Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung ****************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Aktivierung von BATMAN_V******************************************************************************************************** +TASK [oled : Für OLED-Konfiguration i2c-bcm2708 in /etc/modules eintragen] ********************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Konfiguration des Interfaces**************************************************************************************************** +TASK [oled : Für OLED-Konfiguration i2c-dev in /etc/modules eintragen] ************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation von FASTD********************************************************************************************************** +TASK [oled : Installation der für das OLED benötigten Pakete] *********************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Verzeichnis für fastd- Konfigurationsdatei anlegen] ****************************************************************************** +TASK [oled : Laden des Kernelmodul i2c_arm beim Booten veranlassen***************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Schlüssel für fastd erstellen] *************************************************************************************************** +TASK [oled : Reboot nach Konfigurationsänderung************************************************************************************************************ 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [FASTD Secret Key aus /root/fastd.key in Variable übergeben] ********************************************************************** +TASK [oled : Repo Adafruit_Python_SSD1306 klonen*********************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [FASTD Socket ermitteln********************************************************************************************************** +TASK [oled : Für OLED-Konfiguration Adafruit_Python_SSD1306 installieren] *********************************************************************************** 
-<font style="color: rgb(2110147)">skipping: [raspberry-ansible=> (item={'key': 'muc_cty', 'value': 30002})  +<font style="color: rgb(1911250)">changed: [raspi_offloader]</font>
-skipping: [raspberry-ansible] => (item={'key': 'muc_nord', 'value': 30003})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_ost', 'value': 30004})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_sued', 'value': 30005})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_west', 'value': 30006})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_nord', 'value': 30007})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_ost', 'value': 30008})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_sued', 'value': 30009})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_west', 'value': 30010})  +
-skipping: [raspberry-ansible] => (item={'key': 'gauting', 'value': 30012})  +
-skipping: [raspberry-ansible] => (item={'key': 'freising', 'value': 30013})</font> +
-<font style="color: rgb(51, 145, 5)">ok: [raspberry-ansible] => (item={'key': 'welt', 'value': 30011})</font>+
  
-TASK [Erstellen der fastd Konfigurationsdatei] ***************************************************************************************** +TASK [oled : Script zur Anzeige klonen********************************************************************************************************************* 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Service fastd beim Booten starten] *********************************************************************************************** +TASK [oled : Script zur Bandbreitenauslastung anpassen***************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Installation der Pakete git und python3-netifaces] ******************************************************************************* +TASK [oled : Startscript für das OLED anlegen************************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Repo ext-respondd klonen******************************************************************************************************** +TASK [oled : Service oled-bandwidth beim Booten starten] **************************************************************************************************** 
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
  
-TASK [Systemd Startdatei für respondd kopieren] **************************************************************************************** +TASK [final Reboot nach Abschluss der Konfiguration unseres Offloaders] *********************************************************************************** 
-<font style="colorrgb(191, 125, 0)">changed: [raspberry-ansible]</font> +<font style="color: rgb(191, 125, 0)">changed: [raspi_offloader]</font>
- +
-TASK [Erstellen der resondd Konfigurationsdatei alias.json] **************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Erstellen der resondd Konfigurationsdatei config.json] *************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Service ext-respondd beim Booten starten] **************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Paket hostapd für WLAN installieren] ********************************************************************************************* +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [hostapd konfigurieren] *********************************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [hostapd Konfigurationsdatei anlegen] ********************************************************************************************* +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [wlan0 in Bridge packen] ********************************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen] ********************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Konfiguration des Client-VLAN ohne Mesh-Netz************************************************************************************ +
-<font style="color: rgb(2, 110, 147)">skipping: [raspberry-ansible]</font> +
- +
-TASK [vxlan_id für ausgewähltes Segment ermitteln] ************************************************************************************* +
-<font style="color: rgb(2, 110, 147)">skipping: [raspberry-ansible] => (item={'key': 'muc_cty', 'value': 10758607})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_nord', 'value': 15521492})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_ost', 'value': 2948862})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_sued', 'value': 8599288})  +
-skipping: [raspberry-ansible] => (item={'key': 'muc_west', 'value': 7318933})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_nord', 'value': 5705961})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_ost', 'value': 4892713})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_sued', 'value': 16544703})  +
-skipping: [raspberry-ansible] => (item={'key': 'uml_west', 'value': 16677749})  +
-skipping: [raspberry-ansible] => (item={'key': 'gauting', 'value': 16175732})  +
-skipping: [raspberry-ansible] => (item={'key': 'freising', 'value': 12937858})</font> +
-<font style="color: rgb(51, 145, 5)">ok: [raspberry-ansible] => (item={'key': 'welt', 'value': 16306234})</font> +
- +
-TASK [Konfiguration des Mesh-VLAN ohne Client-VLAN] ************************************************************************************ +
-<font style="color: rgb(2, 110, 147)">skipping: [raspberry-ansible]</font> +
- +
-TASK [Konfiguration von Mesh- und Client-VLAN] ***************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Konfiguration des bevorzugte Meshingpoint in BATMAN_V] *************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font> +
- +
-TASK [Reboot am Ende] ****************************************************************************************************************** +
-<font style="color: rgb(191, 125, 0)">changed: [raspberry-ansible]</font>+
  
 PLAY RECAP ***************************************************************************************************************************** PLAY RECAP *****************************************************************************************************************************
-<font style="color: rgb(191, 125, 0)">raspberry-ansible          </font>: <font style="color: rgb(51, 145, 5)">ok=43</font>   <font style="color: rgb(191, 125, 0)">changed=39</font>   unreachable=0    failed=0    <font style="color: rgb(2, 110, 147)">skipped=2</font>    rescued=0    <font style="color: rgb(169, 126, 155)">ignored=1</font>+<font style="color: rgb(191, 125, 0)">raspi_offloader          </font>: <font style="color: rgb(51, 145, 5)">ok=80</font>   <font style="color: rgb(191, 125, 0)">changed=71</font>   unreachable=0    failed=0    <font style="color: rgb(2, 110, 147)">skipped=3</font>    rescued=0    <font style="color: rgb(169, 126, 155)">ignored=1</font>
  
 </pre> </pre>
Zeile 2145: Zeile 2848:
  
 Auch hier wird nach Beendigung des Ansible-Laufs der Knoten auf der Freifunkkarte an der gewünschten Stelle auftauchen. Auch hier wird nach Beendigung des Ansible-Laufs der Knoten auf der Freifunkkarte an der gewünschten Stelle auftauchen.
 +Nach dem letzten Reboot, der automatisch ausgeführt wird, finden wir unseren Offloader auf der Freifunkkarte:
  
 +{{ :centos:ansible:raspi-offloader.png?nolink&600 |Bild: Ausschnitt aus der Freifunk Karte}}
  
 ====== Links ====== ====== Links ======