opsi-admin -d method host_createOpsiClient testclient.domain.local "null" "Testclient" "" 00:0c:29:12:34:56 192.168.0.5
opsi-Management Interface
Vorstellung der Oberfläche
Grundinstallation des Servers
Anpassung des Servers: Konfiguration des Netzwerks, Passwortvergabe, Aktualisierung des Servers
(apt-get update, apt-get upgrade)
Download und Installation der notwendigen opsi-Produkte für die Clients
(opsi-package-updater)
Vervollständigen der Betriebssystem-Basispakete für Windows von den Original-CDs
opsi-admin -d method host_createOpsiClient testclient.domain.local "null" "Testclient" "" 00:0c:29:12:34:56 192.168.0.5
Vervollständigen der Basispakete für Windows unter:
/var/lib/opsi/depot/win7-x64/ |-installfiles/ Installations files |-winpe/ Preinstallation Environment |-opsi/ Scripte und Templates by opsi.org | |-postinst.d/ Scripte nach OS-Install by opsi.org | |-unattend.xml.template Template by opsi.org |-custom/ Scripte und Templates by customer | |-postinst.d/ Scripte nach OS-Install by customer | !-unattend.xml unattend.txt by customer |-drivers/ drivers Verzeichnis | |-drivers/ (Platz für allg. Treiber Packs) |-additional/ (Für manuell zugeordnete Treiber) |-byAudit/ Modell spezifische Treiber welche |-<vendor> über die Hardwareinventarisierung |-<model> zugeordnet werden |-preferred/ (geprüfte Treiber) |-exclude/ (ausgeschlossene Treiber) | |-pciids/ Symlinkbaum zu Treibern | |-vendors/ Symlinkbaum zu Treibern | |-classes/ Symlinkbaum zu Treibern | |-usbids/ Symlinkbaum zu Treibern | |-hdaudioids/ Symlinkbaum zu Treibern | |-pci.ids PCI-IDs DB | |-usb.ids USB-IDs DB |-setup.py Installationsscript |-<productid>_<version>.control Meta Daten (nur zur Info) |-<productid>.files Dateiliste (automatisch erstellt) |-create_driver_links.py Script zur Treiberverwaltung |-show_drivers.py Script zur Treiberverwaltung |-extract_driver_pack.py Script zur Treiberverwaltung
Unattended / Silent Setup
Interaktives Setup mit automatisierten Antworten
Analysieren und Neu-Paketieren
[Actions] WinBatch_tightvnc_silent_install [WinBatch_tightvnc_silent_install] "%ScriptPath%\tightvnc-1.3.9-setup.exe" /silent
if
else
endif
Anweisungen
for
Schleifen über Stringlisten
Beispiele für Globale Konstanten:
%ProgramFiles32Dir%
c:\programme
%Systemroot%
c:\windows
%System%
c:\winnt\system32
%Systemdrive%
c:\
%Scriptpath%
<Pfad zu laufendem Script>
; Copyright (c) uib gmbh (www.uib.de) ; This sourcecode is owned by uib ; and published under the Terms of the General Public License. ; credits: http://www.opsi.org/en/credits/ [Actions] requiredWinstVersion >= "4.11.4.6" ScriptErrorMessages=off DefVar $MsiId$ DefVar $UninstallProgram$ DefVar $LogDir$ DefVar $ProductId$ DefVar $MinimumSpace$ DefVar $InstallDir$ DefVar $ExitCode$ DefVar $LicenseRequired$ DefVar $LicenseKey$ DefVar $LicensePool$ DefVar $displayName32$ DefVar $displayName64$ DefStringlist $msilist$ Set $LogDir$ = "%opsiLogDir%" ; ---------------------------------------------------------------- ; - Please edit the following values - ; ---------------------------------------------------------------- ;$ProductId$ should be the name of the product in opsi ; therefore please: only lower letters, no umlauts, ; no white space use '-' as a seperator Set $ProductId$ = "opsi-template" Set $MinimumSpace$ = "1 MB" ; the path were we find the product after the installation Set $InstallDir$ = "%ProgramFiles32Dir%\<path to the product>" Set $LicenseRequired$ = "false" Set $LicensePool$ = "p_" + $ProductId$ ; ---------------------------------------------------------------- if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$)) LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$ isFatalError "No Space" ; Stop process and set installation status to failed else comment "Show product picture" ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$ if FileExists("%ScriptPath%\delsub32.opsiscript") comment "Start uninstall sub section" Sub "%ScriptPath%\delsub32.opsiscript" endif Message "Installing " + $ProductId$ + " ..." if $LicenseRequired$ = "true" comment "Licensing required, reserve license and get license key" Sub_get_licensekey endif comment "Start setup program" ChangeDirectory "%SCRIPTPATH%" Winbatch_install Sub_check_exitcode comment "Copy files" Files_install /32Bit comment "Patch Registry" Registry_install /32Bit comment "Create shortcuts" LinkFolder_install endif [Winbatch_install] ; Choose one of the following examples as basis for your installation ; You can use $LicenseKey$ var to pass a license key to the installer ; ; === Nullsoft Scriptable Install System ================================================================ ; "%ScriptPath%\Setup.exe" /S ; ; === MSI package ======================================================================================= ; You may use the parameter PIDKEY=$Licensekey$ ; msiexec /i "%ScriptPath%\some.msi" /l* "$LogDir$\$ProductId$.install_log.txt" /qb-! ALLUSERS=1 REBOOT=ReallySuppress ; ; === InstallShield + MSI===================================================================================== ; Attention: The path to the log file should not contain any whitespaces ; "%ScriptPath%\setup.exe" /s /v" /l* $LogDir$\$ProductId$.install_log.txt /qb-! ALLUSERS=1 REBOOT=ReallySuppress" ; "%ScriptPath%\setup.exe" /s /v" /qb-! ALLUSERS=1 REBOOT=ReallySuppress" ; ; === InstallShield ===================================================================================== ; Create setup.iss answer file by running: setup.exe /r /f1"c:\setup.iss" ; You may use an answer file by the parameter /f1"c:\setup.iss" ; "%ScriptPath%\setup.exe" /s /sms /f2"$LogDir$\$ProductId$.install_log.txt" ; ; === Inno Setup ======================================================================================== ; http://unattended.sourceforge.net/InnoSetup_Switches_ExitCodes.html ; You may create setup answer file by: setup.exe /SAVEINF="filename" ; You may use an answer file by the parameter /LOADINF="filename" ; "%ScriptPath%\setup.exe" /sp- /silent /norestart /nocancel /SUPPRESSMSGBOXES [Files_install] ; Example of recursively copying some files into the installation directory: ; ; copy -s "%ScriptPath%\files\*.*" "$InstallDir$" [Registry_install] ; Example of setting some values of an registry key: ; ; openkey [HKEY_LOCAL_MACHINE\Software\$ProductId$] ; set "name1" = "some string value" ; set "name2" = REG_DWORD:0001 ; set "name3" = REG_BINARY:00 af 99 cd [LinkFolder_install] ; Example of deleting a folder from AllUsers startmenu: ; ; set_basefolder common_programs ; delete_subfolder $ProductId$ ; ; Example of creating an shortcut to the installed exe in AllUsers startmenu: ; ; set_basefolder common_programs ; set_subfolder $ProductId$ ; ; set_link ; name: $ProductId$ ; target: <path to the program> ; parameters: ; working_dir: $InstallDir$ ; icon_file: ; icon_index: ; end_link ; ; Example of creating an shortcut to the installed exe on AllUsers desktop: ; ; set_basefolder common_desktopdirectory ; set_subfolder "" ; ; set_link ; name: $ProductId$ ; target: <path to the program> ; parameters: <some_param> ; working_dir: $InstallDir$ ; icon_file: <path to icon file> ; icon_index: 2 ; end_link [Sub_check_exitcode] comment "Test for installation success via exit code" set $ExitCode$ = getLastExitCode ; informations to exit codes see ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx ; http://msdn.microsoft.com/en-us/library/aa368542.aspx if ($ExitCode$ = "0") comment "Looks good: setup program gives exitcode zero" else comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ if ($ExitCode$ = "1605") comment "ERROR_UNKNOWN_PRODUCT 1605 This action is only valid for products that are currently installed." comment "Uninstall of a not installed product failed - no problem" else if ($ExitCode$ = "1641") comment "looks good: setup program gives exitcode 1641" comment "ERROR_SUCCESS_REBOOT_INITIATED 1641 The installer has initiated a restart. This message is indicative of a success." else if ($ExitCode$ = "3010") comment "looks good: setup program gives exitcode 3010" comment "ERROR_SUCCESS_REBOOT_REQUIRED 3010 A restart is required to complete the install. This message is indicative of a success." else logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$ isFatalError endif endif endif endif
Die wesentlichen Befehle zum Erstellen und Installieren eines opsi-Produktes sind:
opsi-newprod
opsi-makepackage
opsi-package-manager -i <opsi-product-file>
Verzeichnis-Struktur eines Paketes (z.B. über opsi-newprod
)
7-zip.msi 7-zip.png setup32.opsiscript delsub32.opsiscript unistall32.opsiscript
control
in der sich die Metadaten des Produkts befinden und
preinst
und postinst
, die vor bzw. nach der Installationcontrol preinst postinst
opsi-makepackage
/var/lib/opsi/workbench/7zip$ ll drwxrws--- 3 opsiconfd pcpatch 4096 Feb 6 11:43 CLIENT_DATA drwxrws--- 2 opsiconfd pcpatch 4096 Feb 6 11:42 OPSI var/lib/opsi/workbench/7zip$ opsi-makepackage var/lib/opsi/workbench/7zip$ ll drwxrws--- 3 opsiconfd pcpatch 4096 Feb 6 11:43 CLIENT_DATA drwxrws--- 2 opsiconfd pcpatch 4096 Feb 6 11:42 OPSI -rw-rw-r-- 1 opsiconfd pcpatch 2539008 Feb 6 11:43 7zip_18.01-1.opsi
var/lib/opsi/workbench/7zip$ opsi-package-manager -i 7zip_18.01-1.opsi
Auf dem Server:
Auf dem Client:
Freigegebene Erweiterungen:
/
#