Ansible Automatisierung.page 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. ---
  2. format: markdown
  3. categories: Netz-Infrastruktur, Backbone, Supernodes
  4. title: Server-Automatisierung
  5. ...
  6. # Automatisierung der Supernodes und anderer Server
  7. ## Aufbau und Konfiguration Steuerungsrechner-Repository-Zielrechner
  8. Steuerungsrechner
  9. Ein Steuerungsrechner wird mit Python3 und Ansible in einer virtuellen venv-Umgebung verwendet: (überarbeiten)
  10. ansible [core 2.19.3]
  11. config file = /home/m-an/git/snng-roles-l2tp/ansible.cfg
  12. configured module search path = ['/home/m-an/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  13. ansible python module location = /home/m-an/git/venv/lib/python3.12/site-packages/ansible
  14. ansible collection location = /home/m-an/.ansible/collections:/usr/share/ansible/collections
  15. executable location = /home/m-an/git/venv/bin/ansible
  16. python version = 3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0] (/home/m-an/git/venv/bin/python3)
  17. jinja version = 3.1.6
  18. pyyaml version = 6.0.3 (with libyaml v0.2.5)
  19. Die Ansibleversion des Steuerungsrechners ausserhalb der venv-Umgebung kann sich wegen Systemupdates unterscheiden:
  20. ansible [core 2.19.4]
  21. config file = /home/m-an/git/snng-roles-l2tp/ansible.cfg
  22. configured module search path = ['/home/m-an/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  23. ansible python module location = /usr/lib/python3/dist-packages/ansible
  24. ansible collection location = /home/m-an/.ansible/collections:/usr/share/ansible/collections
  25. executable location = /usr/bin/ansible
  26. python version = 3.12.3 (main, Nov 6 2025, 13:44:16) [GCC 13.3.0] (/usr/bin/python3)
  27. jinja version = 3.1.2
  28. pyyaml version = 6.0.1 (with libyaml v0.2.5)
  29. Diese Unterschiede können zu Konflikten bei der Playbookerstellung führen, deshalb sollten während der Erstellung eines Playbooks weder die Ansible- noch die Pythonversion verändert werden.
  30. ## Python venv-Umgebung erstellen
  31. ✅ 1. Benötigte Pakete installieren
  32. Unter Debian heißt das Paket für virtuelle Umgebungen meist python3-venv:
  33. $ sudo apt update
  34. $ sudo apt install python3-venv
  35. ✅ 2. Virtuelle Umgebung erstellen
  36. Wechsle mit cd xyz in den gewünschten Projektordner und führe aus:
  37. $ python3 -m venv venv
  38. Dadurch entsteht ein Verzeichnis venv/, das alle isolierten Python-Pakete enthält.
  39. ✅ 3. venv aktivieren
  40. $ source venv/bin/activate
  41. Du erkennst die aktivierte venv an der (venv)-Präfix in der Shell.
  42. ✅ 4. Pakete installieren
  43. Jetzt nutzt pip die isolierte Umgebung:
  44. $ pip install <paketname>
  45. Beispiel:
  46. $ pip install requests
  47. ✅ 5. venv wieder deaktivieren
  48. $ deactivate
  49. ## Aufbau des Repository
  50. Das Repository ist unter gogs.ffdo.de im Verzeichnis snng-roles-l2tp zu finden. Dieses Repository ist geforkt von ffdo-infrastruktur/ffdo-ansible-l2tp.
  51. Das komplette Playbook zur Erstellung eines Gateways/Supernodes heisst ng-gateway.yml, über Tags können daraus einzelne Playbooks isoliert ausgeführt werden.
  52. Alle Playbooks werden als root ausgeführt, eine Anmeldung als root ist grundsätzlich ausgeschlossen und für User nur über ssh möglich.
  53. Das Passwort für die privilge-escalation ist abgeschaltet. Ein Aufruf für den server snng-dus03 lautet dann
  54. $ ansible-playbook -b ng-gateway.yml -v -l snng-dus03 -u <username>
  55. und mit Tag
  56. $ ansible-playbook -b ng-gateway.yml -v -l snng-dus03 --tags "<playbookname>" -u <username>
  57. Die anderen dort vorhandenen Playbooks dienen zu Testzwecken.
  58. ## historischer Stand
  59. Es gab Ansätze eine Community (Supernodes + Map Server) in Ansible zu beschreiben. Das Playbook kann
  60. [hier](https://github.com/dereulenspiegel/ffdo-ansible) Stand: 09.12.25 gefunden werden.
  61. Auf Basis dieses Playbook wurden einige Rollen
  62. als eigenständige Rollen ausgegliedert und in eigene Repositories abgespalten
  63. * [Alfred](https://github.com/dereulenspiegel/ansible-alfred) Stand: 09.12.25
  64. * [Alfred-json](https://github.com/dereulenspiegel/ansible-alfred-json) -"-
  65. * [fastd](https://github.com/dereulenspiegel/ansible-fastd) -"-
  66. Diese Rollen können eigenständig benutzt werden und sollten keine bzw. wenige Abhängigkeiten zu anderen Rollen haben.
  67. Diese Rollen werden auch im oben genannten Playbook wiederverwendet.
  68. Inzwischen werden die Repos des Freifunk Dortmund unter git.ffdo.de gehostet und dort über git (siehe oben) bearbeitet.