Installation bei Shutdown (frei)

Standardmäßig wird in opsi die Installation von Software beim Systemstart des Clients gestartet. So lange die Installation läuft, wird die Benutzeranmeldung blockiert. Von daher kann es wünschenswert sein, die Software-Installationen vorwiegend beim Runterfahren des Clients durchzuführen.

Das opsi On-Shutdown-Modul stellt genau diese Funktionalität zur Verfügung. Individuell für bestimmte Clients kann die Installation beim Shutdown aktiviert werden.

Vorbedingungen für die Installation beim Shutdown

Das On-Shutdown-Modul kann auf Windows-Clients eingesetzt werden. Die erforderliche Grundfunktionalität ist Bestandteil des Paketes 'opsi-client-agent'.

Einschränkungen und Besonderheiten bestehen in folgendem Zusammenhang:

  • WAN-Erweiterung: das On-Shutdown-Modul ist derzeit nur auf Clients anwendbar, die nicht mit der WAN-Erweiterung betrieben werden. Bei der WAN-Erweiterung ist teilweise die lokale und nicht die serverseitige Konfiguration relevant, dies kollidiert mit der Zustandssteuerung für die Installation beim Shutdown.

  • Wenn durch einen Shutdown oder Reboot auf einem Windows-Rechner eine Installation beim Shutdown ausgelöst wurde, lässt die Windows-API zu diesem Zeitpunkt keine Umwandlung eines Shutdown in einen Reboot (oder umgekehrt) mehr zu. Im Falle eines Shutdown werden also Produkte, die einen Reboot beinhalten, erst beim nächsten Hochfahren des Rechners fertig installiert.

  • Das On-Shutdown-Modul steht nur auf Windows-Clients zur Verfügung. Auf Linux und MacOS-Clients steht das Feature aktuell nicht zur Verfügung.

Inbetriebnahme der Installation beim Shutdown

Mit opsi 4.2 wurde das Paket 'opsi-client-agent' komplett überarbeitet. Dabei wurde auch das On-Shutdown-Modul verbessert. Vor opsi 4.2 wurde die Konfiguration dieses Moduls hauptsächlich über den Produktschalter on_shutdown_install des Paketes 'opsi-client-agent' gesteuert. Dieser Produktschalter wurde im 'opsi-client-agent' Paket entfernt und durch einen neue Hostparameter ersetzt: opsiclientd.event_on_shutdown.active.

Das opsi-Paket vom 'opsi-client-agent' migriert automatisch die Stände des alten Produktschalters mit dem neuen opsi-config-object. Für neue Clients muss nur noch dieser Hostparameter aktiviert werden. Eine Neuinstallation des 'opsi-client-agent' ist nicht mehr notwendig, der Hostparameter sollte sofort greifen. Ebenfalls wurden die alten on_shutdown-Skripte entfernt, da Sie im neuen Modul nicht mehr benötigt werden.

Eine eventuelle Kollision mit Shutdown-Group-Policies einer eventuell vorhandenen Domäne lassen sich gänzlich nicht ganz ausschließen. Da der opsiclientd Dienst sich während der Laufzeit selbst in den Shutdown-Prozess integriert, sollte das On-Shutdown-Modul verlässlich aktiviert werden. Dennoch empfehlen wir im Fehlerfall die Domänen Group-Polices auf entsprechende Kollisionen zu prüfen.

Zum aktivieren des Moduls reicht folgende Befehl:

opsi-admin -d method configState_create opsiclientd.event_on_shutdown.active myclient.domain.de true

Das Deaktivieren dieses Moduls benötigt ebenfalls keine komplette Neuinstallation des opsi-client-agent-Paketes. Sobald die Konfiguration deaktiviert wird bei einem Client, wird bei diesem die Installation beim Shutdown nicht mehr aktiv.

Mit folgendem Befehl wird das Modul deaktiviert:

opsi-admin -d method configState_create opsiclientd.event_on_shutdown.active myclient.domain.de false

Die Installation beim Shutdown kann zusätzlich zur Installation beim Systemstart ausgeführt werden. Dies ist im Normalfall sinnvoll, da somit auch Clients, die sich längere Zeit am opsi Service nicht gemeldet haben (z.B. nach Urlaub des Anwenders), vor der Benutzung die neuesten Security-Updates bekommen. Falls gewünscht, kann die Installation beim Systemstart abgeschaltet werden, siehe Spezielle Konfiguration der Installation bei Shutdown. Angefangene Installationen werden aber auf jeden Fall beim Systemstart des Clients fortgesetzt, siehe Technisches Konzept.

Windows unterscheidet beim Herunterfahren systemtechnisch nicht zwischen einem Shutdown und einem Reboot. Die Installation beim Shutdown wird also sowohl beim Shutdown, als auch beim Reboot ausgeführt und es ist nicht möglich, diese beiden Fälle bei der Ausführung eines Skriptes zu unterscheiden. Die Windows-API lässt zu diesem Zeitpunkt weder eine Umwandlung eines Shutdown in einen Reboot (oder umgekehrt) zu. Ein Abbruch des Shutdowns/Reboot ist ebenfalls nicht erlaubt. Falls einzelne Software-Pakete eine mehrphasige Installation mit Reboot benötigen, wird die Installation erst beim nächsten Start des Clients fortgesetzt.

Technisches Konzept

Die folgenden Erläuterungen dienen dem besseren Verständnis der technischen Zusammenhänge für spezielle Konfigurationsvarianten sowie der Untersuchung im Fehlerfall. Im Normalfall werden alle erforderlichen Einstellungen vom Paket 'opsi-client-agent' und dem opsiclientd selbstständig und voll automatisiert durchgeführt.

Die Installation beim Shutdown basiert auf dem Zusammenspiel verschiedener System-Komponenten. Ein wesentlicher Bestandteil ist die Nutzung des Windows Shutdown-Skript-Mechanismus per Local Group Policy. Shutdown-Skripte ermöglichen die Durchführung von Tasks genau zu dem Zeitpunkt des Shutdown-Vorgangs, an dem der Benutzer bereits abgemeldet ist und alle Benutzer-Tasks beendet sind, aber noch alle Systemdienste laufen.

Der opsiclientd Dienst nutzt diese Technik. Das Skript entsteht zur Laufzeit des Dienstes automatisch. Bei aktiviertem Modul unterbricht der Dienst den System-Shutdown-Prozess und startet das on_shutdown-Event des opsiclientd. Erst nach der Beendigung dieses Events wird der Shutdown-Prozess des Systems fortgesetzt.

Falls für die gestartete Installationssequenz Reboots benötigen werden, ist die precondition installation_pending für die korrekte Steuerung des Ablaufs zuständig. In einem solchen Fall führt die Precondition installation_pending (unabhängig davon, ob gui_startup aktiviert ist oder nicht) zu einer direkten Fortführung der Installation beim nächsten Hochfahren des Systems, gegebenenfalls auch mit weiteren Reboots. Im Zustand installation_pending wird bei eventuell erforderlichen weiteren Reboots keine Installation beim Shutdown ausgeführt, da ansonsten zwischen der Installation beim Hochfahren und der Installation beim Runterfahren kein Reboot liegen würde.

Spezielle Konfiguration der Installation bei Shutdown

Im Normalfall ist zur Inbetriebnahme der Installation bei Shutdown, wie in Inbetriebnahme der Installation beim Shutdown beschrieben, nichts weiter erforderlich als ein aktuelles opsi-client-agent Paket. Für geeignete Clients kann mit dem Hostparameter opsiclientd.event_on_shutdown.active die Installation beim Shutdown aktiviert werden.

Die Installation beim Hochfahren des Systems bleibt standardmässig auch aktiv. Somit ist gewährleistet, dass auch ein längere Zeit ausgeschalteter Client (z.B. nach dem Urlaub des Benutzers) auf jeden Fall die neuesten Versionsstände bekommt, bevor der Benutzer sich anmelden kann.

Sollte dies nicht erwünscht sein, kann die Installation beim Hochfahren deaktiviert werden. Da dies nur Clientspezifisch abgeschaltet werden soll muss zuerst eine Default-Konfiguration angelegt werden, wo der Standard festgelegt wird:

opsi-admin -d method config_createBool opsiclientd.event_gui_startup.active "gui_startup active" true

Der Standard-Wert 'true' entspricht hierbei dem Wert in der mitgelieferten opsiclientd.conf.

Wenn für einen Install_on_shutdown-Client nun die Installation im Startup deaktiviert werden soll, wird der entsprechende 'Hostparameter' wie folgt angelegt:

opsi-admin -d method configState_create opsiclientd.event_gui_startup.active myclient.domain.de false

Diese Konfiguration hat zur Folge, dass beim Start des Rechners kein Verbindungsaufbau zum 'opsi-Configserver' und somit keine Installation stattfindet. Ausser bei einer angefangenen Installation, die durch die Zusatzbedingung installation_pending ausgelöst wird. Wenn danach ein weiterer Reboot erforderlich ist, wird das on_shutdown-Event blockiert und somit verhindert, dass zusätzlich auch beim Shutdown die Installation weitergeführt wird. Ansonsten wäre kein System-Neustart zwischen den einzelnen Installationsphasen.

Das Abschalten des Events gui_startup birgt die Gefahr, dass man sich seine Clients abhängt. Das bedeutet, wenn es Probleme bei dem on_shutdown-Event gibt, würde so ein Client nicht mehr aktiv Updates einspielen. Im Normalfall sollte durch die Verlagerung der Installationen auf den Shutdown-Prozess, die Blockade vom Event gui_startup stark minimiert werden. Deshalb gilt die allgemeine Empfehlung das gui_startup Event aktiviert zu lassen (Defaultverhalten).