opsi-server mit mehreren Depots (frei)

Konzept

Die Unterstützung von mehreren Depots in opsi hat folgende Merkmale:

  • Zentrale Speicherung und Administration der Konfigurationsdaten

  • Dezentrale Bereitstellung der Softwaredepots - automatisierte Verteilung der installierten Softwarepakete auf die dezentralen Depots

  • Verwaltung der Clients standortübergreifend in einem Administrationsinterface

Zur Umsetzung wurde folgendes Konzept verwirklicht:

  • Die Konfigurationsdaten für alle Clients werden auf einem opsi-Server (Konfigurations-Server) gehalten.

  • Alle Clients verbinden sich über den opsi-Webservice mit dem Konfigurations-Server und erhalten von dort ihre Konfigurationsinformationen.

  • Die Softwaredepots liegen auf dezentralen 'opsi-Depotservern' und werden dem zentralen Konfigurations-Server als Netzwerkmounts zur Installation von Paketen zur Verfügung gestellt.

  • Die Funktionalität zum Start von Bootimages mittels PXE wird ebenfalls auf dem dezentralen opsi-Depotserver installiert. Diese wird aber zentral gesteuert.

  • opsi-package-manager: Programm zur Unterstützung von mehreren Depotshares beim Installieren und Deinstallieren von opsi-Paketen.

  • Transport der opsi-Pakete via webdav auf die opsi-Depotserver und Installation durch den opsiconfd via webservice-call

  • Unterstützung von mehreren Depotshares im Administrationswerkzeug opsi-configed.

  • Automatisierte Erkennung von Inkonsistenzen zwischen dem Master-Depotshare und anderen Depotshares anhand der hinterlegten Produkt-Controlfiles.

  • Ermöglichung der Selektion einzelner oder mehrerer Depotshares zur Auswahl der opsi-clients im opsi-configed.

  • Unterbinden der gemeinsamen Bearbeitung von opsi-clients, die an Depotshares hängen und zueinander inkonsistent sind.

  • Zuordnung der opsi-clients zu Depotshares über den opsi-configed, Umzug von Clients.

  • Konfigurations- und Verbindungsdaten der einzelnen Depotshares über den opsi-configed editierbar machen.

Die folgenden Schemata geben einen Überblick über die Kommunikation zwischen den Komponenten bei einer Situation mit einem Standort und der Situation mit einem opsi-Depotserver.

opsi-manual-multidepot-concept-single
Abbildung 1. Schema: Kommunikation zwischen opsi-client und opsi-server (ein Standort)
opsi-manual-multidepot-concept-multi
Abbildung 2. Schema: Kommunikation zwischen opsi-client und opsi-servern (mehrere Standorte)

Erstellung und Konfiguration eines Depot-Servers

Zur Erstellung eines externen 'opsi-Depotservers' wird zunächst ein normaler 'opsi-Server' aufgesetzt. Dann wird auf diesem neuen 'opsi-Server' der Befehl opsi-setup --register-depot mit root Rechten ausgeführt, um ihn zum externen 'opsi-Depotserver' zu konfigurieren. Da hierbei nicht nur der 'opsi-Depotserver' konfiguriert wird, sondern dieser auch noch per Webservice dem zentralen 'opsi-configserver' bekannt gemacht wird, müssen Username und Password eines Mitgliedes der Gruppe 'opsiadmin' eingegeben werden.

Unter Univention Corporate Server findet die Registrierung der opsi-Depotserver automatisch statt. Hierbei wird der erste Server mit einer opsi-Installation als opsi-configserver verwendet und alle weiteren in einer UCS-Domäne installierten Server werden dort als opsi-Depotserver registriert.

Beispiel:
'svmdepotde.svm.local' wird als opsi-Depotserver für den opsi-configserver 'sepiella.svm.local' eingerichtet:

root@svmdepotde.svm.local:~# opsi-setup --register-depot

Nun erscheint die Maske zu dem opsi-configserver, an dem sich dieser Server als opsi-Depotserver anmelden soll. Diese Anmeldung muss mit einem User autorisiert werden, welcher auf dem opsi-configserver Mitglied in der Gruppe 'opsiadmin' ist.

opsi-setup-registerdepot-1
Abbildung 3. opsi-setup --register-depot : Maske Eingabe opsiadmin Account für 'opsi-configserver'

Nun erscheint die Maske der Depotserver Settings. Im Normalfall müssen Sie hier nichts ändern. Insbesondere bleibt der neue opsi-Depotserver in der Regel ein "Master-Depot", damit ihm anschließend 'opsi-clients' zugeordnet werden können.

opsi-setup-registerdepot-2
Abbildung 4. opsi-setup --register-depot : Maske Depot Settings

Nach dieser Eingabe der Daten erfolgt die eigentliche Konfiguration:

[5] [Apr 06 12:32:19] Getting current system config (opsi-setup|70)
[5] [Apr 06 12:32:19] System information: (opsi-setup|117)
[5] [Apr 06 12:32:19]    distributor  : Debian (opsi-setup|118)
[5] [Apr 06 12:32:19]    distribution : Debian GNU/Linux 5.0.8 (lenny) (opsi-setup|119)
[5] [Apr 06 12:32:19]    ip address   : 172.16.166.33 (opsi-setup|120)
[5] [Apr 06 12:32:19]    netmask      : 255.255.255.0 (opsi-setup|121)
[5] [Apr 06 12:32:19]    subnet       : 172.16.166.0 (opsi-setup|122)
[5] [Apr 06 12:32:19]    broadcast    : 172.16.166.255 (opsi-setup|123)
[5] [Apr 06 12:32:19]    fqdn         : svmdepotde.svm.local (opsi-setup|124)
[5] [Apr 06 12:32:19]    hostname     : svmdepotde (opsi-setup|125)
[5] [Apr 06 12:32:19]    domain       : svm.local (opsi-setup|126)
[5] [Apr 06 12:32:19]    win domain   : OPSI (opsi-setup|127)
[5] [Apr 06 12:46:03] Creating depot 'svmdepotde.svm.local' (opsi-setup|2342)
[5] [Apr 06 12:46:03] Getting depot 'svmdepotde.svm.local' (opsi-setup|2345)
[5] [Apr 06 12:46:03] Testing connection to config server as user 'svmdepotde.svm.local' (opsi-setup|2354)
[5] [Apr 06 12:46:04] Successfully connected to config server as user 'svmdepotde.svm.local' (opsi-setup|2359)
[5] [Apr 06 12:46:04] Updating backend config '/etc/opsi/backends/jsonrpc.conf' (opsi-setup|2361)
[5] [Apr 06 12:46:04] Backend config '/etc/opsi/backends/jsonrpc.conf' updated (opsi-setup|2373)
[5] [Apr 06 12:46:04] Updating dispatch config '/etc/opsi/backendManager/dispatch.conf' (opsi-setup|2375)
[5] [Apr 06 12:46:04] Dispatch config '/etc/opsi/backendManager/dispatch.conf' updated (opsi-setup|2388)
[5] [Apr 06 12:46:04] Setting rights (opsi-setup|410)
[5] [Apr 06 12:46:06] Setting rights on directory '/tftpboot/linux' (opsi-setup|482)
[5] [Apr 06 12:46:06] Setting rights on directory '/home/opsiproducts' (opsi-setup|482)
[5] [Apr 06 12:46:06] Setting rights on directory '/var/log/opsi' (opsi-setup|482)
[5] [Apr 06 12:46:06] Setting rights on directory '/etc/opsi' (opsi-setup|482)
[5] [Apr 06 12:46:06] Setting rights on directory '/var/lib/opsi' (opsi-setup|482)
[5] [Apr 06 12:46:06] Setting rights on directory '/var/lib/opsi/depot' (opsi-setup|482)
[5] [Apr 06 12:46:27] Restarting services (opsi-setup|2392)
[5] [Apr 06 12:46:35] Configuring client user pcpatch (opsi-setup|347)
[5] [Apr 06 12:46:35]    Creating RSA private key for user pcpatch in '/var/lib/opsi/.ssh/id_rsa' (opsi-setup|361)
[5] [Apr 06 12:46:35] Setting rights (opsi-setup|410)
[5] [Apr 06 12:46:38] Setting rights on directory '/var/lib/opsi/.ssh' (opsi-setup|482)

Es ist in der Regel nötig, die Konfigurationsdatein in /etc/opsi/package-updater.repos.d/ auf dem neuen Depot zu überprüfen.

Sofern der neue Depotserver sich lediglich opsi-Pakete vom zentralen Server holen soll, sollte nur das Repository in /etc/opsi/package-updater.repos.d/opsi-server.repo aktiv bleiben. Eine mögliche Konfiguration kann wie folgt aussehen:

[repository_opsi_server]
active = true
opsiDepotId = bonifax.uib.local
autoInstall = true
autoUpdate = true
autoSetup = false
; Inherit ProductProperty defaults from master repository
inheritProductProperties = false

Non-interaktive Registrierung eines opsi-Depotserver

Es ist seit 'opsi-depotserver' 4.0.7.2 möglich die Registrierung eines opsi-Depotserver ohne Interaktion durchzuführen.

Dabei müssen die Daten zur Verbindung an den opsi-configserver als JSON-Objekt mitsamt dem Parameter --unattended mitgegeben werden.

opsi-setup --register-depot --unattended '{"address": "config.server.address:4447/rpc", "username": "adminuserinopsi", "password": "pwoftheuser"}'

Der opsi-Depotserver wird mit Standardwerten erstellt.

Es gibt die Möglichkeit, benutzerdefinierte Attribute für den erstellten opsi-Depotserver festzulegen. Dazu muss dem JSON-Objekt der Schlüssel depot und als Werte ein weiteres JSON-Objekt mit den gewünschten Werten mitgegeben werden.

Im folgenden Beispiel wird eine abweichende Beschreibung gesetzt:

opsi-setup --register-depot --unattended '{"address": "config.server.address:4447/rpc", "username": "adminuserinopsi", "password": "pwoftheuser", "depot": {"description": "Added with unattended registration."}}'

Paketmanagement auf mehreren Depots

Zur Verwaltung der Pakete auf mehreren 'opsi-Depotserver' kennt der opsi-package-manager die Optionen -d bzw. --depots mit denen die 'opsi-Depotserver' angegeben werden können auf denen ein Paket installiert bzw. deinstalliert werden soll. Mit dem Schlüsselwort 'ALL' kann auf alle bekannten Depots verwiesen werden. Bei einer Installation mit der Option -d wird das Paket zunächst in das Verzeichnis /var/lib/opsi/repository des 'opsi-Depotserver' hochgeladen und dann von dort aus installiert.

Wird -d nicht angegeben, so wird nur das lokale Depot behandelt und das Paket ohne upload nach /var/lib/opsi/repository installiert.

Beispiel:
Installiere das Paket softprod_1.0-5.opsi auf allen Depots:

opsi-package-manager -d ALL -i softprod_1.0-5.opsi

Um die Differenzen zwischen Depots angezeigt zu bekommen wird die Option -D (bzw. --differences) verwendet.

Beispiel:
Unterschiede zwischen den bekannten Depots bezüglich des Produktes mshotfix

opsi-package-manager -D -d ALL mshotfix
mshotfix
    vmix12.uib.local :  200804-1
    vmix13.uib.local :  200804-1
    bonifax.uib.local:  200805-2