Das Copyright an diesem Handbuch liegt bei der uib gmbh in Mainz.

Dieses Handbuch ist veröffentlicht unter der creative commons Lizenz
'Namensnennung - Weitergabe unter gleichen Bedingungen' (by-sa).

CC by sa

Eine Beschreibung der Lizenz finden Sie hier:
https://creativecommons.org/licenses/by-sa/3.0/de/

Der rechtsverbindliche Text der Lizenz ist hier:
https://creativecommons.org/licenses/by-sa/3.0/de/legalcode

Die Software von opsi ist in weiten Teilen Open Source.
Nicht Open Source sind die Teile des Quellcodes, die neue Erweiterungen enthalten, welche noch unter Kofinanzierung stehen, also noch nicht bezahlt sind.
siehe auch: opsi-Erweiterungen als Kofinanzierungsprojekte

Der restliche Quellcode ist veröffentlicht unter der AGPLv3:

agplv3

Der rechtsverbindliche Text der AGPLv3 Lizenz ist hier:
http://www.gnu.org/licenses/agpl-3.0-standalone.html

Für Lizenzen zur Nutzung von opsi im Zusammenhang mit Closed Source Software kontaktieren Sie bitte die uib gmbh.

Die Namen 'opsi', 'opsi.org', 'open pc server integration' und das opsi-logo sind eingetragene Marken der uib gmbh.

2. Einführung

2.1. Für wen ist dieses Handbuch?

Diese Handbuch richtet sich an alle, die sich näher für die automatische Softwareverteilung 'opsi' interessieren. Der Schwerpunkt der Dokumentation ist die Erläuterung der technischen Hintergründe, um so zu einem Verständnis der Abläufe beizutragen.

Damit soll dieses Handbuch nicht nur den praktisch mit opsi arbeitenden Systemadministrator unterstützen sondern auch im Vorfeld den Interessenten einen konkreten Überblick über opsi geben.

2.2. Konventionen zu Schrift und Grafiken

In '<spitzen Klammern>' werden Namen dargestellt, die im realen Einsatz durch ihre Bedeutung ersetzt werden müssen.

Beispiel: Der Fileshare, auf dem die opsi Softwarepakete liegen, wird <opsi-depot-share> genannt und liegt auf einem realen Server z.B. auf /var/lib/opsi/depot.

Das Softwarepaket: <opsi-depot-share>/ooffice liegt dann tatsächlich unter /var/lib/opsi/depot/ooffice.

Beispiele aus Programmcode oder Konfigurationsdateien stehen in Courier-Schrift und sind farbig hinterlegt.

depoturl=smb://smbhost/sharename/path

3. Überblick opsi

Werkzeuge zur automatischen Softwareverteilung und Betriebssysteminstallation sind bei größeren PC-Netz-Installationen ein wichtiges Werkzeug zur Standardisierung, Wartbarkeit und Kosteneinsparung. Während die Verwendung solcher Werkzeuge für gewöhnlich mit erheblichen Lizenzkosten einher geht, bietet opsi als Opensource-Werkzeug deutliche Kostenvorteile. Hier fallen nur die Kosten an, die von Ihnen durch tatsächlich angeforderte Dienstleistungen, wie Beratung, Schulung und Wartung, entstehen bzw. soweit kostenpflichtige Module benutzen wollen geringe Kofinanzierungsbeiträge.

Auch wenn Software und Handbücher kostenlos sind, ist es die Einführung eines Softwareverteilungswerkzeuges nie. Um die Vorteile ohne Rückschläge und langwierige Lernkurven nutzen zu können, ist die Schulung und Beratung der Systemadministratoren durch einen erfahrenen Partner dringend geboten. Hier bietet Ihnen uib seine Dienstleistungen rund um opsi an.

Das von uib entwickelte System basiert auf Linux-Servern, über die das Betriebssystem und Software-Pakete auf den PC-Clients installiert und gewartet werden (PC-Server-Integration). Es basiert weitestgehend auf frei verfügbaren Werkzeugen (GNU-tools, SAMBA etc.). Dieses opsi (Open PC-Server-Integration) getaufte System ist durch seine Modularität und Konfigurierbarkeit in großen Teilen eine interessante Lösung für die Probleme der Administration eines großen PC-Parks.

3.1. Erfahrung

opsi ist die Fortschreibung eines Konzepts, das seit Mitte der 90er Jahre bei einer Landesverwaltung auf über 2000 Clients in verschiedenen Lokationen kontinuierlich im Einsatz ist und stetig weiterentwickelt wurde. Als Produkt opsi ist es nun auch einem breiten Kreis von Interessenten zugänglich.

Eine Übersicht registrierter opsi-Installationen finden Sie auf der https://www.opsi.org/opsi-map/

3.2. Features von opsi

Die wesentlichen Features von opsi sind:

  • Automatische Softwareverteilung

  • Automatische Betriebssysteminstallation

  • Hard- und Softwareinventarisierung

  • Komfortable Steuerung über das opsi Management-Interface

  • Unterstützung von mehreren Standorten mit Depotservern

3.3. opsi Erweiterungen

  • Lizenzmanagement

  • MySQL-Backend

  • Nagios Connector

  • Installation bei Shutdown

  • Local Image Backup (Lösung zur schnellen Wiederherstellung von Schulungscomputern (derzeit nur für die öffentliche Hand z.B. Schulen))

  • Linux Agent

  • WAN Erweiterung (Einbindung von Clients hinter langsamen Leitungen)

  • User Profile Management: User Profile z.B. in einer Roamig-Profile Umgebung können modifiziert werden.

  • OTRS::ITSM Connector (von unserem Partner Cape-IT)

3.4. Struktur

Die Konfiguration von opsi benötigt eine Datenhaltung. Die externen Komponenten von opsi kommunizieren mit dem opsi-server über einen Webservice. Der Prozess 'opsiconfd', welcher den Webservice bereitstellt, übergibt die Daten dem Backendmanager, der die Daten in das konfigurierte Backend schreibt.

Dabei unterstützt opsi unterschiedliche Backends:

  • File-basiert

  • MySQL-basiert

Schema: opsi mit File- und SQL-Backend
Abbildung 1. Schema: opsi mit File- und MySQL-Backend

Mehr zur Datenhaltung finden Sie im Datenhaltung von opsi.

Die Konfiguration der Backends erfolgt in den Konfigurationsdateien in den Verzeichnissen /etc/opsi/backendManager sowie /etc/opsi/backends.

Schema: Schichten der Backend-Konfiguration
Abbildung 2. Schema: Schichten der Backend-Konfiguration

In den Konfigurationsdateien im Verzeichnis /etc/opsi/backends werden die Backends definiert.

Welche Backends für welche Zwecke verwendet werden, steht in der Datei /etc/opsi/backendManager/dispatch.conf.

Wer auf welche Methoden zugreifen darf, ist in der Datei /etc/opsi/backendManager/acl.conf konfiguriert.

Unterhalb von /etc/opsi/backendManager/extend.d können weitere opsi-Methoden definiert sein, welche die Basis opsi-Methoden verwenden.

So ist z.B. das Mapping der vorgangsbasierten Methoden ('Legacy') auf die objekt-basierten Methoden in der Datei /etc/opsi/backendManager/extend.d/20_legacy.conf definiert. Genaue Beschreibungen dieser Konfigurationsdateien finden Sie im Abschnitt Allgemeine Konfigurationsdateien.

4. opsi-Management GUI: opsi-configed

4.1. Voraussetzungen und Aufruf

Ab Version 4.0.7.5.22 wird der opsi-configed in einer Fassung ausgeliefert, die mit Java 1.8 kompiliert ist und daher zum Ablauf eine Java-Laufzeitumgebung mindestens der Version 1.8 benötigt.

opsi-configed arbeitet mit den Daten eines auf dem Server laufenden opsiconfd mindestens der Version 4.0.6.

Das Programm steht auf download.uib.de in der jeweils aktuellen Version als opsi-Paket zur lokalen Installation zur Verfügung. Auf Nicht-opsi-Systemen kann der opsi-configed auch durch Kopieren der zum Paket gehörenden Dateien installiert werden. Zur Vereinfachung dieses Installationsvorgangs kann von http://download.uib.de/opsi4.1/misc/helper/ das Setupprogramm opsi-configed-setup.exe für Windows-Clients oder die Datei opsi-configed-linux-setup.tar.gz für Linux-Clients bezogen werden.

Sofern es sich um einen Rechner mit graphischer Oberfläche handelt, ist der opsi-configed auch durch einen Menüeintrag startbar.

Auf Rechnern ohne grafische Oberfläche können lediglich Starts mit den folgenden Optionen erfolgen:

  • --version

  • --help bzw. -h

  • --querysavedsearch [SAVEDSEARCH_NAME] bzw. -qs [SAVEDSEARCH_NAME]

  • --swaudit-pdf FILE_WITH_CLIENT_IDS_EACH_IN_A_LINE [OUTPUT_PATH]

Auf jedem System kann, wenn die benötigten jar-Archive verfügbar sind, der Start des opsi-configed mittels java -jar configed.jar erfolgen.

Insbesondere zeigt dann der Aufruf java -jar configed.jar --help die Kommandozeilenoptionen:

-l LOC			--locale LOC			Set locale LOC (format: <language>_<country>)
-h HOST			--host HOST			Configuration server HOST to connect to
-u NAME			--user NAME			User for authentication
-p PASSWORD	--password PASSWORD		password for authentication
-c CLIENT		--client CLIENT		CLIENT to preselect
-g CLIENTGROUP	--group CLIENTGROUP	CLIENTGROUP to preselect
-t INDEX			--tab INDEX                   Start with tab number INDEX, index counting starts with 0, works only if a CLIENT is preselected
-d PATH			--logdirectory PATH       Directory for the log files
-r REFRESHMINUTES			--refreshminutes REFRESHMINUTES			Refresh data every REFRESHMINUTES  (where this feature is implemented, 0 = never)
-qs [SAVEDSEARCH_NAME]		--querysavedsearch [SAVEDSEARCH_NAME]	On command line: tell saved host searches list resp. the search result for [SAVEDSEARCH_NAME])
--gzip [y/n]							Activate gzip transmission of data from opsi server yes/no
--sslversion PREFERRED_SSL_VERSION	Try to use this SSL/ TLS version
--ssh-key SSHKEY						full path with filename from sshkey used for authentication on ssh server
--ssh-passphrase PASSPHRASE			passphrase for given sshkey used for authentication on ssh server
--version								Tell configed version
--collect_queries_until_no N				Collect the first N queries; N = -1 (default, no collect), 0 = infinite
--help								Give this help
--loglevel L 							Set logging level L, L is a number >= 0, <= 5
--halt								Use  first occurring debug halt point that may be in the code
--sqlgetrows							Force use sql statements by getRawData
--nosqlrawdata						Avoid getRawData
--localizationfile EXTRA_LOCALIZATION_FILENAME							Use EXTRA_LOCALIZATION_FILENAME as localization file, the file name format has to be: configed_LOCALENAME.properties
--localizationstrings													Show internal labels together the strings of selected localization
--swaudit-pdf FILE_WITH_CLIENT_IDS_EACH_IN_A_LINE [OUTPUT_PATH]		export pdf swaudit reports for given clients (if no OUTPUT_PATH given, use home directory)

Läuft der opsiconfd auf einem anderem als dem Standardport 4447, so ist dieser beim Start des opsi-configed dem Hostnamen mitzugeben (host:port).

4.1.1. Logging des opsi-configed

Der opsi-configed loggt defaultmäßig im Level 3 "Info". Das Loglevel kann auf Level 4 "Check" und Level 5 "Debug" hochgesetzt werden. Zur Änderung des Loglevels gibt es auf die Kommandozeile die Option --loglevel [LEVEL] . Die Verwendung von Level 5 ist nur anzeigt, wenn bereits der configed-Start zu Problemen führt, da die produzierte Logdatei sehr umfangreich wird und kaum noch durchgearbeitet werden kann. Wenn der configed läuft und eine mögliche Fehlersituation bei einer bestimmten Anforderung bevorsteht, kann vorher interaktiv über den Menüpunkt Hilfe/ConfigEditor Logstufe das verschärfte Logging eingeschaltet werden.

Im Level 4 werden insbesondere die Service-Calls geloggt. Der Debug-Level bietet häufig die Möglichkeit, Aktionen sehr kleinschrittig zu verfolgen.

Die erzeugten Logdateien liegen per Default im Heimatverzeichnis des Users. Unter Windows werden sie dabei ab Version 4.0.7.6.12 im Verzeichnis

c:\Users\[Benutzername]\AppData\Roaming\opsi.org\log

abgelegt (wobei im Explorer statt "Users" die lokalisierte Bezeichnung steht, Achtung, der Explorer zeigt standardmäßig das Verzeichnis nur nach manueller Eingabe von AppData an).

Die aktuelle Logdatei heißt configed.log, die bis zu drei vorangegangen configed_0.log, configed_1.log, configed_2.log

Per Kommandozeilenparameter -d kann das Logging-Verzeichnis umgestellt werden.

Der Pfad zur aktuell genutzten Logdatei wird im Hilfemenü unter "Aktueller Logfile" angezeigt. Bei Aufruf des Punktes kann der Pfad in die Zwischenablage übernommen werden, um ihn im Öffnen-Dialog eines Editor zu verwenden; oder es kann direkt die Default-Anwendung für .log-Dateien geöffnet werden.

4.1.2. Die Auswahl der Sprache

Der opsi-configed versucht für seine Spracheinstellung die Lokalisierungsinformation des Betriebssystems zu verwenden. Sofern er nicht über die passende Übersetzungsdatei verfügt, verwendet er Englisch als Defaultsprache. Ebenso werden, wenn in der Übersetzungsdatei Terme fehlen, die Ausdrücke der englischen Sprachdatei eingesetzt.

Beim Aufruf des opsi-configed kann über den Parameter

-l bzw. --locale

eine Sprache im Zweizeichen-Format language_region vorgegeben werden, z.B. en_US oder de_DE. Es genügt aber bereits die Angabe von z.B. en, da die Sprachdatei Englisch für jede Variante der Sprache verwendet wird.

Im laufenden opsi-configed kann die Sprache über den Menüpunkt Datei/International geändert werden. Dies führt zu einer Reinitialisierung des Programms mit einem Neuaufbau (fast) aller Komponenten in der neuen Sprache.

Schließlich kann mit dem Aufrufparameter

--localizationfile

direkt eine Lokalisierungsdatei vorgegeben werden. Mit dem Zusatzparameter

--localizationstrings

werden auch die Terme angezeigt, die in der Lokalisierungsdatei stehen und übersetzt werden müssen. Dies kann als Hilfe beim Anlegen und Testen einer Übersetzungsdatei genutzt werden.

4.2. Login

Login des opsi-configed
Abbildung 3. Login des opsi-configed

Beim Login versucht sich der opsi-configed per https mit dem opsiconfd auf dem ausgewählten Server/Port zu verbinden. Wenn der 'opsiconfd' seinen Defaultport 4447 verwendet, muss dieser nicht angegeben werden. Die User müssen der Unix-Gruppe opsiadmin angehören.

Der opsi-configed speichert im lokalen Benutzerprofil einige Information über die jeweilige Session, damit beim erneuten Login die Arbeitsumgebung wiederhergestellt werden kann, insbesondere eine ausgewählte Client-Gruppe. Seit Version 4.0.7 werden die Session-Informationen auch genutzt, um eine Auswahlliste der zuletzt verbundenen opsi-Server (z.B. produktiver und Test-Server) zu erzeugen. An oberster Stelle steht der zuletzt genutzte, der damit ohne explizite Auswahlaktion wieder verwendet werden kann.

Die gzip-Komprimierung im HTTP-Protokoll verringert die zu übertragende Datenmenge auf Kosten der verlängerten Verarbeitungszeit, da die Daten komprimiert und dekomprimiert werden müssen. Es hat sich gezeigt, dass im lokalen Netz die Reaktionszeiten tendenziell kürzer ohne Komprimierung sind, da die Effekte der verlängerten Verarbeitungszeit überwiegen. Bei Übertragung übers WAN ist es tendenziell umgekehrt. Da im LAN die Kompression sich im Normalfall zeitlich praktisch nicht bemerkbar macht und bei WAN-Verbindungen meist vorteilhaft ist, ist die Gzip-Option per Default eingeschaltet.

Mittels des Features der Client-Erreichbarkeit lässt sich prüfen, welche Clients verbunden sind. Es lässt sich außer über die Anmeldemaske auch per Aufrufparameter aktivieren oder deaktivieren. In der Anmeldemaske ist ein Test-Intervall von 0 Minuten (= ausgeschaltet) als Default eingetragen. Zur Vermeidung einer zu hohen Zahl von Netzanfragen sollte das Test-Intervall nicht zu kurz eingestellt werden.

4.3. Copy & Paste, Drag & Drop

Sie können aus (fast) allen Bereichen des opsi-configed die markierten Daten mit den üblichen Tastenkombinationen (Strg-Insert, Strg-C) in die Zwischenablage kopieren und so anderen Programmen zur Verfügung stellen.

Für die meisten Tabellen ist auch die Drag & Drop-Funktion aktiviert, mit der die Tabellendaten z.B. nach Excel transferiert werden können.

4.4. Auswahl des Bedienungsmodus

Um zwischen verschiedenen Funktionen des opsi-configed zu wechseln, befinden sich seit Version 4.0.4 rechts oben im opsi-configed-Fenster sechs Schaltflächen.

opsi-configed: Schaltflächen
Abbildung 4. opsi-configed: Wahl des Modus

Die durch die ersten drei Schaltflächen wählbaren Modi Clientkonfiguration, Depotkonfiguration (Depot-Properties) oder Serverkonfiguration (Server-Configs) verändern das Zielobjekt des Hauptfensters, die Schaltflächen Gruppenaktionen, Produktaktionen sowie 'Lizenzmanagement' starten jeweils spezifische Fenster mit eigenen Objekten und Aktionsmöglichkeiten.

Diese Fenster können statt über die Schaltflächen auch über den Hauptmenüpunkt Fenster geöffnet werden (ab opsi-configed Version 4.0.7).

4.5. Depotauswahl

Werden an Ihrem opsi-Server mehrere Depotserver betrieben, so werden diese in einer Liste am linken Rand des opsi-configed angezeigt.

Per default ist das Depot auf dem opsi-configserver markiert und die zu diesem Depot gehörigen Clients werden angezeigt. Die Liste der Depotserver ist eine Mehrfachauswahlliste. D.h. mehrere Depots können markiert werden, es werden alle zugehörigen Clients gezeigt (genauer, alle Clients, die auf irgendeinem der ausgewählten Depots zur ausgewählten Gruppe (s. dort) gehören).

Die gemeinsame Clientanzeige gestattet nur dann, Clients gemeinsam z.B. in ihrer Produktkonfiguration zu bearbeiten, wenn sie Depots mit identischer Paketkonfiguration angehören, d.h. die Depots untereinander synchron sind. Der Versuch, Clients aus asynchronen Depots gemeinsam zu bearbeiten, wird mit einer entsprechenden Warn- und Fehlermeldung abgewiesen.

Für die erleichterte Depotselektion existieren mehrere Funktionen:

opsi-configed: Depotauswahl
Abbildung 5. opsi-configed: Depotauswahl
  • (=+) : Alle Depots mit identischen Produkten werden ausgewählt

  • (++) : Alle Depots werden ausgewählt (auch mit Strg-a möglich)

  • Textsuche im Namen der Depots und optional auch in der Beschreibung

Im Suchfeld kann mit dem ersten Checkfeld

Der opsi-configed speichert lokal (auf dem PC, auf dem er läuft) und User- sowie Server-bezogen die zuletzt getätigte Depot- und Gruppenauswahl und aktiviert sie beim nächsten Start wieder.

Zu beachten: Beim Depotwechsel bleibt die Gruppenauswahl erhalten, was nicht unbedingt das Gewünschte ist. Gegebenfalls muss daher für das neue Depot eine andere Gruppe bzw. die ganze CLIENT-LISTE aktiviert werden.

opsi-configed: Depotauswahl
Abbildung 6. opsi-configed: Depotauswahl

4.6. Clientauswahl

Nach erfolgreichem Login zeigt sich das Hauptfenster mit dem aktiviertem Karteireiter Clients zur Auswahl von Clients. Das Hauptfenster zeigt die Liste der Clients, wie sie durch die Depotwahl gegeben bzw. im 'Treeview' - s. Abschnitt 4.7 - bestimmt ist.

Der opsi-configed speichert lokal auf dem Rechner, auf dem er läuft userbezogen die zuletzt getätigte Gruppenauswahl und aktiviert sie beim nächsten Start wieder.

opsi-configed: Client-Auswahl
Abbildung 7. opsi-configed: Client-Auswahl

In der Liste kann eine Zeile auch über die Suche nach einem Stringwert ausgewählt werden, der im Suchfeld oberhalb der Liste einzugeben ist.

Wie die Suche ausgeführt wird, ist durch die Auswahl in den Drop-down-Listen zu den Feldern und zum Suchverfahren bestimmt. Die Feld-Auswahl bietet an:

  • Suche in allen Feldern (genauer, allen Feldern, die nach der momentanten Konfiguration als Spalten dargestellt werden, (Default) oder

  • Suche in einem bestimmten Feld.

Beim Suchverfahren (erweitert in Version 4.0.7) kann man sich entscheiden zwischen den Varianten

  • "Volltext": die Sucheingabe wird verwendet wie beim Standard-Googlen; d.h. wenn die Eingabe mehrere (durch Leerzeichen getrennte) Suchwörter (bzw. Wortbestandteile) enthält, muss mindestens eines in einer Spalte gefunden werden;

  • "Volltext (Komplettstring)": die Sucheingabe wird verwendet, als würde man beim Googlen den Text in Anführungszeichen setzen; d.h. der Gesamttext muss irgendwo in einer Spalte gefunden werden;

  • "Anfangstext": der Suchstring muss als Beginn einer Spalte vorkommen;

  • "regulärer Ausdruck": Suchstring wird sog. regulärer Ausdruck interpretiert, d.h. es werden Zeilen gesucht, bei denen der Text einer Spalte nach den Prinzipien der Regulären Ausdrücke (vgl. die Java-Dokumentation für java.util.regex.Pattern) "matcht"

Betätigen der Return-Taste springt auf den nächsten Treffer der Suche (ohne Treffer: nächste Zeile).

Weitere Auswahlfunktionen basierend auf der Suche zeigt das Kontextmenü des Suchfeldes: