Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:ansible:ffmuc-rpb4-ol [27.09.2022 15:25. ] – [Templates] djangolinux:ansible:ffmuc-rpb4-ol [27.09.2022 15:47. ] (aktuell) – [Inhalt] 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%>
Zeile 1400: Zeile 1395:
 === Rolle "hostapd" === === Rolle "hostapd" ===
 == Tasks == == Tasks ==
-<file java ~/ansible/roles/hostapd/tasks/main.yml>--- # Installation und Konfiguration des hostap Treibers für den WiFi-Support+<file c++ ~/ansible/roles/hostapd/tasks/main.yml>--- # Installation und Konfiguration des hostap Treibers für den WiFi-Support
 - include: install.yml                  # Paket hostapd für WLAN installieren - include: install.yml                  # Paket hostapd für WLAN installieren
 - include: configure.yml                # hostapd konfigurieren - include: configure.yml                # hostapd konfigurieren
 - include: genconfig.yml                # hostapd Konfigurationsdatei anlegen - include: genconfig.yml                # hostapd Konfigurationsdatei anlegen
 - include: wlanbridging.yml             # wlan0 in Bridge packen - 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 +- include: servicestartup.yml           # Service hostapd beim Booten und jetzt starten 
-</file>+                                        # und so das Laden der Unit Datei vom Service 
 +                                        # hostapd ermöglichen 
 +... # YML Ende</file>
  
-<file java ~/ansible/roles/hostapd/tasks/configure.yml>--- 
-  - name: "hostapd konfigurieren" 
-    # https://docs.ansible.com/ansible/latest/modules/shell_module.html 
-    shell: echo 'DAEMON_OPTS="-d"' >> /etc/default/hostapd 
-    when: ( raspberry_wifi == "ja" ) 
-</file> 
  
-<file java ~/ansible/roles/hostapd/tasks/genconfig.yml>--- +<file c++ ~/ansible/roles/hostapd/tasks/install.yml>---
-  - name: "hostapd Konfigurationsdatei anlegen" +
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html +
-    template:  +
-      src: templates/hostapd.j2 +
-      dest: /etc/hostapd/hostapd.conf +
-    when: ( raspberry_wifi == "ja"+
-</file>+
  
-<file java ~/ansible/roles/hostapd/tasks/install.yml>--- +- name: "Paket hostapd für WLAN installieren" 
-  - name: "Paket hostapd für WLAN installieren+  ansible.builtin.apt: 
-    # https://docs.ansible.com/ansible/latest/modules/apt_module.html +    update_cache: true 
-    apt+    pkg: 
-      update_cacheyes +      - hostapd 
-      pkg+    state: present 
-        hostapd + 
-      statepresent +...</file> 
-    when( raspberry_wifi == "ja) + 
-</file>+ 
 +<file c++ ~/ansible/roles/hostapd/tasks/configure.yml>--- 
 + 
 +- name: "hostapd konfigurieren" 
 +  ansible.builtin.command: | 
 +    echo 'DAEMON_OPTS="-d"' >> /etc/default/hostapd 
 +  changed_whenfalse 
 + 
 +...</file> 
 + 
 +<file c++ ~/ansible/roles/hostapd/tasks/genconfig.yml>--- 
 + 
 +- name: "hostapd Konfigurationsdatei anlegen" 
 +  ansible.builtin.template: 
 +    src: templates/hostapd.j2 
 +    dest: /etc/hostapd/hostapd.conf 
 +    ownerroot 
 +    grouproot 
 +    mode'0644' 
 + 
 +...</file> 
 + 
 + 
 +<file c++ ~/ansible/roles/hostapd/tasks/wlanbridging.yml>--- 
 + 
 +- name: "wlan0 in Bridge packen" 
 +  template
 +    src: templates/rclocal_wifi.j2 
 +    dest: /etc/rc.local 
 +    owner: root 
 +    group: root 
 +    mode: '0750' 
 + 
 +...</file> 
 + 
 + 
 +<file c++ ~/ansible/roles/hostapd/tasks/servicestartup.yml>--- 
 + 
 +- name: "Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen
 +  ansible.builtin.systemd: 
 +    name: hostapd 
 +    enabled: true 
 +    masked: false 
 +    state: started 
 + 
 +...</file>
  
-<file java ~/ansible/roles/hostapd/tasks/servicestartup.yml>--- 
-  - name: "Service hostapd beim Booten und jetzt starten und das Laden der Unit Datei vom Service hostapd ermöglichen" 
-    # https://docs.ansible.com/ansible/latest/modules/systemd_module.html 
-    systemd: 
-      name: hostapd 
-      enabled: yes 
-      masked: no 
-      state: started 
-    when: ( raspberry_wifi == "ja" ) 
-</file> 
  
-<file java ~/ansible/roles/hostapd/tasks/wlanbridging.yml>--- 
-  - name: "wlan0 in Bridge packen" 
-    # 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> 
  
 == Templates == == Templates ==
-<file java ~/ansible/roles/hostapd/templates/hostapd.j2>ssid=muenchen.freifunk.net/{{ ffmuc_segment }}+<file c++ ~/ansible/roles/hostapd/templates/hostapd.j2>ssid=muenchen.freifunk.net/{{ ffmuc_segment }}
  
 country_code=US country_code=US
Zeile 1486: Zeile 1497:
 vht_oper_chwidth=1 vht_oper_chwidth=1
 channel=36 channel=36
-vht_oper_centr_freq_seg0_idx=42 +vht_oper_centr_freq_seg0_idx=42</file> 
-</file>+
  
 <file java ~/ansible/roles/hostapd/templates/rclocal_wifi.j2>#!/bin/sh -e <file java ~/ansible/roles/hostapd/templates/rclocal_wifi.j2>#!/bin/sh -e
 +# Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually!
 # #
 # rc.local # rc.local
Zeile 1508: Zeile 1520:
 fi fi
 sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0
-exit 0 +exit 0</file>
-</file>+
  
  
 === Rolle "client-mesh" === === Rolle "client-mesh" ===
 == Tasks == == Tasks ==
-<file java ~/ansible/roles/client-mesh/tasks/main.yml>--- # Grundkonfiguration von Client und/oder Meshing (V)LANs+<file c++ ~/ansible/roles/client-mesh/tasks/main.yml>--- # Grundkonfiguration von Client und/oder Meshing (V)LANs
 - include: clientohnemesh.yml           # Konfiguration des Client-VLAN ohne Mesh-Netz - include: clientohnemesh.yml           # Konfiguration des Client-VLAN ohne Mesh-Netz
 - include: getvxlanid.yml               # vxlan_id für ausgewähltes Segment ermitteln - include: getvxlanid.yml               # vxlan_id für ausgewähltes Segment ermitteln
Zeile 1521: Zeile 1532:
 - include: batmanohnewifi.yml           # Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung - include: batmanohnewifi.yml           # Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung
 - include: batmanmitwifi.yml            # Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung - include: batmanmitwifi.yml            # Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung
-</file>+... # YML Ende</file>
  
-<file java ~/ansible/roles/client-mesh/tasks/batmanmitwifi.yml>--- 
-  - name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung" 
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html 
-    template:  
-      src: templates/rclocal_both.j2 
-      dest: /etc/rc.local 
-    when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi == "ja" ) 
-</file> 
  
-<file java  ~/ansible/roles/client-mesh/tasks/batmanohnewifi.yml>--- +<file c++ ~/ansible/roles/client-mesh/tasks/clientohnemesh.yml>---
-  - name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung" +
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html +
-    template:  +
-      src: templates/rclocal_vxlan.j2 +
-      dest: /etc/rc.local +
-    when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi != "ja"+
-</file>+
  
-<file java ~/ansible/roles/client-mesh/tasks/clientohnemesh.yml>django@Djangos-ThinkPad-X230:~$ cat ~/ansible/roles/client-mesh/tasks/clientohnemesh.yml  +- name: "Konfiguration des Client-VLAN ohne Mesh-Netz" 
---- +  ansible.builtin.template: 
-  - name: "Konfiguration des Client-VLAN ohne Mesh-Netz" +    src: templates/interfaces_client_ohne_mesh.j2 
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html +    dest: /etc/network/interfaces 
-    template:  +    owner: root 
-      src: templates/interfaces_client_ohne_mesh.j2 +    group: root 
-      dest: /etc/network/interfaces +    mode: '0640' 
-    when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length == 0 ) +  when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length == 0 )
-</file>+
  
-<file java  ~/ansible/roles/client-mesh/tasks/getvxlanid.yml>--- +...</file>
-  - name: "vxlan_id für ausgewähltes Segment ermitteln" +
-    # 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>+
  
-<file java ~/ansible/roles/client-mesh/tasks/meshohneclient.yml>--- +<file c++ ~/ansible/roles/client-mesh/tasks/getvxlanid.yml>---
-  - name: "Konfiguration des Mesh-VLAN ohne Client-VLAN" +
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html +
-    template:  +
-      src: templates/interfaces_mesh_ohne_client.j2 +
-      dest: /etc/network/interfaces +
-    when: ( raspberry_clientvlan|length == 0 ) and ( raspberry_meshvlan|length > 0 ) +
-</file>+
  
-<file java  ~/ansible/roles/client-mesh/tasks/meshundclient.yml>--- +- name: "vxlan_id für ausgewähltes Segment ermitteln" 
-  - name: "Konfiguration von Mesh- und Client-VLAN" +  ansible.builtin.set_fact: 
-    # https://docs.ansible.com/ansible/latest/modules/template_module.html +    ffmuc_vxlan_id: "{{ item.value }}" 
-    template:  +  loop: "{{ lookup('dict', vxlan_ids) }}" 
-      src: templates/interfaces_mesh_mit_client.j2 +  when: "ffmuc_segment in item.key" 
-      dest: /etc/network/interfaces + 
-    when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length > 0 ) +...</file
-</file>+ 
 +<file c++ ~/ansible/roles/client-mesh/tasks/meshohneclient.yml>--- 
 + 
 +- name: "Konfiguration des Mesh-VLAN ohne Client-VLAN" 
 +  ansible.builtin.template: 
 +    srctemplates/interfaces_mesh_ohne_client.j2 
 +    dest: /etc/network/interfaces 
 +    owner: root 
 +    group: root 
 +    mode: '0640' 
 +  when: ( raspberry_clientvlan|length == 0 ) and ( raspberry_meshvlan|length > 0 ) 
 + 
 +...</file> 
 + 
 + 
 +<file c++ ~/ansible/roles/client-mesh/tasks/meshundclient.yml>--- 
 + 
 +- name: "Konfiguration von Mesh- und Client-VLAN" 
 +  ansible.builtin.template: 
 +    src: templates/interfaces_mesh_mit_client.j2 
 +    dest: /etc/network/interfaces 
 +    owner: root 
 +    group: root 
 +    mode: '0640' 
 +  when: ( raspberry_clientvlan|length > 0 ) and ( raspberry_meshvlan|length > 0 ) 
 + 
 +...</file> 
 + 
 +<file c++  ~/ansible/roles/client-mesh/tasks/batmanohnewifi.yml>--- 
 + 
 +- name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V ohne Wifi-Nutzung" 
 +  ansible.builtin.template: 
 +    src: templates/rclocal_vxlan.j2 
 +    dest: /etc/rc.local 
 +    owner: root 
 +    group: root 
 +    mode: '0750' 
 +  when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi != "true"
 + 
 +...</file> 
 + 
 + 
 +<file c++ ~/ansible/roles/client-mesh/tasks/batmanmitwifi.yml>--- 
 + 
 +- name: "Konfiguration des bevorzugte Meshingpoint in BATMAN_V mit Wifi-Nutzung" 
 +  ansible.builtin.template: 
 +    src: templates/rclocal_both.j2 
 +    dest: /etc/rc.local 
 +    owner: root 
 +    group: root 
 +    mode: '0750' 
 +  when: ( raspberry_meshvlan|length > 0 ) and ( raspberry_wifi == "true"
 + 
 +...</file>
  
 == Templates == == Templates ==
-<file java ~/ansible/roles/client-mesh/templates/interfaces_client_ohne_mesh.j2># interfaces(5) file used by ifup(8) and ifdown(8)+<file c++ ~/ansible/roles/client-mesh/templates/interfaces_client_ohne_mesh.j2># Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually! 
 +# interfaces(5) file used by ifup(8) and ifdown(8)
  
 # Please note that this file is written to be used with dhcpcd # Please note that this file is written to be used with dhcpcd
Zeile 1604: Zeile 1639:
         pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client         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 }}         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 }} +        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>+
  
-<file java ~/ansible/roles/client-mesh/templates/interfaces_mesh_mit_client.j2># interfaces(5) file used by ifup(8) and ifdown(8)+ 
 +<file c++ ~/ansible/roles/client-mesh/templates/interfaces_mesh_mit_client.j2># Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually! 
 +# interfaces(5) file used by ifup(8) and ifdown(8)
  
 # Please note that this file is written to be used with dhcpcd # Please note that this file is written to be used with dhcpcd
Zeile 1644: Zeile 1680:
 </file> </file>
  
-<file java ~/ansible/roles/client-mesh/templates/interfaces_mesh_ohne_client.j2># interfaces(5) file used by ifup(8) and ifdown(8)+ 
 +<file java ~/ansible/roles/client-mesh/templates/interfaces_mesh_ohne_client.j2># Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually! 
 +# interfaces(5) file used by ifup(8) and ifdown(8)
  
 # Please note that this file is written to be used with dhcpcd # Please note that this file is written to be used with dhcpcd
Zeile 1675: Zeile 1713:
         pre-up /usr/sbin/batctl meshif bat-{{ ffmuc_segment }} gw_mode client         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 }}         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 }} +        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>+
  
 <file bash ~/ansible/roles/client-mesh/templates/rclocal_both.j2>#!/bin/sh -e <file bash ~/ansible/roles/client-mesh/templates/rclocal_both.j2>#!/bin/sh -e
 +# Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually!
 # #
 # rc.local # rc.local
Zeile 1698: Zeile 1737:
 sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0 sleep 10; /sbin/brctl addif br-{{ ffmuc_segment }} wlan0
 /usr/sbin/batctl hardif mesh-vpn throughput_override 10000 /usr/sbin/batctl hardif mesh-vpn throughput_override 10000
-exit 0 +exit 0</file> 
-</file>+
  
 <file bash ~/ansible/roles/client-mesh/templates/rclocal_vxlan.j2>#!/bin/sh -e <file bash ~/ansible/roles/client-mesh/templates/rclocal_vxlan.j2>#!/bin/sh -e
 +# Generated by Ansible on {{ ansible_date_time.date }}, do not edit manually!
 # #
 # rc.local # rc.local
Zeile 1720: Zeile 1760:
 fi fi
 /usr/sbin/batctl hardif mesh-vpn throughput_override 10000 /usr/sbin/batctl hardif mesh-vpn throughput_override 10000
-exit 0 +exit 0</file>
-</file> +
  
 +/* 
 === Rolle "oled" === === Rolle "oled" ===
 == Tasks == == Tasks ==
Zeile 2162: Zeile 2201:
 </file> </file>
  
 +*/
  
 === Rolle "final" === === Rolle "final" ===
 == Tasks == == Tasks ==
 <file java ~/ansible/roles/final/tasks/main.yml>--- # Reboot nach Abschluss der Konfiguration unseres Offloaders <file java ~/ansible/roles/final/tasks/main.yml>--- # Reboot nach Abschluss der Konfiguration unseres Offloaders
-- include: reboot.yml                   # /etc/hosts anpassen +- include: reboot.yml                   # abschließender Reboot nach Fertigstellung 
-... #YAML Ende Syntax +... # YML Ende</file> 
-</file>+
  
 <file java ~/ansible/roles/final/tasks/reboot.yml>--- <file java ~/ansible/roles/final/tasks/reboot.yml>---
-  - name: "Reboot nach Abschluss der Konfiguration unseres Offloaders" + 
-    # https://docs.ansible.com/ansible/latest/modules/reboot_module.html +- name: "Reboot nach Abschluss der Konfiguration unseres Offloaders" 
-    reboot: +  ansible.builtin.reboot: 
-</file>+ 
 +...</file>
  
 ==== Download des auf Debian Buster basierenden Raspbian ==== ==== Download des auf Debian Buster basierenden Raspbian ====
Zeile 2298: Zeile 2339:
 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.  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. 
  
-In den Zeilen **''55 bis 64''** sind diese Parameter entsprechend zu hinterlegen.  +In der Host-spezifischen Konfigurationsdatei  sind diese Parameter entsprechend zu hinterlegen. Folgendes Beispiel zeigt dies für den Host mit dem Namen **rpb4-ol-b** aus dem Inventory
-   $ vim ~/ansible/inventories/production/hosts.yml +54+   $ vim ~/ansible/inventories/production/host_vars/rpb4-ol-b/individual_host_specification 
 + 
 +<code># IP-Adresse unseres Raspberry in unserem eigenen lokalen Netzwerk 
 +# stationäre schwarzes Plastikgehäuse Raspberry 4B mit PoE-HAT und Display 
 +# MAC: dc:a6:32:22:f0:f2 
 +ansible_ssh_host: 192.168.0.22 
 +ansible_port: 22 
 +ansible_user: pi 
 +ansible_ssh_private_key_file: ~/.ssh/id_ed25519_freifunk 
 +
 +batman_adv_version: "2022.1" 
 +ffmuc_segment: "muc_ost" 
 +ffmuc_gateway: "gw06" 
 +raspberry_hostname: "ff_pliening_rpb4_ol_v6" 
 +node_contact_address: "hier entlang => https://bit.ly/2VxGoXp" 
 +raspberry_latitude: "48.198757565" 
 +raspberry_longitude: "11.798020899" 
 +raspberry_wifi: "true" 
 +raspberry_clientvlan: "4" 
 +raspberry_meshvlan: "2" 
 +raspberry_oled: "false"</code>
  
-<code> 54     batman_adv_version:   "2020.4" +Diese passen wir natürlich noch auf unsere lokale Umgebung hin an.
- 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>+
  
 === Playbook Lauf === === Playbook Lauf ===
  • linux/ansible/ffmuc-rpb4-ol.1664292327.txt.gz
  • Zuletzt geändert: 27.09.2022 15:25.
  • von django