Hat noch jemand Anmerkungen zum Skript?
Die Idee ist definitiv gut und auch die Umsetzung sieht ordentlich aus. Ich würde aber genau wie gem eher dazu raten, sich mal entsprechende Automatisierungstool anzuschauen, die genau diese Problemstellung auch angehen und sich einfach durch elegante Definitionen besser umsetzen lassen, was dann auch OS unabhängig und besser skalierbar ist. Das Tool der Wahl ist momentan sicherlich Ansible (SSH + Python). Es gibt aber auch Server/Agent Ansätze wie Chef oder Puppet. Auch wenn man sehr viel mit Bash Skripten abdecken kann, so würde ich es doch ab einer gewissen Größe vermeiden, weil der Wartungsaufwand entsprechend groß wird. Auch ist es oft auf ein bestimmtes OS in einer bestimmten Version abgestimmt. Sobald man hier etwas mehr Flexibilität möchte, artet das in einem Bash Skript schnell etwas aus.
In Ansible definiert man seine Aufgaben/Konfigurationen dann in YAML. Das sieht für einen einfachen Task, der Pakete installieren soll, dann z.B. so aus
- name: Install packages
ansible.builtin.package:
name:
- "ufw"
- "curl"
- "wget"
- "git"
- "mc"
state: present
Das ist dann auch idempotent und zeigt in der Ausgabe, ob tatsächlich was gemacht wurde oder ob die Pakete bereits installiert waren.