OPSI INSTALL FAQ AUF DEBIAN SQUEEZE

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]

Hier unsere Server/Client Beispiele dieser Anleitung:

OPSI Server, Debian Squeeze 6.0x, IP 192.168.0.1, Hostname opsi.oppserver.net opsi
Client Test (VirtualBox), MAC Adresse 08:00:27:48:d9:74, IP 192.168.0.200, Hostname opsi-test, Beschreibung opsi virtualbox test
Client 1, MAC Adresse 00:50:fc:6b:9a:e3, IP 192.168.0.2, Hostname rechner001, Beschreibung Windows XP Pro x86 001
Client 2, MAC Adresse 00:17:31:65:6c:2d, IP 192.168.0.3, Hostname rechner002, Beschreibung Windows 7 Pro x86 001
Client 3, MAC Adresse 00:18:f3:b0:04:9f, IP 192.168.0.4, Hostname rechner003, Beschreibung Windows 7 Pro x64 001
Router, IP 192.168.0.253, Hostname router
(Bei den Clients keine Hostnames laenger als 15 Zeichen nutzen, da dies zu einem Fehler bei der Installation fuehrt)


Als erstes als User root einloggen:

sudo -s oder nur su


Pakete die nach der Grundinstallation mit Desktopumgebung (de)installiert werden sollten/muessen:

aptitude purge network-manager network-manager-gnome
aptitude install sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar linux-headers-`uname -r` subversion subversion-tools cvs mercurial ssh openssl wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient smbfs samba-doc mysql-server


Pruefen Sie den Eintrag fuer den opsi-server in der Datei /etc/hosts oder aber die Ausgabe von

getent hosts $(hostname -f)

Das Ergebnis sollte beispielsweise so aussehen:

192.168.0.1 opsi.oppserver.net opsi

Sieht das Ergebnis nicht so aus (enthaelt z.B. 127.0.0.1 oder localhost) dann muessen Sie Ihre /etc/hosts oder Namensaufloesung zunaechst korrigieren.


echo "deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0 ./" > /etc/apt/sources.list.d/opsi.sources.list
wget http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0/Release.key -O - | apt-key add -
aptitude update
aptitude safe-upgrade
aptitude remove tftpd
update-inetd --remove tftpd
aptitude install opsi-atftpd opsi-depotserver opsi-configed

Da die OPSI Services nicht automatisch mitstarten, obwohl sie in den jeweiligen runleveln sind, habe ich folgendes in der /etc/rc.local vor dem exit 0 hinzugefuegt:

/etc/init.d/opsiconfd restart
/etc/init.d/opsipxeconfd restart


Bei der Installation des Tftpd werden Sie evtl. nach dem Tftp-Basisverzeichnis gefragt. Beantworten Sie diese Frage mit /tftpboot. Die Fragen nach Multicast Support koennen Sie mit Ja beantworten. Bei der Installation des Paketes opsiconfd werden Sie nach Angaben zur Erstellung eines SSL-Zertifikates gefragt.

Bei der Installation des opsi-servers werden Sie gefragt, ob die dhcpd.conf und die smb.conf gepatcht werden darf. Beantworten Sie die Fragen mit Ja.

Nun legen wir ein neues Passwort fuer den User pcpatch fest:

passwd pcpatch
smbpasswd -a pcpatch
opsi-admin -d task setPcpatchPassword

Falls noch kein USER angelegt wurde, wird er jetzt erstellt, sonst weiter bei Gruppenmitgliedschaft eingerichten:

useradd -m -s /bin/bash USER

Wir vergeben nun Passwoerter fuer Unix:

passwd USER

Gruppenmitgliedschaft eingerichten:

adduser root opsiadmin
adduser USER opsiadmin

Wir vergeben nun Passwoerter fuer Samba:

smbpasswd -a USER

Alle User, die Produkte packen (opsi-makeproductfile), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, muessen zusaetzlich in der Gruppe pcpatch sein:

adduser USER pcpatch

root darf dies alles ohnehin und muss daher nicht explizit in die Gruppe aufgenommen werden.


Holen Sie sich die aktuellen notwendigen opsi-Pakete im opsi-Paketformat. Die Pakete finden Sie unter http://download.uib.de/opsi4.0/products/ Nach dem Download muessen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i <paketname>.opsi installiert werden. Sie koennen das interaktiv fuer jedes einzelne Paket tun. Wir empfehlen Ihnen dies automatisiert zu tun. Hierzu gibt es das Werkzeug opsi-product-updater, welches wie in /etc/opsi/opsi-product-updater.conf konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert.

Z.B.:

[wol]
active = true
[repository_uib]
dirs = opsi4.0/products/localboot, opsi4.0/products/netboot, opsi4.0/testing
autoInstall = true
autoSetup = true

Danach einfach folgenden Befehl ausfuehren und die Pakete werden installiert:

opsi-product-updater -i -vv

Sollte der opsi-product-updater Befehl scheitern, so muss evtl. ein Proxy in der Konfigurationsdatei eingetragen werden unter

[repository_uib]
proxy =


Wenn Sie das opsi Managementinterface opsi-configed direkt auf dem Server ausfuehren moechten, so benoetigen Sie eine Java Laufzeitumgebung. Die Laufzeitumgebung von Sun/Oracle ist die am besten getestete. Allerdings ist diese unter Linux nur noch eingeschraenkt zu beziehen. Als Alternative bietet sich das OpenJDK an. Meinen Erfahrungen nach funktioniert hier zumindest der Start ueber Webstart und als Applikation.

aptitude install sun-java6-jdk sun-java6-plugin python-simplejson

Kontrollieren Sie, ob Java in der benoetigten Version installiert ist, indem Sie in einem Terminal

java -version

aufrufen. Sollte hier nicht mindestens Java Version 1.6.0 angezeigt werden, so muessen Sie dies in einem Terminalfenster mit

update-alternatives anpassen:
update-alternatives --config java
  Auswahl      Pfad                                      Prioritaet Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      Auto-Modus
  1            /usr/bin/gij-4.4                           1044      manueller Modus
  2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manueller Modus
Druecken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,
oder geben Sie die Auswahlnummer ein: 3


Um (wie empfohlen) das mysql-Backend verwenden zu koennen (z.B. fuer die Inventarisierung), so muss dieses nun mit dem Befehl

opsi-setup --configure-mysql

initialisiert werden. In der Datei /etc/opsi/backendManager/dispatch.conf muss das Backend noch hinzugefuegt werden:

backend_.*         : file, opsipxeconfd
host_.*            : file, opsipxeconfd
productOnClient_.* : file, opsipxeconfd
configState_.*     : file, opsipxeconfd
.*                 : file

aendern in

backend_.*         : file, mysql, opsipxeconfd
host_.*            : file, opsipxeconfd
productOnClient_.* : file, opsipxeconfd
configState_.*     : file, opsipxeconfd
license.*          : mysql
softwareLicense.*  : mysql
audit.*            : mysql
.*                 : file
opsi-setup --init-current-config
opsi-setup --set-rights
/etc/init.d/opsiconfd restart
/etc/init.d/opsipxeconfd restart

Ignorieren Sie Warnungen wegen einer nicht gefundenen /etc/opsi/modules. Wer welche Methoden verwenden darf, ist in der Datei /etc/opsi/backendManager/acl.conf festgelegt.


Einspielen / ueberpruefen der Freischaltdatei Auch wenn opsi Opensource ist, so gibt es einige Zusatz-Komponenten, die im Rahmen eines Kofinanzierungsprojektes erstellt wurden und evtl. noch nicht Opensource bzw. noch nicht kostenlos sind. Sobald die Entwicklungskosten eingenommen sind, werden auch diese Module Opensource bzw. kostenlos sein. Um bis dahin die Verwendung dieser Module den zahlenden Kunden und zu Evaluierungszwecken zu gestatten, gibt es die Freischaltdatei /etc/opsi/modules, welche durch eine elektronische Signatur vor unautorisierter Veraenderung geschuetzt ist. Ist diese Datei nicht vorhanden, so funktionieren nur die freien Module von opsi. Um zu Evaluierungszwecken eine zeitlich befristet gueltige Freischaltdatei zu erhalten, wenden Sie sich an info@uib.de. Im Rahmen einer Beteiligung an den entsprechenden Kofinanzierungsprojekten erhalten Sie eine unbefristet gueltige Freischaltdatei. Diese koennen Sie mit root-Rechten nach /etc/opsi kopieren. Fuehren Sie danach den folgenden Befehl aus:

opsi-setup --set-rights /etc/opsi

Kontrollieren Sie die Freischaltung mit einer der folgenden Methoden: Im opsi-configed koennen Sie sich ueber den Menuepunkt Hilfe/opsi-Module den Status Ihrer Freischaltung anzeigen lassen. Mit der Methode backend_info koennen Sie mit opsi-admin ueberpruefen, welche Module freigeschaltet sind. (Hinweis: Geben Sie die weder die Datei noch die Ausgabe dieses Befehls oeffentlich weiter, zumindest nicht ohne die Signatur zu loeschen).

opsi-admin -d method backend_info


Und nun wird DHCPd eingerichtet, als erstes sichern wir uns die default Konfigurations Datei:

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig

Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:

ddns-update-style none;

option domain-name "oppserver.net";
option domain-name-servers 192.168.0.253, 8.8.8.8;

default-lease-time 600;
max-lease-time 7200;

log-facility local7;

use-host-decl-names on;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.253;
        option broadcast-address 192.168.0.255;
        group {
                next-server 192.168.0.1;
                filename "linux/pxelinux.0";
        }
}

Jetzt die richtigen Rechte setzen, da OPSI sonst nicht in diese Datei schreiben darf:

chown opsiconfd:opsiadmin /etc/dhcp/dhcpd.conf
chmod 664 /etc/dhcp/dhcpd.conf

Danach einmal den DHCPd restarten:

/etc/init.d/isc-dhcp-server restart


Nun muessen wir den DHCPd in die /etc/opsi/backendManager/dispatch.conf einfuegen/ersetzen:

backend_.*         : file, mysql, opsipxeconfd, dhcpd
host_.*            : file, opsipxeconfd, dhcpd

Nach Anpassung der Backendkonfiguration muss die Konfiguration initialisiert und der opsiconfd neu gestartet werden:

opsi-setup --init-current-config
opsi-setup --set-rights
/etc/init.d/opsiconfd restart
/etc/init.d/opsipxeconfd restart


Start der Management-Oberflaeche (opsi-configed) Opsi bietet mit dem opsi-configed ein komfortables Management Interface. Sie koennen es auf mehrere Weisen starten: Wenn Sie in einem Browser (irgendwo im Netz) die Adresse https://192.168.0.1:4447/configed eingeben, erscheint eine Webseite mit als Applet eingebettetem opsi-configed. Damit es funktioniert, muessen Sie auf dem aufrufenden Rechner eine (Sun) Java-Version >= 1.6 installiert haben. Alternativ koennen Sie auf der graphischen Oberflaeche Ihres opsi-servers mit Klick auf die rechte Taste das Kontextmenue oeffnen und „opsi config editor“ auswaehlen. Der Konfigurationseditor ist auch Bestandteil der opsi-adminutils, die im Rahmen der opsi-Anwendung lokal auf Clients installiert werden koennen.


Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows 7 x86 als Beispiel) Anlegen eines neuen opsi-Clients ueber die Management Oberflaeche: Als Client-Rechner eignen sich reale oder virtuelle Rechner mit mindestens 512 MB RAM, die ueber eine Netzwerkkarte mit Netzwerkboot-Unterstuetzung verfuegen: D.h., sie unterstuetzen das PXE-Protokoll zum Laden von Boot-Systemen via Netzwerk. Der Netzwerkboot ist ggf. im Bios-Menue zu aktivieren bzw. an die erste Stelle der Bootoptionen zu ruecken. Fuer einen ersten Tests empfehlen wir eine VMware-Appliance, die einen „nicht installierten Rechner“ abbildet und im VMware-Player laufen kann. Diese koennen Sie z.B. bei download.uib.de herunterladen (http://download.uib.de/vmware_pxeclient.zip). Diese virtuelle Hardware wird auf eher von den Standardtreibern von Windows unterstuetzt, wenn Sie spaeter eine Testinstallation von Windows durchfuehren. Zur Installation von Windows auf neueren realen Rechnern muessen Sie sehr wahrscheinlich vorab zusaetzliche Treiber integrieren. Den Client koennen Sie jetzt mit dem opsi-configed beim opsi-server registrieren. Waehlen Sie den Menue-Punkt OpsiClient / Neuen opsi-Client erstellen und geben Sie ein: • IP-Namen, • (Internet-) Domain (falls abweichend von der Vorgabe), • Beschreibung (fakultativ), • IP-Nummer (nur zwingend, sofern der opsi-server DHCP-Server ist), • MAC-Adresse der Netzwerkkarte des Clients (zwingend, sofern der opsi-server DHCP-Server ist; andernfalls dringend empfohlen). Nach Eingabeabschluss wird der Client dem opsi-server bekanntgemacht und gleichzeitig in der DHCP-Konfiguration als PXE-Client angelegt. Ein Client kann auch auf der Kommandozeile per opsi-admin erzeugt werden: opsi-admin -d method host_createOpsiClient <client-id> [opsiHostKey] [description] [notes] [hardwareAddress] [ipAddress] [inventoryNumber] [oneTimePassword] [created] [lastSeen] z.B.:

opsi-admin -d method host_createOpsiClient rechner001 "Windows XP Pro x86 001" "" 00:50:fc:6b:9a:e3 192.168.0.2

Die Liste der eingerichteten opsi-Clients kann jederzeit im opsi-configed Modus „Client-Konfiguration“ unter dem Reiter Client-Auswahl eingesehen werden.


Hardware-Inventarisierung mit dem netboot-Produkt hwinvent: Sofern Sie bereits einen Client eingerichtet haben und das Produkt hwinvent installiert ist, koennen Sie bereits etwas Nuetzliches mit opsi tun: Waehlen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Client-Auswahl den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configed mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Netboot-Produkte, gehen Sie in das Feld "Anstehende Aktion" des Produkts "hwinvent" und waehlen Sie in der dort angebotenen Liste die Aktion "setup". Der Haken in der Icon-Menueleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi-server uebermittelt und die Farbe des Hakens wechselt im Anschluss wieder zu gruen. Booten Sie dann den Client. Er sollte jetzt per PXE ueber das Netz ein Linux-Image ziehen, das die Hardware des PCs scannt und dann den Rechner rebootet (wenn der Rechner nicht ansonsten schon eingerichtet war, kommt im Anschluss korrekterweise die Meldung, dass auf der Platte kein Betriebssystem installiert ist). Das Ergebnis des Hardware-Scans hat der PC zum opsi-server uebermittelt. Es ist unter dem Reiter "Hardware-Informationen" zu besichtigen.


Erstellen eines PE fuer Win7 (x86)

"%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd" x86 C:\winpe
"%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" /mountrw "C:\winpe\winpe.wim" 1 "C:\winpe\mount"
echo c:\opsi\startnet.cmd > "C:\winpe\mount\Windows\System32\startnet.cmd"
"%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe" /commit /unmount "C:\winpe\mount"
move "C:\winpe\winpe.wim" "C:\winpe\ISO\sources\boot.wim"

Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7/winpe kopieren. Rechte anpassen:

opsi-setup --set-rights /opt/pcbin/install/win7/winpe

Fuer die folgenden Schritte wird ein Arbeitsplatzrechner mit installiertem WAIK (Windows Automated Installation Kit) unter Windows 7 64-Bit benoetigt.

Erstellen eines PE fuer Win7 (x64)

"%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd" amd64 C:\winpe
"%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe" /mountrw "C:\winpe\winpe.wim" 1 "C:\winpe\mount"
echo c:\opsi\startnet.cmd > "C:\winpe\mount\Windows\System32\startnet.cmd"
"%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe" /commit /unmount "C:\winpe\mount"
move "C:\winpe\winpe.wim" "C:\winpe\ISO\sources\boot.wim"

Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7-x64/winpe kopieren. Rechte anpassen:

opsi-setup --set-rights /opt/pcbin/install/win7-x64/winpe


Treiber-Integration Die Treiber-Integration verlaeuft analog zu dem Verfahren anderer Windows Versionen: Die Treiber werden unter /opt/pcbin/install/win7/drivers/drivers bzw. /opt/pcbin/install/win7-x64/drivers/drivers abgelegt. Danach wird das Script create_driver_links.py aufgerufen.

cd /opt/pcbin/install/win7
python create_driver_links.py

oder

cd /opt/pcbin/install/win7-x64
python create_driver_links.py


Bereitstellung der Installationsmedien Kopieren der Installations-DVD nach /opt/pcbin/install/win7/installfiles bzw. /opt/pcbin/install/win7-x64/installfiles und passen Sie Rechte/Eigentuemer an:

opsi-setup --set-rights /opt/pcbin/install/win7/installfiles

bzw.

opsi-setup --set-rights /opt/pcbin/install/win7-x64/installfiles

Anpassungen der Installation, z.B. Proxy oder Administrator Passwort oder Display Aufloesung, kann man unter /opt/pcbin/install/win7/custom/unattend.xml bzw. /opt/pcbin/install/win7-x64/custom/unattend.xml vornehmen, z.B.:

				<AdministratorPassword>
					<PlainText>true</PlainText>
					<Value>P@ssw0rd</Value>
				</AdministratorPassword>
...
			<AutoLogon>
				<Enabled>true</Enabled>
				<LogonCount>1</LogonCount>
				<Username>Administrator</Username>
				<Password>
					<PlainText>true</PlainText>
					<Value>P@ssw0rd</Value>
				</Password>
			</AutoLogon>
...
			<Display>
				<ColorDepth>32</ColorDepth>
				<DPI>96</DPI>
				<HorizontalResolution>1024</HorizontalResolution>
				<RefreshRate>75</RefreshRate>
				<VerticalResolution>768</VerticalResolution>
			</Display>

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/win7/custom

bzw.

opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom


Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows XP x86) Kopieren Sie den Inhalt des i386 Verzeichnis einer Installations-CD fuer Microsoft WinXP Professional in das Verzeichnis /opt/pcbin/install/winxppro/i386 auf dem opsi-server. Sorgen Sie anschliessend noch dafuer, dass das Verzeichnis i386 die richtigen Rechte fuer den Zugriff durch den Installationsprozess hat: opsi-setup --set-rights /opt/pcbin/install/winxppro/i386 Statt vom opsi-server aus unter Linux koennen Sie die Dateien auch ueber das Windows-Netzwerk kopieren. Dafuer muessen Sie sich mit der Freigabe opt_pcbin auf dem opsi-server als Benutzer pcpatch verbinden. Das entsprechende Verzeichnis befindet sich auf der Freigabe in install\winxppro. Anpassungen der Installation, z.B. Proxy oder Administrator Passwort, kann man unter /opt/pcbin/install/winxppro/custom/unattend.txt vornehmen. Z.B.:

[GuiUnattended]
AdminPassword = P@ssw0rd

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/winxppro/custom


Ueber die Management-Oberflaeche unter Netboot-Produkte kann man auch den Aktivation Key fuer die einzelnen Windows Versionen pro Client hinterlegen oder man setzt diesen Global fuer ein Betriebssystem:

Fuer Windows 7 32bit:

opsi-admin -d method setProductProperty win7 "productkey" "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" opsi.oppserver.net

Fuer Windows 7 64bit:

opsi-admin -d method setProductProperty win7-x64 "productkey" "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" opsi.oppserver.net

Fuer Windows XP Pro 32bit:

opsi-admin -d method setProductProperty winxppro "productkey" "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx" opsi.oppserver.net


Des Weiteren kann man mit Hilfe von opsi-admin auch weitere Einstellungen wie z.B. orgname, fullname und auch die Windows 7 Version (imagename) vornehmen:

Fuer Windows 7 32bit:

opsi-admin -d method setProductProperty win7 "orgname" "Stadt Herne" opsi.oppserver.net
opsi-admin -d method setProductProperty win7 "fullname" "StadtHerne" opsi.oppserver.net
opsi-admin -d method setProductProperty win7 "imagename" "Windows 7 PROFESSIONAL" opsi.oppserver.net

Fuer Windows 7 64bit:

opsi-admin -d method setProductProperty win7-x64 "orgname" "Stadt Herne" opsi.oppserver.net
opsi-admin -d method setProductProperty win7-x64 "fullname" "StadtHerne" opsi.oppserver.net
opsi-admin -d method setProductProperty win7-x64 "imagename" "Windows 7 PROFESSIONAL" opsi.oppserver.net

Fuer Windows XP:

opsi-admin -d method setProductProperty winxppro "orgname" "Stadt Herne" opsi.oppserver.net
opsi-admin -d method setProductProperty winxppro "fullname" "StadtHerne" opsi.oppserver.net

Falls man es nicht will das beim Neuinstallieren der Netbootprodukte nachgefragt werden soll ob man dies auch wirklich moechte, kann man folgendes setzen: Fuer Windows 7 32bit:

opsi-admin -d method setProductProperty win7 "askbeforeinst" "False" opsi.oppserver.net

Fuer Windows 7 64bit:

opsi-admin -d method setProductProperty win7-x64 "askbeforeinst" "False" opsi.oppserver.net

Fuer Windows XP:

opsi-admin -d method setProductProperty winxppro "askbeforeinst" "False" opsi.oppserver.net

Diese Werte kann man sich auch wie folgt anzeigen lassen: Fuer Windows 7 32bit:

opsi-admin -d method getProductProperties_hash win7 opsi.oppserver.net

Fuer Windows 7 64bit:

opsi-admin -d method getProductProperties_hash win7-x64 opsi.oppserver.net

Fuer Windows XP:

opsi-admin -d method getProductProperties_hash winxppro opsi.oppserver.net


Um einen Benutzer der Installation hinzuzufuegen, gehen wir wie folgt vor: Fuer Windows 7 32bit: In /opt/pcbin/install/win7/custom/unattend.xml in der Section <LocalAccounts> folgendes hinzufuegen:

					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value>starten</Value>
						</Password>
						<Description>Schulleiter</Description>
						<Group>Administrators</Group>
						<Name>Schulleiter</Name>
						<DisplayName>Schulleiter</DisplayName>
					</LocalAccount>
					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value>starten</Value>
						</Password>
						<Description>Lehrer</Description>
						<Group>Powerusers</Group>
						<Name>Lehrer</Name>
						<DisplayName>Lehrer</DisplayName>
					</LocalAccount>
					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value></Value>
						</Password>
						<Description>Schueler</Description>
						<Group>Users</Group>
						<Name>Schueler</Name>
						<DisplayName>Schueler</DisplayName>
					</LocalAccount>

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/win7/custom

Fuer Windows 7 32bit: In /opt/pcbin/install/win7-x64/custom/unattend.xml in der Section <LocalAccounts> folgendes hinzufuegen:

					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value>starten</Value>
						</Password>
						<Description>Schulleiter</Description>
						<Group>Administrators</Group>
						<Name>Schulleiter</Name>
						<DisplayName>Schulleiter</DisplayName>
					</LocalAccount>
					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value>starten</Value>
						</Password>
						<Description>Lehrer</Description>
						<Group>Powerusers</Group>
						<Name>Lehrer</Name>
						<DisplayName>Lehrer</DisplayName>
					</LocalAccount>
					<LocalAccount wcm:action="add">
						<Password>
							<PlainText>true</PlainText>
							<Value></Value>
						</Password>
						<Description>Schueler</Description>
						<Group>Users</Group>
						<Name>Schueler</Name>
						<DisplayName>Schueler</DisplayName>
					</LocalAccount>

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom

Fuer Windows XP funktioniert dies ein wenig anders: /opt/pcbin/install/winxppro/custom/\$oem\$/cmdlines.txt mit folgendem Inhalt anlegen:

[COMMANDS]
"useraccounts.cmd"

/opt/pcbin/install/winxppro/custom/\$oem\$/useraccounts.cmd mit folgendem Inhalt anlegen:

net user Schulleiter starten /add
net localgroup Administratoren Schulleiter /add
net user Lehrer starten /add
net localgroup Administratoren Lehrer /add
net user Schueler /add
net accounts /maxpwage:unlimited
REGEDIT /S autologon.reg
EXIT

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/winxppro/custom/\$oem\$


Moechte man unter Windows XP eine automatische Aktivierung, muss man in /opt/pcbin/install/winxppro/custom/unattend.txt den AutoActivate Wert von No in Yes aendern:

AutoActivate = Yes

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/winxppro/custom

Fuer die Display Aufloesung muss man den folgenden Wert in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:

[Display]
ConfigureAtLogon = 1
BitsPerPel = 32
XResolution = 1024
YResolution = 768
VRefresh = 75
;flags = 0
AutoConfirm = 1

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/winxppro/custom

Will man unter Windows XP kein klassisches Menue/Theme, muss man folgendes in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:

[Shell]
DefaultStartPanelOff = No
DefaultThemesOff = No

Danach die Rechte richtig setzen:

opsi-setup --set-rights /opt/pcbin/install/winxppro/custom


Nun zur Erstellung der Softwarepakete, die nachher auf den Client Rechner installiert werden sollen. Vorlagen fuer die install.ins und uninstall.ins habe ich mir hier https://forum.opsi.org/wiki/userspace:script_templates gesorgt und angepasst. Als Beispiel nun einmal fuer Firefox:

cd /home/opsiproducts
opsi-newprod

Hier geben wir nun einige Daten zu dem Produkt an.

Bitte Produkt-Typ auswaehlen
localboot -> OK
Produkt-ID       firefox
Produkt-Name     Firefox
Beschreibung     Firefox Webbrowser
Hinweis          Firefox
Produkt-Version  16.0.1
Paket-Version    1
Lizenzpflichtig  False
Prioritaet        0
-> OK
Setup-Skript                install.ins
Uninstall-Skript            uninstall.ins
Update-Skript               
Always-Skript               
Once-Skript                 
Custom-Skript               
Benutzer-Anmeldungs-Skript  
-> OK
Wollen Sie eine Produkt-Abhaengigkeit definieren?
Nein
Wollen Sie eine Produkt-Eigenschaft definieren?
Nein
Informationen zum Betreuer
Name des Betreuers    Oliver Schuetz
  E-Mail des Betreuers  admin@oppserver.net
-> OK
Fertig
Das Paket-Quellverzeichnis '/home/opsiproducts/firefox' wurde erzeugt.

Jetzt erstellen wir die benoetigten "Install" und "Uninstall"-files, die Anweisungen enthalten, wie das Paket nachher installiert werden soll. Die Ordnerstruktur sollte dann wie folgt aussehen:

root@opsi:/firefox/#
-rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins
drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files
-rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp
-rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins
-rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins
root@opsi:/firefox/files/#
-rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe

Die Datei install.ins sieht wie folgt aus:

[Initial]
; Script angepasst von Oliver Schuetz
LogLevel=2
;  Log Errors in Logfile but don't abort:
ExitOnError=false
; Show syntax errors in the script:
ScriptErrorMessages=on
; Dont trace step by step through the script:
TraceMode=off
; let started programs run in front of the winst window
StayOnTop=false

[Aktionen]
DefVar $ProductId$
DefVar $InstallDir$
DefVar $NewExe$
DefVar $PRODUCTPATH$
DefStringList $profiles$
DefVar $akt_profile_ini$
DefVar $rel_prefs_path$
DefVar $akt_prefs_path$
DefVar $TEMP$
DefVar $OS$
DefVar $UninstallCommand$
DefVar $MozInstallDir$
DefVar $MozVersion$
DefVar $MozInstallPathRegKey$
DefVar $PROXY_HOSTNAME_OR_IP$
DefVar $PROXY_PORT$
DefVar $NOPROXY_HOSTS$
DefVar $PREF_FILE$
DefStringList $languageInfo$
DefVar $language$
DefVar $AppData$
DefVar $SilentSwitch$
DefVar $ExitCode$
DefVar $FIREFOXVER$
 
 
; ----------------------------------------------------------------------
Set $TEMP$ = EnvVar("TEMP")
Set $PRODUCTPATH$="%ProgramFilesDir%\Mozilla Firefox"
Set $MozInstallDir$ = $PRODUCTPATH$
set $InstallDir$=$PRODUCTPATH$
set $NewExe$= $PRODUCTPATH$+"\"
set $ProductId$ = "firefox"
set $OS$ = GetNTVersion
set $FIREFOXVER$ = "Firefox Setup 16.0.1.exe"
set $SilentSwitch$ = "-ms"
; ----------------------------------------------------------------------
; Haben wir genug Speicherplatz?
if not(HasMinimumSpace ("%SYSTEMDRIVE%", "30 MB"))
   LogError "Nicht genuegend Platz auf C: . 30 MB auf C: fuer Firefox erforderlich."
   isFatalError
   comment "Bearbeitung beenden und Produktschalter auf failed setzen"
else
   comment "Zeige Produkt Bild"
   ShowBitmap /3 "%scriptpath%\icon.bmp" "Firefox"
   if FileExists("%ScriptPath%\delsub.ins")
       comment "start delsub.ins"
       sub "%ScriptPath%\delsub.ins"
   endif
   comment "Meldung waehrend der Installation:"
   Message "Installiere Firefox..."
   comment "Stoppe alle laufenden Firefox"
   killtask "firefox.exe"
   comment "pruefe nach depotshare"
   if not (FileExists("%SCRIPTPATH%"))
       DosInAnIcon_TryToReconnect
   endif
 
   comment "Starte Setup Programm"
   Files_copy_local
   Winbatch_firefox
   sub_check_exitcode
   comment "Stope alle laufenden Firefox"
   killtask "firefox.exe"

   if not(FileExists($NewExe$))
       logError "Fatal: Nach der Installation "+$NewExe$+" nicht gefunden"
       isFatalError
   endif

   comment "loesche temporaere Dateien"
   Files_del
endif


[Files_copy_local]
copy -x "%SCRIPTPATH%\files\$FIREFOXVER$" c:\tmp
copy -s "%scriptpath%\firefox-profile\*" "$InstallDir$\defaults\profile\."

[Files_del]
delete -f "c:\tmp\$FIREFOXVER$"
 
[Winbatch_firefox]
; see http://wiki.mozilla.org/Installer:Command_Line_Arguments
"c:\tmp\$FIREFOXVER$" $SilentSwitch$
 
[dosbatch_profiledir]
@echo off
dir "%ProfileDir%" /b
 
[DosInAnIcon_TryToReconnect]
net use
set TIMEOUT=
:TRY
    if exist "%SCRIPTPATH%\." goto READY
    %ScriptDrive%
    set TIMEOUT=%TIMEOUT%1
    if %TIMEOUT% == 1111111111111111 goto READY
    sleep 1
    net use
    goto TRY
:READY
 
[PatchTextFile_profile_proxy_file]
Set_Netscape_User_Pref ("network.proxy.type", 2)
Set_Netscape_User_Pref ("network.proxy.autoconfig_url", "file:///$PROXY_HOSTNAME_OR_IP$")
 
[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 Datei uninstall.ins sieht wie folgt aus:

[Initial]
; Script angepasst von Oliver Schuetz
Message=Deinstalliere Firefox ...
LogLevel=2
ExitOnError=false
ScriptErrorMessages=on
TraceMode=off

[Actions]
requiredWinstVersion >= "4.10.8.6"
 
DefVar $UninstallProgram32$
DefVar $MsiId64$
DefVar $UninstallProgram64$
DefVar $LogDir$
DefVar $ExitCode$
DefVar $ProductId$
DefVar $MozInstallDir$
DefVar $MozInstallDir64$
DefVar $LicenseRequired$
DefVar $LicensePool$
DefVar $INST_SystemType$
DefVar $INST_architecture$
DefVar $UninstallCommand$
 
Set $INST_SystemType$ = GetSystemType
set $INST_architecture$ = GetProductProperty("install_architecture","system specific")
 
Set $LogDir$ = "%SystemDrive%\tmp"
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
Set $ProductId$       = "firefox"
Set $MozInstallDir$    = "%ProgramFilesDir%\Mozilla Firefox"
Set $LicenseRequired$ = "false"
Set $LicensePool$     = "p_" + $ProductId$
; ----------------------------------------------------------------
 
 
comment "Zeige Produkt Bild"
ShowBitmap "%ScriptPath%\" + "icon.bmp" $ProductId$
 
Message "Deinstalliere " + $ProductId$ + " ..."
 
if FileExists("%ScriptPath%\delsub.ins")
        comment "Start uninstall sub section"
        Sub "%ScriptPath%\delsub.ins"
endif
 
if $LicenseRequired$ = "true"
        comment "Licensing required, free license used"
        Sub_free_license
endif
 
[Sub_free_license]
comment "License management is enabled and will be used"
 
comment "Trying to free license used for the product"
DefVar $result$
Set $result$ = FreeLicense($LicensePool$)
; If there is an assignment of a license pool to the product, it is possible to use
; Set $result$ = FreeLicense("", $ProductId$)
;
; If there is an assignment of a license pool to a windows software id, it is possible to use
; DefVar $WindowsSoftwareId$
; $WindowsSoftwareId$ = "..."
; set $result$ = FreeLicense("", "", $WindowsSoftwareId$)

Die Datei delsub.ins sieht wie folgt aus:

;************************************************************
;
;delsub.ins
;
;************************************************************
 
; Message at install time:
Message "Deinstalliere "+$ProductId$+" ..."
 
; kill a running firefox
killtask "firefox.exe"
 
; if firefox uninstall program exists then start it
 
if FileExists(""+$MozInstallDir$+"\uninstall\helper.exe")
    set $UninstallCommand$ = ""+$MozInstallDir$+"\uninstall\helper.exe"
    set $UninstallCommand$ = '"'+$UninstallCommand$+'" /S'
    WinBatch_start_FirefoxUninstall /WaitSeconds 20
    sub_check_exitcode
endif
 
; delete registry entry to the current installed version
Registry_delete_current_version
; delete files of current version
if not ($MozInstallDir$ = "")
        Files_copy_deinstall
endif



[WinBatch_start_FirefoxUninstall]
$UninstallCommand$
;%SCRIPTPATH%\sleep 5
 
[Files_copy_deinstall]
delete -sf "$MozInstallDir$\"
 
[Registry_delete_current_version]
OpenKey [HKEY_LOCAL_MACHINE\Software\Mozilla\Mozilla Firefox]
set "CurrentVersion" = ""
 
[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 Datei icon.bmp enthaelt das Logo/Icon des Installers.


Nun laden wir die zuvor erstellten Files nach /home/opsiproducts/firefox/CLIENT_DATA auf den Server. Die Ordnerstruktur sollte dann wie folgt aussehen:

/home/opsiproducts/firefox
drwxr-s---  3 root pcpatch     4096 27. Sep 12:59 CLIENT_DATA
drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 OPSI
drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 SERVER_DATA
/home/opsiproducts/firefox/CLIENT_DATA
-rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins
drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files
-rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp
-rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins
-rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins
/home/opsiproducts/firefox/CLIENT_DATA/files
-rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe

Jetzt koennen wir das OPSI Paket erstellen lassen:

cd /home/opsiproducts/firefox
opsi-makeproductfile

Als letztes installieren wir das erzeugte Paket:

opsi-package-manager -i /home/opsiproducts/firefox/firefox_16.0.1-1.opsi

Falls man schon eine fruehere Version auf den Clients installiert hatte, kann man diese nun automatisch beim Installieren des neuen Paketes auf setup oder update setzen:

opsi-package-manager -iS /home/opsiproducts/firefox/firefox_16.0.1-1.opsi
opsi-package-manager -iU /home/opsiproducts/firefox/firefox_16.0.1-1.opsi

Jetzt einmal die Management-Oberflaeche (opsi-configed) neu laden und schon sollte unter Produktkonfiguration das Firefox Paket auftauchen. Nun den Client/die Clients auswaehlen und Firefox auf setup stellen, dann einmal auf den roten Haken (Speichern der Konfiguration) klicken, schon sollte beim naechsten booten Firefox installiert werden.


KioskMode aktivieren und konfigurieren: In der Management-Oberflaeche (opsi-configed) wechseln wir in die Server-Konfiguration. Hier stellen wir software-on-demand.active auf true, software-on-demand.product-group-ids lassen wir auf software-on-demand stehen und software-on-demand.show-details stellen wir auf true. Jetzt wechseln wir in die Client-Konfiguration und dort nach Produktkonfiguration. Hier klicken wir auf Einblenden und geben der neuen Gruppe einen Namen und zwar software-on-demand, so wie es auch in software-on-demand.product-group-ids steht und als Beschreibung z.B. Software auf Anfrage. Jetzt waehlen wir mit Steuerungstaste (strg) die Pakete aus die ins SofwareOnDemand einfliessen sollen aus und klicken danach auf speichern. Jetzt muessen wir auf den vorhandenen Clients nur die neue Version von opsi-client-agent installieren (auf neuen Clients geschieht dies automatisch) und schon erscheint im Client unter Start>Programme>opsi.org der Eintrag software-on-demand, womit sich Programme einfach installieren, deinstallieren und neu installieren lassen.