Opsi macOS client manual - uib gmbh
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Inhaltsverzeichnis 1. Copyright. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. Einführung macOS Clients in opsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. Konventionen dieses Dokuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4. Voraussetzungen für macOS Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5. Einspielen der minimalen macOS opsi-Produkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.1. opsi-Standardsoftware für macOS unter opsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.2. Automatisches Einspielen der minimalen macOS opsi-Produkte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.3. Manuelles Einspielen der macOS opsi-Produkte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Integration vorhandener macOS-Clients in opsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6.1. Verwendung des opsi-client-agent-installer auf macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6.2. Verwendung von service_setup.sh auf macOS (Veraltet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 6.2.1. Verwendung von service_setup.sh auf macOS (Erstinstallation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 6.2.2. Verwendung von service_setup.sh auf macOS (Reperaturinstallation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.3. Verwendung von opsi-deploy-client-agent für macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. Rollout existierender Produkte auf macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.1. Inventarisierung mit dem localboot-Produkten hwaudit und swaudit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.2. Verteilung von opsi Standard Produkten: m-homebrew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.3. Verteilung von opsi Standard Produkten: m-javavm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7.4. Verteilung von opsi Standard Produkten: opsi-configed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 8. Einbindung eigener Software in die Softwareverteilung von opsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8.1. Ein kleines Tutorial zur Erstellung eines opsi-script Scriptes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8.1.1. Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8.1.2. Methoden der nicht interaktiven Softwareinstallation bei macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 8.1.3. Struktur eines opsi-script Skripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 8.1.4. Primäre Sektionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 8.1.5. Wichtige sekundäre Sektionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8.1.6. Globale Konstanten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8.1.7. Zweites Beispiel: tightvnc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 8.1.8. Elementare Befehle für primäre Sektionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 8.1.9. Drittes Beispiel: macOS-Template m-opsi-template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 8.2. Erstellen eines opsi-Produkt-Pakets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.2.1. Installation des opsi-setup-detector, opsi PackageBuilder und opsi-logviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 8.2.2. Das Programm opsi-setup-detector zum Erstellen eines macOS Scriptes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 8.2.3. Das Programm opsi PackageBuilder zum modifizieren eines Scriptes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 8.2.4. Testen und verbessern eines opsi-script Skriptes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 8.2.5. Packen mit opsi-makepackage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 8.2.6. Installieren mit opsi-package-manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8.2.7. Beispiel einer 'control' Datei. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8.2.8. Erstellen eines opsi-paketes mit dem CLI tool opsi-newprod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 9. Allgemeine Hinweise zu macOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.1. Das Keyboard unter macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 9.2. Das opsi Produkt m-homebrew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 9.3. Der macOS pseudo user opsisetupadmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 9.4. Die opsi Verzeichnisse auf macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 9.5. macOS Directory Struktur mit 'go' und 'nogo' . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 10. Weitere Informationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1. Copyright 1 / 60 1. Copyright 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). 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, welche neue Erweiterungen enthalten die noch unter Kofinanzierung stehen, also noch nicht bezahlt sind. siehe auch: opsi-Erweiterungen als Kofinanzierungsprojekte Der restliche Quellcode ist veröffentlicht unter der AGPLv3: Der rechtsverbindliche Text der AGPLv3 Lizenz ist hier: http://www.gnu.org/licenses/agpl-3.0-standalone.html Deutsche Infos zur AGPL: http://www.gnu.org/licenses/agpl-3.0.de.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 macOS Clients in opsi 2 / 60 2. Einführung macOS Clients in opsi Diese Anleitung beschreibt den Betrieb von macOS Clients in opsi. Es wird voraus gesetzt, das die Installation und Inbetriebnahme eines opsi-servers bereits erfolgt ist. Wesentliche Themen dieser Anleitung: 1. Aufnahme und Einbindung von Mac-Rechnern in opsi (Installation des opsi-mac-client-agent) 2. Bereitstellung von opsi Standardsoftware für Mac auf dem opsi-server 3. Installation von Standard Software auf den Mac-Clients 4. opsi-Standardsoftware für Mac unter opsi 5. Paketierung eigener Software 6. Erstellung von opsi-Paketen 7. Hinweise zu Mac Clients a. Spezielle Befehle für macOS b. Directories die Sie verwenden dürfen c. Der pseudo user opsisetupadmin
3. Konventionen dieses Dokuments 3 / 60 3. Konventionen dieses Dokuments Befehle werden gesondert hervorgehoben: dies ist ein Befehl Im Rahmen der Installation und Konfiguration können Sie die Befehle aus diesen Feldern in der Regel der Reihe nach per copy & paste aus diesem Dokument kopieren und ausführen. Einzelne Befehle oder Dateinamen werden so hervorgehoben: opsi-set-rights oder /Applications/opsi-script. Das ist ein opsi-script Code: Message "Installing "+ $ProductId$ +" ..." Kapitel welche den Namen einer bestimmten Plattform enthalten sind spezifisch für diese Plattform. Die unterstützen Plattformen sind: • Windows • Linux • macOS
4. Voraussetzungen für macOS Clients 4 / 60 4. Voraussetzungen für macOS Clients Nachfolgend werden die Voraussetzungen für das Management von macOS Clients unter opsi beschrieben. Der opsi-mac-client-agent ist eine opsi Erweiterung. Das bedeutet, dass Sie zum Einsatz eine Freischaltdatei benötigen. Diese Freischaltung erhalten Sie wenn Sie die Erweiterung kaufen. Zu Evaluierungszwecken stellen wir Ihnen auch eine zeitlich befristete Freischaltung kostenlos zur Verfügung ( ¬ mail an info@uib.de). Weitere Details hierzu finden Sie in https://download.uib.de/opsi4.2/documentation/html/opsi-manual-v4.2/opsi-manual-v4.2.html#opsi-manual-extensions Technische Voraussetzungen ist ein opsi-server mit opsi 4.1. oder höher. Unterstützte macOS Versionen: macOS Version Opsi 4.2 Opsi 4.1 12.0 (Monterey) 11.0 (Big Sur) 10.15 (Catalina) 10.14 (Mojave) 10.13 (High Sierra) : Supported : Unsupported : Under development : Discontinued Bei Verwendung der arm64 Architektur (Apple Silicium, M1) ist derzeit die Installation des opsi-client-agent der 'Dynamic Binary Translators' namens rosetta2 notwendig. Diesen können Sie Installieren mit: softwareupdate --install-rosetta --agree-to-license Die erfolgreiche Installation können Sie Überprüfen mit: pkgutil --pkgs | grep Rosetta com.apple.pkg.RosettaUpdateAuto. Die native Unterstützung der arm64 Architektur (Apple Silicium) ist in Planung. Hierzu sind die notwendigen Referenz Geräte bestellt. Aussagen wann die Bereitstellung für diese Plattform erfolgt können im Moment (April 2022) noch nicht getroffen werden.
5. Einspielen der minimalen macOS opsi-Produkte 5 / 60 5. Einspielen der minimalen macOS opsi-Produkte Zur Verteilung von Software mit opsi stehen fertige Produkte zur Installation bereit. Diese beinhalten unter anderem den Agent ('opsi-client- agent'), welcher für das Management auf Clients installiert werden muss. Es gibt eine automatische und manuelle Möglichkeit dies zu tun. Der automatisierte Weg wird empfohlen. 5.1. opsi-Standardsoftware für macOS unter opsi Folgende Produkte werden von opsi für macOS als Standard zur Verfügung gestellt: • opsi-mac-client-agent • swaudit • hwaudit • m-homebrew (siehe auch: Das opsi Produkt m-homebrew) • m-system-update • opsi-configed • opsi-logviewer • opsi-auto-update • m-javavm • opsi-setup-detector • windomain 5.2. Automatisches Einspielen der minimalen macOS opsi- Produkte Zur automatischen Installation der opsi-Produkte gibt es das Werkzeug opsi-package-updater, welches wie in '/etc/opsi/opsi-package- updater.conf' bzw. /etc/opsi/package-updater.repos.d/ konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert. Die Konfiguration der opsi Repositories für Mac-Clients findet sich im Verzeichnis /etc/opsi/package-updater.repos.d/ in den Dateien uib-mac-testing.repo und uib-mac.repo. Aktivieren Sie die gewünschten repos in dem Sie in der gewünschten *.repo Datei den Eintrag active = true setzen. /etc/opsi/package-updater.repos.d/uib-mac-testing.repo ; This repository provides testing opsi products for managing macOS ; clients with opsi. [repository_uib_macos_testing] description = opsi macOS packages in testing active = true baseUrl = http://download.uib.de dirs = opsi4.2/testing/packages/macos/localboot/ autoInstall = false autoUpdate = true autoSetup = false ; Set Proxy handler like: http://10.10.10.1:8080 proxy =
5. Einspielen der minimalen macOS opsi-Produkte 6 / 60 /etc/opsi/package-updater.repos.d/uib-mac.repo ; This repository provides table opsi roducts for managing macOS ; clients with opsi. [repository_uib_macos_stable] description = opsi macOS packages in stable active = true baseUrl = http://download.uib.de dirs = opsi4.2/stable/packages/macos/localboot/ autoInstall = false autoUpdate = true autoSetup = false ; Set Proxy handler like: http://10.10.10.1:8080 proxy = Installieren Sie die Pakete auf dem Server durch die Ausführung des Befehls als root: opsi-package-updater -v --repo uib_macos_stable install bzw. opsi-package-updater -v --repo uib_macos_testing install Nach erfolgreicher Installation müssen Sie beim opsi-configed ein erneutes laden aller Daten ausführen, damit die neuen Produkte dort sichtbar werden. Muss für den Zugriff auf das Internet die Verbindung über einen Proxy geleitet werden, so muss dieser in den .repo-Konfigurationsdateien unter /etc/opsi/package-updater.repos.d/ als Wert für proxy eingetragen werden. Ab Version 4.1.1.33 von opsi-utils kann ein globaler Proxy in /etc/opsi/opsi-package-updater.conf konfiguriert werden. [repository_uib_macos_stable] … proxy = Sollen später installierte Pakete aktualisiert werden, so kann dies mit dem folgenden Befehl gemacht werden: opsi-package-updater -v update Weitere Informationen zum opsi-package-updater können im Handbuch gefunden werden. 5.3. Manuelles Einspielen der macOS opsi-Produkte Es gibt auch die Möglichkeit manuell die Pakete herunter zu laden und zu installieren. Holen Sie sich die aktuellen opsi-Pakete im .opsi-Paketformat. Die Pakete finden Sie unter https://download.uib.de/opsi4.2/stable/packages/macos/localboot bzw. unter https://download.uib.de/opsi4.2/testing/packages/ macos/localboot. Wir empfehlen die .opsi-Dateien unter /var/lib/opsi/repository zu speichern. Zum Sicherstellen, dass opsiconfd auf die Dateien zugreifen kann, sollte opsi-set-rights /var/lib/opsi/repository ausgeführt werden. Nach dem Download müssen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i .opsi installieren.
6. Integration vorhandener macOS-Clients in opsi 7 / 60 6. Integration vorhandener macOS-Clients in opsi Um vorhandene macOS-Clients in opsi aufzunehmen, muss auf diesen der opsi-client-agent installiert werden. Dies kann auf mehrere Arten durchgeführt werden. Nachdem Sie, wie im Folgenden beschrieben, den opsi-client-agent installiert haben, erscheint der Client auch in der Client-Liste des opsi-configed, sofern Sie ihn dort noch nicht hinzugefügt hatten. Grundsätzlich gibt es die Möglichkeit die Installation des Agenten auf dem Client auszuführen oder vom Server aus die Installation anzustoßen. Das Ausführen der Installation direkt auf dem Client eignet sich für einzelne Rechner. Für einen Massen-Rollout des Agenten eignet sich grundsätzlich der opsi-deploy-client-agent besser, wenn die dazu nötigen Freischaltungen auf den Mac-Clients vorhanden sind. Falls bereits eine andere Möglichkeit existiert Software zu verteilen, so ist es ebenfalls möglich darüber den opsi-client-agent zu verteilen. Sobald der Agent installiert ist, können vorhandene opsi-Produkte auf diesen Clients installiert werden. 6.1. Verwendung des opsi-client-agent-installer auf macOS 1. Loggen Sie sich mit auf dem Client ein. 2. Laden Sie den Installer von ihrem configserver herunter. Der Installer liegt unter https://:4447/public/opsi-client-agent/ und hat den Dateinamen: Windows: opsi-client-agent-installer.exe Linux: opsi-linux-client-agent-installer.sh macOS: opsi-mac-client-agent-installer.sh 1. Führen Sie den Installer aus (bei linux und macOS sind dabei root-Rechte erforderlich, also ggfs mit sudo - bei windows folgt später ggfs eine UAC Anfrage) 2. Der Installer entpackt sich dann in ein temporäres lokales Verzeichnis und startet den enthaltenen oca-installation-helper. Dieser zeigt ein Nutzer-Interface mit Eingabefeldern für Client-ID, Opsi Service URL, Username und Password. Soweit möglich (z.B. wenn auf dem Client eine vorhandene opsiclientd.conf gefunden wird) sind diese Felder vorausgefüllt, müssen aber gegebenenfalls noch manuell ergänzt oder angepasst werden. • Die Client-ID entspricht in der Regel dem FQDN des Clients. • Die opsi Service URL sollte das Format https://:4447 haben.
6. Integration vorhandener macOS-Clients in opsi 8 / 60 • Username und Passwort sollten im Fall einer Erstinstallation des clients von einem Mitglied der Gruppe opsiadmin sein. Für eine Reinstallation kann hier auch die Client-Id und der pckey verwendet werden. Nach dem Start des Installers über den Button Install, nimmt per opsi-Webservice Kontakt zum Server auf, um den Client beim Server zu registrieren. Anschließend wird das im Installer enthaltene opsi-script aufgerufen um den opsi-client-agent auf der Maschine zu installieren. Nach Abschluß der Installation beendet sich der Installer. Weitere Informationen zum opsi-client-agent Installer und seinen Kommandozeilenparametern und weiteren Möglichkeiten den opsi-client- agent zu installieren finden Sie im opsi-Handbuch im Kapitel Nachträgliche Installation des opsi-client-agents https://download.uib.de/4.2/documentation/html/opsi-manual-v4.2/opsi-manual-v4.2.html#opsi-manual-clientagent-subsequent-installation 6.2. Verwendung von service_setup.sh auf macOS (Veraltet) Die nachfolgend eschriebenen Methoden: service_setup / silent_setup dienen nur noch zur Abwärtskompatibilität zu opsi 4.1 und den entsprechenden opsi-client-agent Versionen 4.1. Bitte verwenden Sie soweit möglich den opsi-client-agent Installer. 6.2.1. Verwendung von service_setup.sh auf macOS (Erstinstallation) Aufgrund der Sicherheitsrestriktionen von macOS ist die Möglichkeit Scripte von gemounteten shares auszuführen eingeschränkt. Der Versuch den im folgenden beschriebenen Vorgang mit über den Finder nach /Volumes (oder so) gemounteten share zu machen wird daher (je nach macOS Version) scheitern. • Loggen Sie sich auf dem Client ein. • Starten Sie das Terminal-Programm • Für die folgenden Befehle müssen Sie die folgenden Platzhalter ersetzen: - mit Ihrem login Namen - durch ein Verzeichnisnamen der noch nicht existiert z.B. 'mnt' - durch einen Usernamen der auf dem opsi-server bekannt ist. - durch das Passwort des . Sie können : zusammen mit der mount-Option -N auch weglassen, dann werden Sie nach dem Passwort gefragt - durch den Namen oder die IP-Nummer des opsi-servers sudo su cd /Users/ mkdir mount_smbfs //@/opsi_depot /Users// cd /Users///opsi-mac-client-agent ./service_setup.sh cd umount /Users// bzw. ohne Passwortabfrage
6. Integration vorhandener macOS-Clients in opsi 9 / 60 sudo su cd /Users/ mkdir mount_smbfs -N //:@/opsi_depot /Users// cd /Users///opsi-mac-client-agent ./service_setup.sh cd umount /Users// Beispiel: sudo su cd /Users/uib mkdir mnt mount_smbfs //adminuser@sepia/opsi_depot /Users/uib/mnt cd /Users/uib/mnt/opsi-mac-client-agent ./service_setup.sh cd umount /Users/uib/mnt 1. Starten Sie von dem gemounteten share das Script opsi-mac-client-agent\service_setup.sh Bestätigen Sie mit 2 x Enter 2. Das Skript kopiert die notwendigen Dateien in ein temporäres lokales Verzeichnis und startet dann zur eigentlichen Installation opsi- script. 3. Das Skript nimmt per opsi-Webservice Kontakt zum Server auf um serverseitig den Client zu erzeugen und den pckey zu erfahren. Dies erfolgt zunächst mit der in der config.ini eingetragenen user/password Kombination. Schlägt dies fehl, so erscheint ein Login-Fenster mit Service-URL (opsi-configserver), Benutzername und Passwort. Hier wird ein Benutzer benötigt, der Mitglied der Gruppe 'opsiadmin' ist. Möglich ist auch ein Benutzer, welcher nur die Methode host_createOpsiClient ausführen darf. Der Client benötigt nach der Installation ein Reboot um aktiv zu werden. Der Reboot wird nicht automatisch ausgelöst. 6.2.2. Verwendung von service_setup.sh auf macOS (Reperaturinstallation) • Loggen Sie sich auf dem Client ein. • Starten Sie das Terminal-Programm • Für die folgenden Befehle müssen Sie die folgenden Platzhalter ersetzen: - durch einen Usernamen der auf dem opsi-server bekannt ist. - durch das Passwort des . Sie können : auch weglassen, dann werden Sie nach dem Passwort gefragt - durch den Namen oder die IP-Nummer des opsi-servers • Bei der Erstinstallation hat opsi einen Versteckten Pseudo user Namens opsisetupadmin angelegt, in dessen 'Heimatverzeichnis' /var/opsisetupadmin sich auch das mount directory befindet. sudo su mount_smbfs -N //:@/opsi_depot /var/opsisetupadmin/opsi_depot cd /var/opsisetupadmin/opsi_depot/opsi-mac-client-agent ./service_setup.sh cd umount /var/opsisetupadmin/opsi_depot Beispiel: sudo su mount_smbfs -N //adminuser:linux123@sepia/opsi_depot /var/opsisetupadmin/opsi_depot cd /var/opsisetupadmin/opsi_depot/opsi-mac-client-agent ./service_setup.sh cd umount /var/opsisetupadmin/opsi_depot 1. Starten Sie das Script opsi-mac-client-agent\service_setup.sh
6. Integration vorhandener macOS-Clients in opsi 10 / 60 Bestätigen Sie mit 2 x Enter 2. Das Skript kopiert die notwendigen Dateien in ein temporäres lokales Verzeichnis und startet dann zur eigentlichen Installation opsi- script. 3. Das Skript nimmt per opsi-Webservice Kontakt zum Server auf um serverseitig den Client zu erzeugen und den pckey zu erfahren. Dies erfolgt zunächst mit der in der config.ini eingetragenen user/password Kombination. Schlägt dies fehl, so erscheint ein Login-Fenster mit Service-URL (opsi-configserver), Benutzername und Passwort. Hier wird ein Benutzer benötigt, der Mitglied der Gruppe 'opsiadmin' ist. Möglich ist auch ein Benutzer, welcher nur die Methode host_createOpsiClient ausführen darf. Der Client benötigt nach der Installation ein Reboot um aktiv zu werden. Der Reboot wird nicht automatisch ausgelöst. 6.3. Verwendung von opsi-deploy-client-agent für macOS Das opsi-deploy-client-agent Skript verteilt den opsi-client-agent direkt vom opsi-server auf die Clients. Es ist hiermit einfach möglich eine große Menge an Clients vom Server aus in eine opsi-Umgebung zu integrieren. Voraussetzung hierfür sind bei den Clients: • Administrativer User mit Passwort • ein aktivierter ssh Zugang Leider sind bei macOS die ssh Zugänge per default deaktiviert. Zur Verwendung des opsi-deploy-client-agent Befehls müssen diese Zugange daher erst aktiviert werden. Die kann interaktiv in den 'System preferences / sharing' gemacht werden: Auf der Kommandozeile kann dies wie folgt gemacht werden: sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
6. Integration vorhandener macOS-Clients in opsi 11 / 60 Eine Konrolle des aktuellen Status des ssh Zugangs ist möglich mit dem Befehl: sudo systemsetup -getremotelogin Die Deaktivierung des ssh Zugangs auf der Kommandozeile sieht wie folgt aus: sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist Das opsi-deploy-client-agent Skript findet sich unter /var/lib/opsi/depot/opsi-client-agent Führen Sie das Script mit 'root' Rechten aus. Falls das Script nicht ausführbar ist, so können Sie dieses Problem mit dem folgenden Befehl beheben: opsi-set-rights /var/lib/opsi/depot/opsi-client-agent/opsi-deploy-client-agent Das Skript erzeugt serverseitig den Client, kopiert die Installations-Dateien und Konfigurationsinformationen, wie bspw. den pckey, auf den Client und startet dort die Installation. Die Installation läuft im Hintergrund ohne das ein User davon etwas bemerken muß. Der Befehl opsi-deploy-client-agent hat eine Fülle von Aufrufparametern. Bei allen nachfolgenden Beispielen wird davon ausgegangen, das Sie in das Stammverzeichnis des opsi-client-agent Produktes gewechselt sind: cd /var/lib/opsi/depot/opsi-mac-client-agent Typische Aufrufe sind: • Für einen einzelnen Client: ./opsi-deploy-client-agent -v --user=uib uib-mmini1 Ergibt folgende Ausgabe: Password is required for deployment. Password: [5] [2021-02-04 16:43:43.121] [ ] Starting deployment to host uib-mmini1.uib.local (posix.py:84) [5] [2021-02-04 16:43:43.121] [ ] Querying for ip address of host uib-mmini1.uib.local (common.py:158) [5] [2021-02-04 16:43:43.122] [ ] Got ip address 192.168.10.70 from syscall (common.py:167) [5] [2021-02-04 16:43:43.123] [ ] Pinging host 192.168.10.70 ... (common.py:183) [5] [2021-02-04 16:43:44.146] [ ] Host 192.168.10.70 is up (common.py:194) [5] [2021-02-04 16:43:44.153] [ ] Patching config.ini (posix.py:91) [5] [2021-02-04 16:43:44.157] [ ] Copying installation scripts... (posix.py:107) [5] [2021-02-04 16:43:48.316] [ ] Running installation script... (posix.py:147) [5] [2021-02-04 16:43:53.382] [ ] opsi-client-agent successfully installed on uib-mmini1.uib.local (posix.py:176) [5] [2021-02-04 16:43:53.395] [ ] Restarting opsiclientd service on computer: uib-mmini1 (posix.py:331) [5] [2021-02-04 16:43:55.620] [ ] 1/1 deployments successfully (__init__.py:210) • Für eine Liste von Clients: ./opsi-deploy-client-agent -v --user=uib --hosts-from-file HOSTFILE.TXT --skip-existing-clients Hier ist HOSTFILE.TXT eine Datei mit einem Clientnamen (FQDN) pro Zeile. Soweit die Clients dem opsi-server noch nicht bekannt sind, wird versucht den opsi-mac-client-agent auf dieser Maschine zu installieren • Anzeigen alle Kommandozeilen Parameter: ./opsi-deploy-client-agent --help
7. Rollout existierender Produkte auf macOS 12 / 60 7. Rollout existierender Produkte auf macOS Für den Rollout von Software auf Clients muss auf diesen der opsi-client-agent installiert sein. Dieser kann auf bestehende Rechner ausgerollt werden. Nachfolgend wird die Management-Oberfläche opsi-configed verwendet, um Software auf Clients zu verteilen. 7.1. Inventarisierung mit dem localboot-Produkten hwaudit und swaudit Wählen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Clients den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configeds mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Produktkonfiguration, klicken Sie in die Spalte Angefordert für das Produkt hwaudit, daraufhin öffnet sich eine Liste/Dropdown-Menü und dort wählen Sie die Aktion setup. Wiederholen Sie das für das Produkt swaudit. Der Haken in der Icon-Menüleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi- server übermittelt, im Anschluss ist seine Farbe wieder grün. Starten Sie dann den Client (neu). Er sollte jetzt den opsi-client-agent starten und die Produkte hwaudit und swaudit installieren. Bei hwaudit und swaudit werden Hard- bzw. Softwareinformationen erhoben und zum opsi-server übermittelt. Die gesammelten Informationen werden unter den Tabs Hardwareinformationen bzw. Software-Inventur angezeigt. 7.2. Verteilung von opsi Standard Produkten: m-homebrew Dieses Produkt installiert das Paketverwaltungsprogramm homebrew welches von verschiedenen anderen opsi-Produkten für macOS verwendet wird, z.B. zur Installation von Java. Siehe auch: Das opsi Produkt m-homebrew Wählen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Clients den betreffenden Client aus. Wechseln Sie zum Reiter Produktkonfiguration, klicken Sie in die Spalte Angefordert für das Produkt m-homebrew, daraufhin öffnet sich eine Liste/Dropdown-Menü und dort wählen Sie die Aktion setup. Der Haken in der Icon-Menüleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi- server übermittelt, im Anschluss ist seine Farbe wieder grün. Starten Sie dann den Client (neu) oder pushen Sie die Installation per on_demand Er sollte jetzt den opsi-client-agent starten und das Produkt m-homebrew installieren. 7.3. Verteilung von opsi Standard Produkten: m-javavm Dieses Produkt installiert die Java Runtime Umgebung welche von verschiedenen anderen opsi-Produkten für macOS verwendet wird, z.B. opsi-configed, opsi-logviewer Wählen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Clients den betreffenden Client aus. Wechseln Sie zum Reiter Produktkonfiguration, klicken Sie in die Spalte Angefordert für das Produkt m-javavm, daraufhin öffnet sich eine Liste/Dropdown-Menü und dort wählen Sie die Aktion setup. Der Haken in der Icon-Menüleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi- server übermittelt, im Anschluss ist seine Farbe wieder grün. Starten Sie dann den Client (neu) oder pushen Sie die Installation per on_demand Er sollte jetzt den opsi-client-agent starten und das
7. Rollout existierender Produkte auf macOS 13 / 60 Produkt _m-javavm installieren. 7.4. Verteilung von opsi Standard Produkten: opsi-configed Achtung: m-homebrew und m-javavm müssen bereits installiert sein! Zu den Standard-Produkten gehört das Produkt opsi-configed welches das opsi Management Interface als Anwendung auf einem Rechner installiert. Da diese Anwendung eine Java-Anwendung ist, wird ein JavaRE mitgeliefert. Wählen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Clients den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configeds mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Produktkonfiguration, klicken Sie in die Spalte Angefordert für das Produkt opsi-configed, daraufhin öffnet sich eine Liste/Dropdown-Menü und dort wählen Sie die Aktion setup. Der Haken in der Icon-Menüleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi- server übermittelt, im Anschluss ist seine Farbe wieder grün. Starten Sie dann den Client (neu). Er sollte jetzt den opsi-client-agent starten und das Produkt opsi-configed installieren. Nach Abschluß der Installation sollten Sie unter Applications den Punkt opsi-configed finden.
8. Einbindung eigener Software in die Softwareverteilung von opsi 14 / 60 8. Einbindung eigener Software in die Softwareverteilung von opsi Die Installation von Software erfolgt bei opsi durch den opsi-client-agent und insbesondere durch das Script gesteuerte Setup Programm opsi-script. Daher muss zu jedem opsi-Produkt ein opsi-script-Script erstellt werden. Danach werden dieses Script, die Installationsdateien und die Metadaten zu einem opsi-Produkt gepackt, welches sich schließlich auf dem opsi-server installieren lässt. 8.1. Ein kleines Tutorial zur Erstellung eines opsi-script Scriptes 8.1.1. Einführung Dieses Tutorial kann keine Schulung oder das Studium der Handbücher ersetzen. Es dient nur dazu eine Einführung zu bekommen. Daher als erstes der Verweis auf weiterführende Quellen: Schulungen: Die uib GmbH bietet opsi-Schulungen in Mainz und Inhouse Schulungen an: https://uib.de/de/support-schulung/schulung/ Handbücher: https://uib.de/de/opsi-dokumentation/dokumentationen/ Besonders wichtig: opsi-script-reference-card und opsi-script-Handbuch Wiki (Scripte, Tipps, Links): https://forum.opsi.org/wiki Support Forum: siehe https://forum.opsi.org 8.1.2. Methoden der nicht interaktiven Softwareinstallation bei macOS Apple hat (im Gegensatz zu Microsoft) sehr früh die Methoden zur Software Installation standardisiert. Im Kern gibt es zwei Methoden: • application Directory: Es handelt sich um ein Verzeichnis nach dem Muster: .app Ein solches Verzeichnis wird aber im Finder nicht als Verzeichnis angezeigt, sondern als 'Anwendung'. Innerhalb dieses Verzeichnisses müssen sich nach einem bestimmten Muster die Dateien der Anwendung befinden. Ein typischer Aufbau wäre: opsi-script.app |--Contents |-Info.plist |-PkgInfo |-MacOS | |-opsi-script | |-opsi-script-gui | |-Resources |- (....) Ein solches Verzeichnis muß zur Installation nur in das Verzeichnis /Applications kopiert werden. Evtl. müssen noch Dateien im Verzeichnis MacOS ausführbar gemacht werden. Solche *.app Verzeichnisse werden zum Download zumeist gepackt angeboten. • PKG file: Diese Dateien enthalten Software die über einen speziellen Befehl installiert werden müssen. In beiden Fällen ist eine unattended (also nicht interaktive) Installation kein Problem.
8. Einbindung eigener Software in die Softwareverteilung von opsi 15 / 60 Häufig wird macOS Software in gepackten Formaten angeboten wie *.zip, *.dmg oder auch *.tgz. Alle bisher genannten Varianten können per opsi-script direkt installiert werden, außer *.tgz welches vorher ausgepackt werden muß. 8.1.3. Struktur eines opsi-script Skripts Im folgenden werden die wesentlichen Elemente eines opsi-script Skriptes an Beispielen für Windows erläutert. Zunächst ein Beispiel für ein einfaches opsi-script-Skript: [Actions] WinBatch_tightvnc_silent_install [WinBatch_tightvnc_silent_install] "%ScriptPath%\tightvnc-1.3.9-setup.exe" /silent Ein opsi-script-Skript besteht aus primären und sekundären Sektionen. Sektionen werden, wie von ini-Dateien bekannt, mit einem Sektions-Namen in eckigen Klammern eingeleitet. Die eigentlichen Arbeiten zur Software-Installation finden in den sekundären Sektionen statt, die von den primären Sektionen aufgerufen werden. Die sekundären Sektionen sind „Themen-spezifisch“ und verfügen jeweils über eine spezielle Syntax. Der Sektionsname einer sekundären Sektion beginnt mit deren Typ, gefolgt von einem frei definierbaren Namen. Im Beispiel ruft die primären Sektion [Actions] eine sekundäre Sektion [WinBatch_7z_silent_install] auf. Die sekundäre Sektion ist vom Typ WinBatch. Der Inhalt einer WinBatch-Sektion wird über die Windows-API ausgeführt. In diesem Fall wird also das Setup-Programm tightvnc-1.3.9-setup.exe mit dem Parameter /silent gestartet. 8.1.4. Primäre Sektionen Actions/Aktionen Die [Actions] Sektion ist das eigentliche Hauptprogramm. Hier beginnt die Skript-Verarbeitung. Sub-Sektionen Programmabschnitte, die wiederholt benötigt werden, können in Sub-Sektionen (Unterprogramme) ausgelagert werden. Es besteht die Möglichkeit Sub-Sektionen in externe Dateien auszulagern. Die primären Sektionen sind das Hauptprogramm in dem der Ablauf des Skripts gesteuert wird. Hierzu gibt es: • Variablen: Strings und Stringlisten • if elseif else endif Anweisungen • for Schleifen über Stringlisten • Funktionen
8. Einbindung eigener Software in die Softwareverteilung von opsi 16 / 60 Abbildung 1. Vermeidung doppelten Codes über ausgegliederte Sub 8.1.5. Wichtige sekundäre Sektionen Files Datei-Operationen, wie: • kopieren (mit Versionskontrolle, rekursiv …) • löschen • Verzeichnisse anlegen • … WinBatch Dient zum Aufrufen von Programmen über die Windows-API. Beispielsweise werden Aufrufe von Setup-Programmen im silent mode in diesen Sektionen durchgeführt. ShellInAnIcon Der Inhalt dieser Sektion wird der Betriebssystemtypischen shell zur Ausführung übergeben. Diese shell ist bei Windows die cmd.exe, bei Linux und bei macOS die bash. Hier können also normale Batch-Skripte abgelegt werden. Namensvarianten von ShellInAnIcon mit identischem Verhalten sind Shellbatch, DOSBatch und DOSInAnIcon. ExecWith Der Inhalt dieser Sektionen wird einem externen Programm (Interpreter) zur Ausführung übergeben. Beispielsweise können über ExecWith AutoIt-Skripte http://www.autoitscript.com direkt in das opsi-script-Skript integriert werden. Registry Die Registry-Sektionen dienen dem Bearbeiten der Registry. LinkFolder LinkFolder-Sektionen dienen dem Erstellen und Entfernen von Verknüpfungen. Es können beispielsweise Verknüpfungen auf dem Desktop oder im Startmenü erstellt werden. 8.1.6. Globale Konstanten Globale Konstanten sind Text-Platzhalter, die in primären und sekundären Sektionen eingesetzt werden können und zur Laufzeit textuell durch ihre Werte ersetzt werden. Über die Verwendung von Platzhaltern kann sichergestellt werden, dass Pfade in unterschiedlichen Umgebungen (z.B. auf System mit
8. Einbindung eigener Software in die Softwareverteilung von opsi 17 / 60 unterschiedlichen Sprachen oder Betriebssystem-Versionen) richtig gesetzt sind. Beispiele: %ProgramFiles32Dir% c:\programme %Systemroot% c:\windows %System% c:\windows\system32 %opsiTmpDir% c:\ %Scriptpath% 8.1.7. Zweites Beispiel: tightvnc Zur Erläuterung nun ein einfaches Script zur Installation von tightvnc. Eigentlich würde dieses Script mit dem Aufruf der Silent-Installation in der Winbatch-Sektion auskommen. Bei einer wiederholten Installation erscheint hier (wegen des Neustarts eines laufenden Services) jedoch ein interaktiver Dialog. Dieses Dialog-Fenster wird (so es auftaucht) mit Hilfe von AutoIt geschlossen. [Actions] Message "Installiere tightvnc 1.3.9 ..." ExecWith_autoit_confirm "%ScriptPath%\autoit3.exe" WINST /letThemGo WinBatch_tightvnc_silent_install KillTask "autoit3.exe" [WinBatch_tightvnc_silent_install] "%ScriptPath%\tightvnc-1.3.9-setup.exe" /silent [ExecWith_autoit_confirm] ; Wait for the confirm dialog which only appears if tightvnc was installed before as service ; Waiting for the window to appear WinWait("Confirm") ; Activate (move focus to) window WinActivate("Confirm") ; Choose answer no Send("N") 8.1.8. Elementare Befehle für primäre Sektionen String-Variable Variablen-Deklaration DefVar [= ] Variablen-Zuweisung Set = Beispiel: DefVar $ProductId$ Set $ProductId$ = "firefox" oder DefVar $ProductId$ = "firefox"
8. Einbindung eigener Software in die Softwareverteilung von opsi 18 / 60 Stringvariablen werden in primären und sekundären Sektionen unterschiedlich behandelt. In primären Sektionen sind Stringvariablen eigenständige Objekte. Nur hier können sie deklariert und ihnen Werte zugewiesen werden. Entsprechend ist die Verbindung von Variablen und Strings zu einem Stringausdruck mit einem Operator "+" durchzuführen. Beispiel: "Installing "+ $ProductId$ +" …" In sekundären Sektionen werden Stringvariablen vor der Ausführung der Sektion durch den Inhalt der Variable ersetzt. Beispiel: "Installing $ProductId$ …" Dies ist zu beachten, wenn entsprechende Stringausdrücke per Cut&Paste im Skript kopiert werden. Der Vorteil dieser Konstruktion ist, dass in Sektionen die außerhalb des opsi-script ausgeführt werden (DosBatch / Execwith) problemlos mit opsi-script-Variablen gearbeitet werden kann. Message / ShowBitmap Zur Textausgabe während der Installation: Message Beispiel: Message "Installing "+ $ProductId$ +" ..." Zur Ausgabe einer Grafik während der Installation: ShowBitmap Beispiel: ShowBitmap "%ScriptPath%\python.png" "Python" if [elseif] [else] endif Syntax: if ;statement(s) [elseif ;statement(s)] [ else ;statement(s) ] endif Funktionen HasMinimumSpace Prüft auf freien Platz auf der Festplatte. FileExists Prüft auf Existenz einer Datei oder eines Verzeichnisses. Fehler, Logging und Kommentare Kommentarzeichen ';' Zeilen, die mit einem Semikolon (';') beginnen, werden nicht interpretiert. Comment Schreibt eine Kommentar-Meldung in die Log-Datei.
8. Einbindung eigener Software in die Softwareverteilung von opsi 19 / 60 LogError Schreibt eine Fehlermeldung in die Log-Datei. IsFatalError Bricht die Ausführung des laufenden Skriptes ab und meldet die Installation als gescheitert zurück. Bedingung zur Ausführung requiredOpsiscriptVersion gibt die (mindestens) benötigte opsi-script Version an. Weitere wichtige opsi-script Funktionen Einen Überblick über die opsi-script Funktionen gibt die Referencecard: https://download.uib.de/opsi_stable/doc/opsi-script-reference-card-en.pdf Eine detaillierte Dokumentation ist im opsi-script Handbuch zu finden: http://download.uib.de/opsi_stable/doc/opsi-script-manual-de.pdf Hier noch einige Hinweise auf besonders wichtige Elemente: Stringlisten: Stringlisten sind sehr mächtig, insbesondere zur Auswertung von Ausgaben externer Programme. Lesen Sie dazu die opsi-script-Dokus. ExitWindows: Neustart/Herunterfahren des Systems und Beendung des opsi-script. • ExitWindows /Reboot Rechner-Neustart nach Abschluss des laufenden Skriptes. • ExitWindows /ImmediateReboot Sofortiger Neustart. • ExitWindows /ImmediateLogout Sofortige Beendigung der Skript-Bearbeitung und Beendung des opsi-script. Product-Properties: Für manche Produkte ist es erforderlich, Optionen zur Verfügung zu stellen. Diese werden zur Laufzeit Client-spezifisch ausgewertet. Wie solche Properties erstellt werden, ist im Kapitel Erstellen eines opsi-Produkt-Pakets beschrieben. Der Zugriff auf die Werte der Properties geschieht über die Funktion GetProductProperty: if GetProductProperty("example-property", "no") = "yes" Files_copy_extra_files endif Encoding: Schreiben Sie Ihre Scripte in UTF-8 Encoding und setzen sie die Zeile encoding=utf8 an den Anfang der Datei- Spezielle Kommandos für macOS • GetOS // liefert: Linux or Windows_NT or macOS [W/L/M] • getMacosVersionInfo [M] • getMacosVersionMap [M] Siehe auch: https://download.uib.de/opsi_stable/doc/html/opsi-script-manual/opsi-script-manual.html#opsi-script-rc-macos-specific
8. Einbindung eigener Software in die Softwareverteilung von opsi 20 / 60 In den folgenden Kapiteln werden spezielle opsi macOS Befehle zur Installation von Software vorgestellt welche aus der opsi-script Library uib_macosinstalllib stammen. Diese Dokumentation ist in Englisch, da sie direkt aus dem Quellcode automatisch generiert wurde. Documentation of opsi library: uib_macosinstalllib.opsiscript • Email: d.oertel@uib.de • Version: 1.0 • Copyright: AGPLv3 Documentation of local function install_macos_app Definition install_macos_app($myapp$ : string) : string Description try to install the app given by $myapp$ • Parameter: $myapp$ - Type: String - Calltype: CallByValue - Parameter $myapp$ Description: string with path to app to install • Returns: Returns string "true" if all is ok • OnError: Returns string "false"; error counter increased ; Error messages in the log • References: [install_macos_pkg] [install_macos_dmg] [install_macos_zip] [install_macos_generic] • Author: detlef oertel • Date: 28.12.2020 • Email: d.oertel@uib.de • Version: 1.0 • Copyright: AGPLv3 Example: [Actions] importlib "uib_macosinstalllib" DefVar $installfile$ DefVar $installresult$ comment "we have a *.app (directory) and install with install_macos_app" set $installfile$ = "%scriptpath%/files/my_macos_app.app" set $installresult$ = install_macos_app($installfile$) if stringtobool($installresult$) comment "installation succseeded" else LogError "installation failed" endif Documentation of local function install_macos_pkg Definition install_macos_pkg($mypkg$ : string) : string
8. Einbindung eigener Software in die Softwareverteilung von opsi 21 / 60 Description try to install the pkg file given by $mypkg$ • Parameter: $mypkg$ - Type: String - Calltype: CallByValue - Parameter $mypkg$ Description: string with path to pkg file to install • Returns: Returns string "true" if all is ok • OnError: Returns string "false"; error counter increased ; Error messages in the log • References: [install_macos_app] [install_macos_dmg] [install_macos_zip] [install_macos_generic] • Author: detlef oertel • Date: 28.12.2020 • Email: d.oertel@uib.de • Version: 1.0 • Copyright: AGPLv3 Example: [Actions] importlib "uib_macosinstalllib" DefVar $installfile$ DefVar $installresult$ comment "we have a *.pkg and install with install_macos_pkg" set $installfile$ = "%scriptpath%/files/my_macos_app.pkg" set $installresult$ = install_macos_pkg($installfile$) if stringtobool($installresult$) comment "installation succseeded" else LogError "installation failed" endif Documentation of local function install_macos_dmg Definition install_macos_dmg($mydmg$ : string) : string Description try to install the dmg file given by $mydmg$ • Parameter: $mydmg$ - Type: String - Calltype: CallByValue - Parameter $mydmg$ Description: string with path to dmg file to install • Returns: Returns string "true" if all is ok • OnError: Returns string "false"; error counter increased ; Error messages in the log • References: [install_macos_app] [install_macos_pkg] [install_macos_zip] [install_macos_generic] • Author: detlef oertel • Date: 28.12.2020 • Email: d.oertel@uib.de • Version: 1.0
8. Einbindung eigener Software in die Softwareverteilung von opsi 22 / 60 • Copyright: AGPLv3 Example: [Actions] importlib "uib_macosinstalllib" DefVar $installfile$ DefVar $installresult$ comment "we have a *.dmg and install with install_macos_dmg" set $installfile$ = "%scriptpath%/files/my_macos_app.dmg" set $installresult$ = install_macos_dmg($installfile$) if stringtobool($installresult$) comment "installation succseeded" else LogError "installation failed" endif Documentation of local function install_macos_zip Definition install_macos_zip($myzip$ : string) : string Description try to install the zip file given by $myzip$ unzips the file and try to find a installable part (*.app, *.pkg, *.dmg) and try to install this • Parameter: $myzip$ - Type: String - Calltype: CallByValue - Parameter $myzip$ Description: string with path to zip file to install • Returns: Returns string "true" if all is ok • OnError: Returns string "false"; error counter increased ; Error messages in the log • References: [install_macos_app] [install_macos_dmg] [install_macos_pkg] [install_macos_generic] • Author: detlef oertel • Date: 28.12.2020 • Email: d.oertel@uib.de • Version: 1.0 • Copyright: AGPLv3 Example: [Actions] importlib "uib_macosinstalllib" DefVar $installfile$ DefVar $installresult$ comment "we have a *.zip and install with install_macos_zip" set $installfile$ = "%scriptpath%/files/my_macos_app.zip" set $installresult$ = install_macos_zip($installfile$) if stringtobool($installresult$) comment "installation succseeded" else LogError "installation failed" endif
8. Einbindung eigener Software in die Softwareverteilung von opsi 23 / 60 Documentation of local function install_macos_generic Definition install_macos_generic($myfile$ : string) : string Description try to install the file given by $myfile$ Checks if the file is a well known installable (*.app, *.pkg, *.dmg, *.zip) and try to install this • Parameter: $myfile$ - Type: String - Calltype: CallByValue - Parameter $myfile$ Description: string with path to pkg file to install • Returns: Returns string "true" if all is ok • OnError: Returns string "false"; error counter increased ; Error messages in the log • References: [install_macos_app] [install_macos_dmg] [install_macos_zip] [install_macos_pkg] • Author: detlef oertel • Date: 28.12.2020 • Email: d.oertel@uib.de • Version: 1.0 • Copyright: AGPLv3 Example: see: install_macos_generic [Actions] importlib "uib_macosinstalllib" DefVar $installfile$ DefVar $installresult$ comment "we have a *.* and install with install_macos_generic" set $installfile$ = "%scriptpath%/files/opsi-script.app" set $installresult$ = install_macos_generic($installfile$) if stringtobool($installresult$) comment "installation succseeded" else Error "installation failed" endif 8.1.9. Drittes Beispiel: macOS-Template m-opsi-template Dieses Template können Sie sich mit dem opsi-setup-detector erstellen.
8. Einbindung eigener Software in die Softwareverteilung von opsi 24 / 60 define_vars_multi.opsiscript: Variablen deklaration ; ---------------------------------------------------------------- ; This is a opsi-script file. ; See https://opsi.org https://uib.de ; This code was originally created by opsi-setup-detector 4.2.0.10 ; ---------------------------------------------------------------- ; ------------------------------------- ; include file for opsi-setup-detector products ; Define all variables here ;--------------------------- DefVar $arch$ DefVar $distCodeName$ DefVar $distRelease$ DefVar $distroName$ DefVar $distrotype$ DefVar $errorstring$ DefVar $exitcode$ DefVar $iconfile$ DefVar $installCommand$ DefVar $installSuccess$ DefVar $installdir$ DefVar $installdir1$ DefVar $installdir2$ DefVar $installerfile$ DefVar $licensekey$ DefVar $licensepool$ DefVar $licenserequired$ DefVar $minimumspace$ DefVar $msiid$ DefVar $oldProgFound$ DefVar $os$ DefVar $osshort$ DefVar $productid$ DefVar $targetfile$ DefVar $tmpstr$ DefVar $uninstallprogram$ DefStringlist $ListOfPackageNames$ DefStringList $osinfomap$
8. Einbindung eigener Software in die Softwareverteilung von opsi 25 / 60 setup.opsiscript: Installationsscript ; ---------------------------------------------------------------- ; This is a opsi-script file. ; See https://opsi.org https://uib.de ; This code was originally created by opsi-setup-detector 4.2.0.10 ; ---------------------------------------------------------------- encoding=utf8 [Actions] requiredOpsiscriptVersion >= "4.12.4.23" importlib "uib_exitcode.opsiscript" importlib "osd-lib.opsiscript" importlib "uib_macosinstalllib.opsiscript" ; All variables are defined here: include_insert "define_vars_multi.opsiscript" ; ---------------------------------------------------------------- ; Please edit the following values: ; ---------------------------------------------------------------- ; $ProductId$ is the name of the product in opsi, only lower letters, no umlauts, no white spaces, use '-' as a seperator Set $ProductId$ = "m-opsi-template" Set $MinimumSpace$ = "1 MB" ; the path were we find the product after the installation ;Set $InstallDir$ = "/Applications/" Set $InstallDir$ = "/Applications/" Set $LicenseRequired$ = "false" Set $LicensePool$ = "" ; ---------------------------------------------------------------- set $OS$ = GetOS if not(($OS$ = "macos")) logError "Installation aborted: wrong OS version: only MacOS" isFatalError "wrong OS" endif comment "Show product picture" ShowBitmap "%ScriptPath%/" + $ProductId$ + ".png" $ProductId$ if FileExists("%ScriptPath%/delsub.opsiscript") comment "Start uninstall sub section" Sub "%ScriptPath%/delsub.opsiscript" endif Message "Installing " + $ProductId$ + " ..." if $LicenseRequired$ = "true" comment "Licensing required, reserve license and get license key" set $LicenseKey$ = get_licensekey_byPool($LicensePool$) endif comment "Start setup " ChangeDirectory "%SCRIPTPATH%/files1" ;---------------------------------------------- set $installSuccess$ = install_macos_generic("%SCRIPTPATH%/files1/") ;---------------------------------------------- if $installSuccess$ = "false" LogError "Installation failed" isfatalerror "Installation failed" else Comment "Installation success" endif comment "Copy files" Files_install [Files_install] ; Example of recursively copying some files into the installation directory: ; ; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" ; ---------------------------------------------------------------- ; ----------------------------------------------------------------
8. Einbindung eigener Software in die Softwareverteilung von opsi 26 / 60 delsub.opsiscript: Ausgelagerte Deinstallations-Sub-Sektion ; ---------------------------------------------------------------- ; This is a opsi-script file. ; See https://opsi.org https://uib.de ; This code was originally created by opsi-setup-detector 4.2.0.10 ; ---------------------------------------------------------------- encoding=utf8 Message "Check for existing installation of " + $ProductId$ + " ..." comment "Start the Uninstall check:" set $oldProgFound$ = "false" if directoryExists($InstallDir$) set $oldProgFound$ = "true" endif if $oldProgFound$ = "true" Message "Uninstalling " + $ProductId$ + " ..." if not(($InstallDir$ = '') or ($InstallDir$ = 'unknown') or ($InstallDir$ = '/Applications/')) Files_uninstall endif endif [Files_uninstall] del -sf "$InstallDir$/" ;----------------------------------------------------- uninstall.opsiscript: Deinstallations-Skript ; ---------------------------------------------------------------- ; This is a opsi-script file. ; See https://opsi.org https://uib.de ; This code was originally created by opsi-setup-detector 4.2.0.10 ; ---------------------------------------------------------------- encoding=utf8 [Actions] requiredOpsiscriptVersion >= "4.12.4.23" importlib "uib_exitcode.opsiscript" importlib "osd-lib.opsiscript" importlib "uib_macosinstalllib.opsiscript" ; All variables are defined here: include_insert "define_vars_multi.opsiscript" ; ---------------------------------------------------------------- ; Please edit the following values: ; ---------------------------------------------------------------- ; $ProductId$ is the name of the product in opsi, only lower letters, no umlauts, no white spaces, use '-' as a seperator Set $ProductId$ = "m-opsi-template" ; the path were we find the product after the installation ;Set $InstallDir$ = "/Applications/" Set $InstallDir$ = "/Applications/" Set $LicenseRequired$ = "false" Set $LicensePool$ = "" ; ---------------------------------------------------------------- set $OS$ = GetOS if not(($OS$ = "macos")) logError "Installation aborted: wrong OS version: only macos" isFatalError "wrong OS" endif comment "Show product picture" ShowBitmap "%ScriptPath%/" + $ProductId$ + ".png" $ProductId$ Message "Uninstalling " + $ProductId$ + " ..." if FileExists("%ScriptPath%/delsub.opsiscript") comment "Start uninstall sub section" Sub "%ScriptPath%/delsub.opsiscript" endif if $LicenseRequired$ = "true" comment "Licensing required, free license used" Set $tmpstr$ = FreeLicense($LicensePool$) endif
Sie können auch lesen