Der Dienst opsiconfd
Der zentrale Dienst auf jedem opsi-Server ist der opsiconfd
. Er stellt über HTTPS (Port 4447) verschiedene Services bereit:
-
/rpc: JSON-RPC-API
-
/dav: WebDAV-Zugriff auf Workbench, Repository, Depot, Boot-Verzeichnis
-
/admin: Admin-Seite für Status-Informationen und Administrations-Aufgaben
-
/grafana: Reverse-Proxy-Zugriff auf einen lokalen Grafana-Server (siehe Kapitel Grafana)
-
/status: einfache Statusausgabe für Monitoring-Werkzeuge
-
/public: öffentliche Dateifreigabe ohne Authentifizierung
Sie können den opsiconfd über Addons erweitern. So ist beispielsweise das opsi-WebGUI ein solches Addon. Mehr dazu lesen Sie in Abschnitt Addons.
|
Kommandozeilen-Interface
Der opsiconfd
besitzt ein Kommandozeilen-Interface, das die folgenden Befehle bereitstellt:
-
start
: Startet denopsiconfd
(Standardkommando). -
stop
: Stoppt einen laufendenopsiconfd
. -
force-stop
: Wiestop
, bricht zusätzlich aktive Client-Verbindungen ab. -
status
: Zeigt den Service-Status an (gleicher Output wiesystemctl status
). -
restart
: Startet denopsiconfd
-Service neu (systemctl restart
). -
reload
: Sendet einSIGHUP
-Signal an laufendeopsiconfd
-(Worker-)Prozesse. Die Prozesse lesen die Konfigurationsdateien daraufhin neu ein. -
setup
: Startet ein Der Befehl opsiconfd setup. -
log-viewer
: Gibt dieopsiconfd
-Logs (siehe Abschnitt Logfiles) im Terminal aus. -
health-check
: Startet einen Health-Check. -
diagnostic-data
: Schreibt Health-Check-Daten und Informationen über die Umgebung, die zur Analyse von Problemen hilfreich sind, in eine Datei. -
backup
: Erstellt ein Backup (siehe Abschnitt opsiconfd backup/restore). -
restore
: Stellt ein Backup wieder her (siehe Abschnitt opsiconfd backup/restore).
Server-Rolle
Ein opsi-Server kann die Rolle eines opsi-Configservers oder die eines opsi-Depotservers übernehmen. Die Konfigurationsdatei /etc/opsi/opsi.conf
legt die Rolle fest. Ab opsi 4.3 definiert diese Konfigurationsdatei auch die ID des Servers.
Wenn Sie den opsi-Server als Docker-Container betreiben, steuern Umgebungsvariablen das Verhalten (siehe Abschnitt Docker Compose). |
Hier ist ein Beispiel für einen opsi-Configserver:
[host]
id = "opsi.domain.tld"
key = "5b4324721a114195098bdaf3fab54a9f"
server-role = "configserver"
[service]
url = "https://localhost:4447"
Beispiel für einen opsi-Depotserver:
[host]
id = "opsi-depot.domain.tld"
key = "a1b5098fabcaf315b13249cba1a24d17"
server-role = "depotserver"
[service]
url = "https://opsi.domain.tld:4447"
Ab opsi 4.3 löst die Datei /etc/opsi/opsi.conf die bisher genutzte Datei /etc/opsi/backends/jsonrpc.conf ab.
|
Konfiguration
Den opsiconfd
können Sie über die Datei /etc/opsi/opsiconfd.conf
, über Umgebungsvariablen oder über Kommandozeilen-Parameter beim Aufruf konfigurieren. Dabei gilt die folgende Reihenfolge:
-
Einträge in der Konfigurationsdatei überschreiben die Standardeinstellungen.
-
Umgebungsvariablen überschreiben Einträge in der Konfigurationsdatei.
-
Kommandozeilen-Parameter überschreiben Umgebungsvariablen.
Eine Liste aller Konfigurationsoptionen erhalten Sie, wenn Sie den folgenden Befehl in ein Terminalfenster eingeben: |
opsiconfd --help
...
--admin-networks ADMIN_NETWORKS [ADMIN_NETWORKS ...]
A list of network addresses from which administrative connections are allowed.
[env var: OPSICONFD_ADMIN_NETWORKS]
(default: ['0.0.0.0/0', '::/0'])
...
Hinter dem Namen des Kommandozeilenparameters (z. B. --admin-networks
) steht die dazugehörige Umgebungsvariable in Großbuchstaben (hier: ADMIN_NETWORKS
). Lassen Sie die beiden vorangestellten Bindestriche --
weg, erhalten Sie den Namen der Option für die Konfigurationsdatei (admin-networks
).
-
In der Konfigurationsdatei
/etc/opsi/opsiconfd.conf
steht z. B.:
admin-networks = [10.1.1.0/24,192.168.1.0/24]
-
Über die Umgebungsvariable erfolgt die Einrichtung so:
OPSICONFD_ADMIN_NETWORKS="[10.1.1.0/24,192.168.1.0/24]"
-
Der Aufruf auf der Kommandozeile sieht so aus:
opsiconfd --admin-networks 10.1.1.0/24 192.168.1.0/24
Änderungen an der Konfiguration können Sie in der Regel im laufenden Betrieb über den Befehl opsiconfd reload übernehmen. Einige Parameter erfordern jedoch einen Neustart über opsiconfd restart .
|
Die Datei hostcontrol.conf
Über die HostControl-Funktionalität können Sie opsi-Clients steuern. Seit opsi 4.3 findet das bevorzugt über den opsi-Message-Bus statt. Das bisherige Verfahren existiert jedoch weiterhin; in diesem Fall baut der opsi-Configserver eine Verbindung zum Client-Agent auf und führt über diese Verbindung Kommandos aus. Über Wake on LAN (WOL) können Pakete im Netzwerk versendet werden, um Clients bei Bedarf zu starten.
Die HostControl-Konfiguration befindet sich in der Datei /etc/opsi/backends/hostcontrol.conf
. Hier stehen die folgenden Parameter zur Verfügung:
-
useMessagebus
: Der Parameter steuert, wie der opsi-Message-Bus für HostControl verwendet wird. Die folgenden Werte sind erlaubt:-
False
: Der opsi-Message-Bus wird nicht verwendet, das heißt, dass für jedes Kommando eine Verbindung zumopsi-client-agent
aufgebaut wird. -
True
: Es wird ausschließlich der opsi-Message-Bus verwendet. Ist ein Client nicht mit dem opsi-Message-Bus verbunden, gilt er als nicht erreichbar, und das Kommando wird nicht ausgeführt. Wenn alle Clients so konfiguriert sind, dass sie den opsi-Message-Bus verwenden, ist das die bevorzugte Einstellung. -
hybrid
(Standard): Der opsi-Message-Bus wird verwendet, wenn der Client eine aktive Message-Bus-Verbindung hat. Falls nicht, wird eine Verbindung zumopsi-client-agent
aufgebaut-
-
-
opsiclientdPort
: Netzwerkport für die Verbindungsaufnahme zu einemopsi-client-agent
-
hostRpcTimeout
: Timeout in Sekunden bei der Verbindungsaufnahme zu einemopsi-client-agent
-
resolveHostAddress
: Der Parameter steuert die Namensauflösung:-
True
: Beim Verbindungsaufbau vom opsi-Configserver zumopsi-client-agent
wird die IP-Adresse des opsi-Clients bevorzugt über die Namensauflösung ermittelt. -
False
: Beim Verbindungsaufbau wird die im opsi-Backend hinterlegte IP-Adresse bevorzugt.
-
-
maxConnections
: maximale Anzahl simultaner Verbindungen zu Client-Agents -
broadcastAddresses
: WOL-Pakete werden an Broadcast-Adressen verschickt; dieser Parameter ordnet Netzwerkadressen den Broadcast-Adressen zu. Die Zuordnung hat die folgende Form:
{ "<network-address>": { "<broadcast-address>": <port-list> } }
Dieses Beispiel verdeutlicht die Konfiguration:
"broadcastAddresses": {
"0.0.0.0/0": {
"255.255.255.255": [7, 9, 12287]
},
"10.10.0.0/16": {
"10.10.1.255": [12287],
"10.10.2.255": [12287]
},
"10.10.3.0/24": {
"10.10.3.255": [12287]
},
"192.168.1.0/24": {
"192.168.1.255": [12287, 9, 12287]
}
}
Einer Netzwerkadresse können mehrere Broadcast-Adressen zugeordnet werden. Für jede Broadcast-Adresse können unterschiedliche Ports konfiguriert werden. Die passenden Broadcast-Adressen werden auf Basis der im opsi-Backend hinterlegten IP-Adresse eines Clients ermittelt. Ist die IP-Adresse hierbei Teil mehrerer Netzwerke, wird der spezifischste Eintrag verwendet.
Der Befehl opsiconfd setup
Bei jedem opsiconfd
-Start nimmt der Dienst automatisch Anpassungen an der opsi-Umgebung vor.
Daher sind in der Regel nur wenig manuelle Konfigurations- und Wartungsarbeiten erforderlich.
opsiconfd setup
umfasst unter anderem die folgenden Setup-Tasks:
-
Konfigurationsdateien automatisch aktualisieren
-
System-Ressourcen-Limits (
ulimit
) anpassen -
Benötigte Benutzer und Gruppen erstellen
-
Benötigte Dateien und Verzeichnisse anlegen
-
Datei
/etc/sudoers
konfigurieren -
Berechtigungen für Dateien und Verzeichnisse setzen
-
Log-Dateien aufräumen
-
systemd konfigurieren
-
MySQL-Datenbank einrichten, Schema-Upgrades und Cleanup
-
File-Backend automatisch in die MySQL-Datenbank migrieren
-
Redis konfigurieren und Cleanup
-
Grafana-Konfiguration anpassen und Addons installieren
-
opsi-CA und TLS-Server-Zertifikat erstellen und erneuern
-
DHCP-Server konfigurieren
-
Samba konfigurieren und Freigaben anlegen
Sie können den Setup-Lauf aber auch jederzeit von Hand über diesen Befehl starten:
opsiconfd setup
Jetzt beginnt ein vollständiges Setup; beim "normalen" opsiconfd
-Start findet ein reduzierter Setup-Lauf statt, um den Start des Dienstes zu beschleunigen.
Über den opsiconfd -Parameter skip-setup können Sie Setup-Tasks permanent abschalten.
|
In der Regel arbeitet opsiconfd setup
nicht-interaktiv.
Für die folgenden Aufgaben wird opsiconfd setup
jedoch auch interaktiv verwendet:
-
Manuelle Einrichtung einer MySQL-Datenbank-Verbindung (
--configure-mysql
), siehe Kapitel MySQL -
Manuelle Registrierung eines opsi-Depots (
--register-depot
) -
Umbenennung eines opsi-Configservers (
--rename-server
)
Um eine Interaktion von opsiconfd setup mit dem Benutzer vollständig auszuschließen,
etwa bei der Verwendung in Skripten, können Sie den Parameter --non-interactive verwenden.
|
Admin-Seite
Die opsiconfd
-Admin-Seite stellt Status-Informationen und Administrations-Aufgaben zum opsiconfd
im Webbrowser zur Verfügung.
Der Zugriff erfolgt über https://<opsi-server>:4447/admin
; Benutzer müssen Mitglied der opsi-Admin-Gruppe sein (siehe Kapitel Berechtigungen). Die nächsten Abschnitte stellen kurz die einzelnen Reiter vor.
Info
Hier sehen Sie allgemeine Informationen zum opsiconfd
, darunter auch die Anzahl der verbundenen Depotserver und Clients, Angaben zur opsi-CA und zum Serverzertifikat.
In der unteren Hälfte sehen Sie die opsiconfd
-Konfiguration; über den Button Service reload laden Sie die Konfiguration neu.
Maintenance
Auf diesem Reiter können Sie den opsiconfd
in den Wartungsmodus versetzen und diesen auch wieder beenden. In der Zeit gibt es dann keine Client-Aktivität. Klicken Sie die Schaltfläche Set application to 'maintenance' state, um den Maintenance-Modus zu aktivieren. Am oberen Rand sehen Sie die Meldung "accomplished": true
und daneben auch IP-Adressen, für die der Wartungsmodus nicht gilt — das sind in der Regel die Localhost-IP 127.0.0.1 und die IP-Adresse des opsi-Configservers. Alle Zugriffe von anderen Rechnern aus sind dann nicht mehr möglich; Anwender sehen die Nachricht Maintenance mode, please try again later.
Ins Feld Address exceptions (optional) können Sie weitere IP-Adressen eintragen, von denen aus Sie auf den opsiconfd auch im Maintenance-Modus zugreifen wollen. Mehrere IPs trennen Sie durch Kommata voneinander.
|
Über den Button Set application to 'normal' state beenden Sie den Maintenance-Modus wieder.
In der Voreinstellung wechselt der opsi-Configserver in den Maintenance-Modus, wenn Sie ein Backup erstellen oder eine Sicherungskopie wiederherstellen (siehe Kapitel Backup des opsi-Servers). |
Users
Hier richten Sie die Zwei-Faktor-Authentifizierung für Benutzer auf dem opsi-Configserver ein. Nachdem Sie die opsiconfd
-Konfiguration entsprechend angepasst und den Dienst neu gestartet haben, generieren Sie über den Button Generate new secret and activate TOTP ein Einmalpasswort. Es besteht aus sechs Ziffern und wird zusätzlich zur Anmeldung am opsi-Server benötigt (siehe Abschnitt Zwei-Faktor-Authentifizierung).
Clients
Die Seite zeigt Informationen über verbundene Clients und Sessions an. Gesperrte Clients erscheinen in der Liste Blocked Clients. Einzelne Clients können Sie im Bereich Unblock Clients über deren IP-Adresse und Execute freigeben; alternativ entsperren Sie über Unblock all clients alle gesperrten Client auf einmal.
Beachten Sie, dass Clients in diesem Fall (Web-)Clients meint, die auf die Admin-Seite zugreifen. Hier finden Sie keine Informationen über mit opsi verwaltete Rechner. Die Admin-Seite sperrt einen Client z. B. dann, wenn es zu viele fehlgeschlagene Anmeldeversuche gab. |
Um alle Sessions eines Clients zu löschen, geben Sie dessen IP-Adresse im Feld Delete client sessions ein und bestätigen das mit Execute.
Depots
Im oberen Bereich des Reiters können Sie weitere Depotserver zu Ihrer opsi-Umgebung hinzufügen. Dazu tragen Sie in die beiden Felder die Depot-ID (also den FQDN des opsi-Depotservers) und eine Beschreibung ein. Nach einem Klick auf Create depot sollten Sie das neue Depot in der Tabelle sehen; hier steht im Feld Messagebus noch not connected. Damit Configserver und Depotserver miteinander kommunizieren können, führen Sie auf dem Depotserver noch das folgende Kommando aus:
opsiconfd setup --register-depot
Beachten Sie, dass das Kommando opsi-setup --register-depot nach dem Wechsel von opsi 4.2 auf 4.3 nicht mehr verfügbar ist (siehe Abschnitt opsi-setup).
|
Falls es gesperrte Produkte auf einem Depotserver gibt, erscheinen diese ebenfalls auf diesem Reiter im Bereich Locked Products. Über den Button Unlock neben einem Produkt heben Sie die Sperre für dieses eine Produkt auf; Unlock all hebt die Sperre für alle gesperrten Produkte auf.
RPC-Infos
Die Tabelle auf diesem Reiter zeigt die letzten RPC-Aufrufe (Remote Procedure Call) an. Sie können die Anzeige per Klick auf den Namen der Tabellenspalte sortieren.
RPC-Interface
Dieser Reiter führt alle zur Verfügung stehenden Methoden der JSON-RPC-API auf. Wenn Sie die Checkbox Show deprecated methods anklicken, tauchen auch veraltete Methoden im Drop-down-Menü auf. Wählen Sie aus dem Drop-down-Menü Method eine Methode aus. Je nach Methode sehen Sie weitere Eingabefelder, etwa Attribute, Filter oder verfügbare Parameter. Die Felder erwarten eine gültige JSON-Kodierung; auf eventuelle Syntaxfehler weist das Interface hin.
Ein Klick auf den Button Execute führt die Methode aus. Anfrage, Verarbeitungsdauer und Ergebnis erscheinen darunter im JSON-Format.
Redis-Interface
Hier können Sie Redis-Status-Informationen anzeigen, Redis-Befehle ausführen und den Cache leeren. Klicken Sie auf Info+, um detaillierte Informationen zur Redis-Version, dem Betriebssystem, der Architektur des Servers usw. einzublenden.
Die Antwort im unteren Bereich des Reiters erscheint im JSON-Format.
Über die Schaltfläche Debug keys können Sie Keys (Schlüssel, also die Bezeichnungen für die verschiedenen Datenstrukturen, die in der Datenbank gespeichert sind) debuggen. Das kann hilfreich sein zur Fehlersuche, Leistungsüberwachung oder Datenanalyse. Beachten Sie, dass ein versehentliches Löschen oder Überschreiben eines Schlüssels zu Datenverlust führen kann; erstellen Sie im Zweifelsfall vorher ein Backup (siehe Kapitel Backup des opsi-Servers). |
Addons
Auf diesem Reiter installieren Sie opsiconfd
-Erweiterungen. Diese laden Sie zunächst von unserer Website opsi-Tools herunter und speichern sie auf dem opsi-Server. Dann klicken Sie auf dem Reiter Addons auf Durchsuchen, navigieren im Dateiauswahldialog zur Zip-Datei, wählen diese aus und klicken dann auf Install addon.
Zu den bereits installierten Erweiterungen sehen Sie in der Tabelle neben dem Namen und der ID auch die Versionsnummer und den Installationspfad auf dem Server.
Log Viewer
Der Reiter bietet schnellen Zugriff auf die opsiconfd
-Logfiles (siehe Abschnitt Logfiles). Sie können die Anzeige vergrößern (Button Maximize), die Protokolle nach Loglevel (Filter by level), Kontext (Filter by context) und eigenen Suchbegriffen (Filter by message) filtern. Über Checkboxen aktivieren Sie weitere Funktionen, wie das automatische Zusammenfassen von mehrzeiligen Informationen zu einer einzigen zusammenhängenden Zeile (Collapse multi-line) und das automatische Scrollen (Auto scroll). Die Schriftgröße beeinflussen Sie über die beiden Buttons neben Font size.
Terminal
Wechseln Sie zu diesem Reiter, um ein Terminalfenster auf dem opsi-Server zu öffnen. Dazu wählen Sie aus dem Drop-down-Menü Host einen opsi-Server in Ihrer Umgebung aus (Voreinstellung: Configserver) und klicken auf Connect. Anschließend startet das Terminal im Browser; Sie sind als Benutzer opsiconfd
angemeldet und starten damit in dessen Home-Verzeichnis /var/lib/opsi
.
Klicken Sie auf den Button Maximize, um das Menü am oberen Rand der Admin-Seite auszublenden und dem Terminal mehr Raum zu geben. Normalize bringt Sie zurück zur alten Ansicht. Alternativ schalten Sie über Fullscreen in die Vollbildansicht, die Sie über die Taste [Esc] verlassen können. Über das Plus und das Minus neben Font size können Sie die Schriftgröße verändern, und ein Klick auf Disconnect schließt das Terminal im Browser.
Sie können Dateien per Klick oder per Drag & Drop hochladen. Das ist beispielsweise praktisch, wenn Sie ein selbst gebautes opsi-Paket (Dateiendung .opsi ) installieren wollen. So gehen Sie dazu vor:
|
-
Öffnen Sie das Terminal im Browser.
-
Wechseln Sie ins Verzeichnis mit den Paketen:
cd /var/lib/opsi/repository
-
Ziehen Sie das Paket aus dem Dateimanager ins Browser-Terminal. (
ls -l
listet zur Kontrolle alle Dateien im aktuellen Verzeichnis auf.) -
Installieren Sie das Paket:
opsi-package-manager -i <paket.opsi>
(siehe auch Abschnitt opsi-package-manager)
Messagebus
Auf dem Reiter können Sie (zu Test- und Debugging-Zwecken) Nachrichten über den Message Bus versenden und empfangen. Der opsi-Server nutzt den Message Bus, um Nachrichten an andere Komponenten zu senden (z. B. Installationsaufträge, Änderungen der Konfiguration oder Statusabfrage von Clients).
Wählen Sie dazu aus dem Drop-down-Menü neben dem Button Send eines der Templates aus und füllen Sie es im oberen Feld mit den richtigen Werten. Klicken Sie abschließend auf Send. Im unteren Bereich des Reiters sehen Sie die gesendete Nachricht (links) und die Antwort vom opsi-Message-Bus (rechts).
Licensing
Auf dem Reiter Licensing können Sie einsehen, welche opsi-Erweiterungen lizenziert sind. Die erste Tabelle zeigt Informationen zum Lizenznehmer (Name, aktive und nicht-aktive Clients usw.), darunter sehen Sie eine detaillierte Auflistung über die opsi-Module, wann eine Lizenz ausgestellt wurde, wie lange sie noch gültig ist usw.
Blättern Sie ans Ende des Reiters, um neue Lizenzen im neuen Format (Endung .opsilic
) einzuspielen. Diese werden auf dem opsi-Server im Verzeichnis /etc/opsi/licenses
gespeichert.
Frühere opsi-Versionen nutzten zur Freischaltung die Datei /etc/opsi/modules . Sie behält ihre Gültigkeit, neue Lizenzen stellen wir jedoch nur noch im neuen Format aus. Wenden Sie sich an sales@uib.de, um eine Lizenzdatei im neuen Format zu erhalten.
|
Grafana
Der Reiter Grafana leitet Sie zum Grafanai-Dashboard weiter. Sobald Sie den Tab anklicken, wird das opsiconfd main dashboard auf dem Grafana-Server angelegt bzw. aktualisiert. Außerdem wird der Benutzer opsidashboard
angelegt, der für den Zugriff auf das Dashboard verwendet wird.
Logfiles
Der opsiconfd
verwendet Redis, um die Logfiles zu schreiben (siehe Kapitel Redis). Darüber hinaus legt der opsiconfd
im Verzeichnis /var/log/opsi/opsiconfd
eigene Logfiles ab.
Wenn Probleme mit dem Zugriff auf Redis bestehen, findet keine Protokollierung statt. Um dennoch Logfiles zu generieren, können Sie den Parameter log-mode auf local stellen.
|
opsi unterscheidet 10 verschiedene Loglevel:
-
0 - none: Logging komplett deaktiviert
-
1 - essential: sehr wichtige Meldungen
-
2 - critical: kritische Fehler
-
3 - error: Fehler
-
4 - warning: Warnungen
-
5 - notice: wichtige Hinweise
-
6 - info: weitere Informationen
-
7 - debug: Meldungen zur Fehlersuche
-
8 - trace: sehr viele Details, z. B. Mitschnitt der Kommunikation
-
9 - secret: vertrauliche Informationen
Die folgenden Parameter steuern den Loglevel:
-
log-level: allgemeiner Loglevel (bis zu welchem Loglevel werden Meldungen in den Redis-Stream übertragen)
-
log-level-stderr: Level der Ausgaben auf dem Terminal (Stderr)
-
log-level-file: Loglevel der Logdateien
Verwenden Sie das Kommando opsiconfd log-viewer
, um die Protokolle im Terminal zu betrachten:
opsiconfd log-viewer -l 6 --log-filter="client_address=192.168.1.1"
Da der Aufruf den Log-Stream direkt aus Redis liest, erfolgt die Ausgabe maximal bis zur Stufe log-level
.
Alternativ können Sie die Logfiles auf dem Reiter Log Viewer im Admin-Interface anschauen (siehe Abschnitt Log Viewer).
Filter
Der opsiconfd
gliedert die Logfiles in Kanäle und Kontexte. Daher können Sie die Meldungen filtern, um nur bestimmte Informationen zu erhalten. Den Loglevel für einen Kanal setzen Sie mit dem Parameter log-levels
. Über .*:4,opsiconfd\.headers:8
werden nur Warnungen protokolliert, Meldungen im Kanal opsiconfd.headers
jedoch mit dem Loglevel trace
.
Nach Kontexten filter der Parameter log-filter
. Für den opsiconfd
kommt im Wesentlichen der Kontext client_address
zum Einsatz. So können Sie beispielsweise mit client_address=192.168.1.1,192.168.1.2
bestimmen, dass Sie nur Meldungen sehen, die mit den beiden Clients mit der IP 192.168.1.1 und 192.168.1.2 zusammenhängen.