Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
satellite:generisches_modul [2016/09/12 14:56 CEST] – [Spezialfall: Client-basierte Konfiguration] --> neue vers. überflüssig simon | satellite:generisches_modul [2024/02/21 13:06 CET] (aktuell) – [Generisches Modul / Konfigmodul] sritter |
---|
====== Generisches Modul ====== | ====== Generisches Modul / Konfigmodul ====== |
| |
'Generische Module' ermöglichen es, beliebige Dateien in das Linux-Grundsystem der Clients einzubringen bzw. vorhandene Dateien zu überschreiben. Notwendig ist dies, wenn Sie z.B. spezielle iptables-Regeln, Druckkonfigurationen oder ähnliche Anpassungen innerhalb des Grundsystems vornehmen möchten. | 'Generische Module' ermöglichen es, beliebige Dateien in das Linux-Grundsystem der Clients einzubringen bzw. vorhandene Dateien zu überschreiben. Notwendig ist dies, wenn Sie z.B. spezielle iptables-Regeln, Druckkonfigurationen oder ähnliche Anpassungen innerhalb des Grundsystems vornehmen möchten. |
| |
| <note warning>Wenn Sie bestehende Systemdateien des Grundsystems mit Hilfe eines generischen Moduls überschreiben, können Inkompatibilitäten mit neueren Versionen des Grundsystems auftreten. Dies sollte daher nur für spezielle Fälle und lediglich temporär erfolgen. Prüfen Sie in jedem Fall beim Update auf eine neuere Version, ob Ihr generisches Modul noch notwendig ist und entfernen Sie dieses ggf. wieder!</note> |
| |
| |
Um Generische Module anzulegen sind folgende Schritte nötig: | Um Generische Module anzulegen sind folgende Schritte nötig: |
| |
===== 1. Archiv vorbereiten ===== | ===== 1. Archiv erzeugen ===== |
| |
Legen Sie ein Archiv an, dessen gegebene Verzeichnisstruktur eins zu eins in das gebootete Linux extrahiert wird - eine im Archiv enthaltene Datei etc/beispiel.conf wird im gebooteten System also auch unter /etc/beispiel.conf erscheinen. | Legen Sie ein Archiv an, dessen gegebene Verzeichnisstruktur eins zu eins in das gebootete Linux extrahiert wird - eine im Archiv enthaltene Datei etc/beispiel.conf wird im gebooteten System also auch unter /etc/beispiel.conf erscheinen. |
Fangen Sie zunächst mit der nötigen Ordnerhierarchie für unser Beispiel an: | Fangen Sie zunächst mit der nötigen Ordnerhierarchie für unser Beispiel an: |
<code bash> | <code bash> |
mkdir -p ~/generic_module/etc/ | mkdir -p ~/gen_modul/etc/ |
cd ~/generic_module/etc/ | cd ~/gen_modul/etc/ |
</code> | </code> |
| |
Wechseln Sie dann in das von Ihnen angelegte Verzeichnis ~/generic_module: | Wechseln Sie dann in das von Ihnen angelegte Verzeichnis ~/generic_module: |
<code bash> | <code bash> |
cd ~/generic_module | cd ~/gen_modul |
</code> | </code> |
| |
++++So sollte das Archiv aussehen (Ausklappen)| | ++++So sollte das Archiv aussehen (Ausklappen)| |
<code bash> | <code bash> |
[student ~/generic_module]$ tar tvf beispiel.tgz | [student ~/gen_modul]$ tar tvf beispiel.tgz |
drwxr-xr-x student/users 0 2016-08-12 16:51 etc/ | drwxr-xr-x student/users 0 2016-08-12 16:51 etc/ |
-rw-r--r-- student/users 26 2016-08-12 16:51 etc/beispiel.conf | -rw-r--r-- student/users 26 2016-08-12 16:51 etc/beispiel.conf |
| |
Dieses tgz-Archiv kann dann im nächsten Schritt als Generisches Modul auf den Satellitenserver geladen werden. | Dieses tgz-Archiv kann dann im nächsten Schritt als Generisches Modul auf den Satellitenserver geladen werden. |
| |
| <note important>Das Archiv wird im Dateisystem des Clientrechner über das Rootverzeichnis (/) entpackt. Achten Sie darauf, dass Sie für Ihre Ordner und Dateien korrekte Berechtigungen setzen.\\ \\ Sie können Archive wie oben beschrieben auch unter Windows erstellen. Beachten Sie jedoch unbedingt, daß manche Windows-Packer dazu tendieren, bei Erstellung eines Archives im .tar- oder .tar.gz-Format, die Datei- und Verzeichnisberechtigungen („Permissions“) innerhalb des Archivs unerwünscht zu setzen((Beispiel: Ein mit 7zip erstelltes Archiv zur etc-Hierarchie enthielt (/)etc mit den Berechtigungen 777, was für SSH störende Auswirkungen hat (Schlüsselablehnung). )). Überprüfen Sie daher im Zweifelsfall resultierende Verzeichnis- und Dateirechte per Archivansicht oder auf einem Clientrechner!</note> |
| |
| |
| === Automatischer Programmstart === |
| |
| Sollten Sie in Ihrem generischen Modul ein Programm((Achtung: Im Falle von Skripten müssen Sie prüfen, on der passende Interpreter vorhanden ist, im Falle von Binaries müssen ggf. dynamisch gelinkte Bibliotheken eingeschlossen werden. Vergessen Sie auch nicht, ggf. das executable-Bit zu setzen.)) abgelegt haben, das automatisch gestartet werden soll, müssen Sie weitere Vorkehrungen treffen. Der empfohlene Weg geht über einen systemd-Service, der zur Erreichung eines bestimmten systemd-Ziels („target“) gestartet wird. Gewöhnliche Optionen sind hier etwa graphical.target, multi-user.target, network-online.target usw.; unten genanntes Beispiel arbeitet mit multi-user.target. |
| |
| Erzeugen Sie zuerst die nötigen Unterverzeichnisse, wie oben auf Ihr Arbeitsverzeichnis gen_modul bezogen: |
| <code bash> |
| mkdir -p etc/systemd/system/multi-user.target.wants |
| </code> |
| |
| ... und legen eine Datei etc/systemd/system/programmstart.service folgenden Inhalts an: |
| |
| <code> |
| [Unit] |
| Description=Mein Programm XYZ |
| |
| [Service] |
| Type=oneshot |
| ExecStart=/Pfad/zu/Ihrem/Programm |
| RemainAfterExit=true |
| </code> |
| |
| Abschließend müssen Sie noch ein Link im target-Unterverzeichnis anlegen: |
| |
| <code bash> |
| cd etc/systemd/system/multi-user.target.wants |
| ln -s ../programmstart.service |
| cd - |
| </code> |
| |
| Das Packen und Prüfen der tgz-Datei erfolgt analog zum obigen Beispiel. |
| |
| |
===== 2. Neues Modul hochladen ===== | ===== 2. Neues Modul hochladen ===== |
| |
Das Archiv muss anschließend über das Webinterface Ihres Satellitenservers hochgeladen werden. Wechseln Sie dazu zur Seite 'Lokalisierung + Integration' und wählen 'Neues Modul'. Dort können Sie als letzten Punkt ein 'Generisches Modul' hinzufügen. Wählen Sie dort Ihr vorbereitetes Archiv aus und vergeben einen eindeutigen Namen. Nach dem Hochladen wird zur Kontrolle der Inhalt des Archivs angezeigt. | [{{ :satellite:handbuch:wizards:sat_systemkonfig_konfigmodul_gen_modul_rechte.png?300|Modulname und Anzeige Datei-Benutzerrechte}}] |
| [{{ :satellite:handbuch:wizards:sat_systemkonfig_konfigmodul_gen_modul_zuordnung.png?300|Vorschläge Systemkonfigurationen}}] |
| Das Archiv muss anschließend über das Webinterface Ihres Satellitenservers hochgeladen werden. Wechseln Sie dazu zur Unterseite „Lokalisierung + Integratio„“ und klicken rechts unten unter der Spalte „Verfügbare Konfigurationsmodule“ auf die Schaltfläche „Neues Modul“. In der folgenden Anzeige „Modul hinzufügen“ erscheint als letzter Punkt „Generisches Modul“. Klicken Sie dort auf „hinzufügen“. Wählen Sie dort per „Durchsuchen…“ Ihr vorbereitetes Archiv aus drücken anschließend auf „Hochladen“. |
| |
| Nach dem Hochladen erscheint eine mit dem Archivdateinamen vorausgefüllte Eingabemöglichkeit für den Modulnamen; vergeben Sie einen sprechenden, eindeutigen Namen. Darunter erhalten Sie zur Kontrolle den Inhalt des Archivs angezeigt. Falls die Dateien des Archivs nicht dem User root und der Gruppe root zugehörig sind, erscheint eine Warnmeldung und die vorausgewählte Option, die Besitzrechte der Dateien auf root:root zu setzen. Da anderen User/Gruppe zugeordnete Dateien sind nur in seltenen Fällen angebracht sind, ist im Allgemeinen empfohlen, die Rechte so zu übertragen. |
| |
| Nach Klick auf „Weiter“ werden die bereits bestehenden Systemkonfigurationen aufgelistet. Sie können das soeben erzeugte generische Modul bequem mit einem Klick der Systemkonfiguration Ihrer Wahl zuweisen. Eine Zuordnung ist jedoch nicht obligatorisch; Sie können das gen. Modul auch später noch zuweisen. |
| |
| <note important>Vergessen Sie jedoch die Zuordnung zu einer Systemkonfiguration nicht - ein nicht zugeordnetes Modul wird nicht ausgeliefert!</note> |
===== 3. Client neustarten und überprüfen ===== | ===== 3. Client neustarten und überprüfen ===== |
| |
| |
| |
| ([[satellitenserver_erstkonfiguration#konfigurationsmodule_erstellen|zurück zur Systemkonfiguration]]) |