Seite 1 von 1
Einbindung der Install-Dateien über eine Win-Freigabe im LAN
Verfasst: 07 Okt 2011, 13:27
von wiseguy
Hallo,
ich wollte die Installationsdateien statt auf dem OPSI Server, auf einer Windows Freigabe haben. Dazu hatte ich in die fstab die folgende Zeile eingetragen:
Code: Alles auswählen
//fileserver/opsidepot /opt/pcbin/install cifs credentials=/etc/fstab_credentials,iocharset=utf8,dir_mode=0770,file_mode=0770,uid=opsiconfd,gid=pcpatch,suid 0 0
Das klappt auch fast: Die Installationspakete liegen jetzt alle schön im Verzeichnis /opt/pcbin/install und haben die Rechte
(Am Beispiel von Win7)
Code: Alles auswählen
-rwxrwx--- 1 opsiconfd pcpatch 10720 2011-09-06 17:27 create_driver_links.py
drwxrwx--- 0 opsiconfd pcpatch 0 2011-09-06 17:27 custom
drwxrwx--- 0 opsiconfd pcpatch 0 2011-09-06 17:27 drivers
-rwxrwx--- 1 opsiconfd pcpatch 1196 2011-09-06 17:27 extract_driver_pack.py
drwxrwx--- 0 opsiconfd pcpatch 0 2011-10-07 12:43 installfiles
drwxrwx--- 0 opsiconfd pcpatch 0 2011-09-06 17:27 opsi
-rwxrwx--- 1 opsiconfd pcpatch 12928 2011-09-06 17:27 setup.py
-rwxrwx--- 1 opsiconfd pcpatch 9732 2011-09-06 17:27 show_drivers.py
-rwxrwx--- 1 opsiconfd pcpatch 1599 2011-09-06 17:27 win7.files
drwxrwx--- 0 opsiconfd pcpatch 0 2011-10-07 10:55 winpe
Dummerweise bringt ein
leider nix.
Leider kann ich vermutlich dadurch den Befehl
auch nicht erfolgreich ausführen.
Am Ende erhalte ich da die folgenden Meldungen:
Code: Alles auswählen
[2] [Okt 07 13:11:45] Traceback: (Logger.py|742)
[2] [Okt 07 13:11:45] line 3068 in '<module>' in file '/usr/bin/opsi-setup' (Logger.py|742)
[2] [Okt 07 13:11:45] line 3024 in 'main' in file '/usr/bin/opsi-setup' (Logger.py|742)
[2] [Okt 07 13:11:45] line 494 in 'setRights' in file '/usr/bin/opsi-setup' (Logger.py|742)
[2] [Okt 07 13:11:45] ==>>> [Errno 13] Permission denied: '/var/lib/opsi/depot' (opsi-setup|3076)
Und das Starten des OPSI Konfigurations Deamons mit
schlägt damit leider auch fehl.
Ist es denn irgendwie möglich, die Installationspakete auf einer Windows Freigabe zu lagern und in das Verzeichnis /opt/pcbin/install zu mounten, so dass ich dann trotzdem den OPSI Konfigurations Deamons am Ende starten kann?
Oder liegt das Problem gar nicht daran?
Ich vermute ja, das liegt an dem nicht ausführbaren chmod g+s, wobei ich nicht ganz verstehe warum das nicht auszuführen geht, wo ich doch bei den Parametern in der fstab extra suid mit stehen habe.
Vielleicht kann mir da ja jemand weiterhelfen.
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 07 Okt 2011, 13:48
von Mike1987
Geh mal in das Verzeichnis /var/lib/opsi. Hast du da einen Ordner Depot? Ich habe da nur ssh, config und repository. VLt greifst du auf den falschen Pfad zu. Und ein Fehler ist mit Sicherheit, dass der User mit dem du das ganze Versuchst, keine Berechtigungen hat, dort zuzugrifen wenn der Ordner Depot wirklich existiert:
[2] [Okt 07 13:11:45] ==>>> [Errno 13] Permission denied: '/var/lib/opsi/depot' (opsi-setup|3076)
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 07 Okt 2011, 15:28
von wiseguy
Geh mal in das Verzeichnis /var/lib/opsi. Hast du da einen Ordner Depot? Ich habe da nur ssh, config und repository.
ein
bringt diese Ausgabe:
Code: Alles auswählen
drwxr-x--- 5 pcpatch pcpatch 4096 2011-10-07 12:56 .
drwxr-xr-x 60 root root 4096 2011-03-22 14:02 ..
drwxrwx--- 7 opsiconfd pcpatch 4096 2011-09-21 15:49 config
lrwxrwxrwx 1 root root 18 2011-03-22 18:44 depot -> /opt/pcbin/install
drwxrwx--- 2 opsiconfd pcpatch 4096 2010-06-30 19:02 repository
drwxr-x--- 2 pcpatch pcpatch 4096 2011-10-07 12:56 .ssh
Der Benutzer, den ich in /etc/fstab_credentials angegeben habe, hat dort Schreibberechtigung. Und ich kann auch Ordner und Dateien in /opt/pcbin/install anlegen und dort auch wieder löschen.
Hast du sonst noch eine Idee?
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 08 Mär 2013, 15:58
von seteqsystems
Ich weiß, es ist ein alter Thread aber nur der Vollständigkeit halber möchte ich zeigen wie ich das Problem gelöst habe:
Nehmen wir an, wir haben den CIFS-Share
//fileserver1/opsidepot und haben ebendiesen unter
/opt/pcbin/install eingebunden, dann sieht das in der /etc/fstab zum Beispiel folgendermaßen aus:
Code: Alles auswählen
//fileserver1/opsidepot /opt/pcbin/install cifs suid,uid=opsiconfd,gid=pcpatch,dir_mode=0770,file_mode=0660,credentials=/opt/pcbin/install/.smbcredentials 0 0
Es ist ja so, dass folgender Befehl auf einem gemounteten CIFS-Share fehlschlägt:
Code: Alles auswählen
# chmod -R g+s /opt/pcbin/install
chmod: changing permissions of `/opt/pcbin/install': Permission denied
Auch ein opsi-setup --set-rights liefert hier Fehler...
Das Problem dabei ist, dass kein user die Berechtigung hat, den gemounteten Ordner direkt zu verändern, weil das ja normalerweise über die mount options gelöst wird.
Daher ist mein Ansatz einfach der, den Mount im nächsthöheren Ordner zu machen und den symlink unter /var/lib/opsi neu zu setzen.
Meine /etc/fstab:
Code: Alles auswählen
//fileserver1/opsidepot /opt/depot cifs suid,uid=opsiconfd,gid=pcpatch,dir_mode=0770,file_mode=0660,credentials=/opt/depot/.smbcredentials 0 0
Natürlich muss der Ordner erst einmal angelegt werden.
Code: Alles auswählen
mkdir /opt/depot
mount /opt/depot
mkdir /opt/depot/install
Als letzten Schritt biegen wir noch den Symlink um:
Code: Alles auswählen
rm /var/lib/opsi/depot
ln -s /opt/depot/install /var/lib/opsi/depot
Bereits installierte Pakete könnte man dann noch aufs CIFS-Share verschieben:
Wenn wir jetzt folgendes versuchen sollten keine Fehler mehr auftauchen:
Natürlich kann man nun auch direkt vom CIFS-Share installieren, indem man einfach die depotRemoteUrl verbiegt (ACHTUNG! Der pcpatch-User muss dann aber auch als User am fileserver1 mit dem selben Passwort angelegt werden)
Viel Spaß damit
EDIT: Scheint zwar auf den ersten Blick problemlos zu funktionieren, aber wegen Symlinks können verschiedene Pakete NICHT auf CIFS-Shares liegen, unter anderem auch das win7-Paket. Daher bitte nur als Expiment betrachen!
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 18 Mär 2013, 13:36
von hadro
Hallo zusammen,
erstmal vielen Dank an seteqsystems für die Anleitung! Ist alles super

ABER... bei mir sind die Freigaben, die ich so eingebunden habe leicht buggy... glaub ich.
(Dazu möchte ich sagen, dass ich kein Linux-Geek bin... Eher ein Klicki-Bunti-Windows User
Code: Alles auswählen
Ubuntu 12.04.02 LTS = Opsi Server (Installations nach getting-started)
Windows Server 2008 R2 = NTFS Share für depot und ~/
Windows 7 Pro x64, Windows 7 Pro x86 = Clients
Ich bekomme alle Ordner auf der Freigabe als "0kb" Datei angezeigt, wenn ich mich mit dem "pcpatch" benutzer dort anmelde.
Ich vermute, deswegen funktionieren die Installationen auch nicht...
Bitte korrigiert mich hier, wenn ich mich täusche!
meine /etc/fstab:
Code: Alles auswählen
//SERVERIP/Software/OPSI/create /home/opsiproducts cifs suid,uid=opsiconfd,gid=pcpatch,dir_mode=0771,file_mode=0771,credentials=/home/opsi/.smbcredentials 0 0
//SERVERIP/Software/OPSI /opt/depot cifs suid,uid=opsiconfd,gid=pcpatch,dir_mode=0771,file_mode=0771,credentials=/home/opsi/.smbcredentials 0 0
Hier die ls -l Ausgabe von /opt/depot/install:
http://www.imagebanana.com/view/03h1hi8y/depot.png
Zum Vergleich die Ausgabe vom "Original" /opt/pcbin/install:
http://www.imagebanana.com/view/4nfw87sc/depot_org.png
So zeigt Windoof mir die Sache:
http://www.imagebanana.com/view/a4w2ghc2/depot_win.png
Bei der Installation von "hwaudit" bekomme ich folgenden Fehler in der Log angezeigt:
Code: Alles auswählen
[3] [18.03.2013 11:33:40] Error: copy of P:\hwaudit\dellexpresscode to C:\opsi.org\tmp\hwaudit\dellexpresscode not possible. CreateFile for reading, File Error No. 2 (Das System kann die angegebene Datei nicht finden.<)
Da er den Ordner "dellexpresscode" gar nicht mit kopiert auf die C:\ Platte des Clients...
Irgendjemand eine Idee? CIFS... SAMBA??
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 08 Apr 2013, 15:35
von seteqsystems
Hallo,
Leider hat sich im Laufe meiner Experimente herausgestellt, dass das CIFS-Depot spätestens beim Ausrollen des win7-x64-Paketes die Ohren anlegt weil CIFS keine Symlinks kann.
Habe bezüglich dieses Themas noch lange experimentiert aber trotzdem keine endgültige Lösung gefunden, mit der ich 100%ig glücklich bin.
Derzeit habe ich ein lokales Depot am OPSI-Testsystem, das mittels rsync über NFS auf einen Win2k8-Server repliziert wird.
Dazu notwendig war unter anderem die Installation der Services for UNIX am Domaincontroller und die Erweiterung des AD-Schemas um die UID und GID-Felder.
Der Effekt ist zwar, dass soweit alles funktioniert aber durch die Dereferenzierung der Symlinks im /drivers Verzeichnis von win7-x64 braucht alleine dieses Paket bereits rund 60GB(!).
Möglicherweise lässt sich das noch soweit umbauen, dass das /drivers-Verzeichnis nicht auf den 2008er-Server repliziert wird und sich das Win7-Setup die Treiber IMMER vom zentralen Depot holt...?
Sobald ich eine zufriedenstellende Lösung habe, wie der Betrieb von OPSI ohne Linux-Server dafür aber mit Windows-CIFS-Depot am Remotestandort möglich ist, werde ich dazu ein HOWTO bauen...
Danke & lg
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 08 Apr 2013, 17:02
von d.oertel
Hi,
warum fahrt Ihr da nicht (virtuelle) Linuxmaschinen auf euren Windows Servern ?
gruß
d.oertel
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 10 Apr 2013, 16:02
von seteqsystems
Hi,
Ist leider keine Option, da sich (virtuelle) Netzwerkkarten auf diesen Servern nicht mit Netzwerklizenzserverdiensten vertragen, die wir einsetzen (müssen)...
Danke & lg
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 11 Apr 2013, 02:34
von pandel
Vielleicht verstehe ich die Fragestellung falsch, aber wieso baut ihr nicht einfach eine net use Sub auf einen read-only Share in das Skript und installiert von da aus? Mach ich bei den MS Patchen. Ein Paket mit allen Skripten, die machen nen net use und holen sich nur die Installer von woanders. Das hält den Platzbedarf am opsi Server echt klein... Und der Share samt User und Password sind in als product property im Paket konfigurierbar... oder für ne verteilte WAN Umgebung legt ihr auf dem jeweiligen opsi Depot ein Verzeichnis mit einer Datei an, wo der entsprechend nächstliegende Share zu finden ist, damit das Kopieren nicht ewig dauert...
Re: Einbindung der Install-Dateien über eine Win-Freigabe im
Verfasst: 17 Apr 2013, 07:33
von seteqsystems
Genau das beabsichtige ich ja, nur war das mit dem "net use" für die Betriebssysteminstallation nicht ganz so einfach...
So sieht es momentan aus:
Wir haben zwei OPSI-Server (1x Paketierungs-& Testserver, 1x Produktivserver) am Hauptstandort und ausschließlich W2K8-Server auf den Remotestandorten.
Netzwerkboot läuft über iPXE und HTTP statt TFTP - Vorteil: Clients am Remotestandort müssen das Bootimage nicht über die WAN-Strecke laden und HTTP lädt zudem auch lokal bedeutend schneller als TFTP.
Als Webserver für PXE setzen wir am Remotestandort Mongoose ein, da wir dort bislang zum Glück noch keinen IIS betreiben müssen.
Am Testserver habe ich ein lokales Depot, das mittels rsync alle 6 Stunden über NFS auf den DFS-R-Server am Hauptstandort repliziert wird. Von dort werden die Daten an die Remotestandorte verteilt.
Am Remotestandort ist der Share einfach freigegeben, daher ist der pcpatch-User bei uns auch ein AD-User.
Ich habe zudem an jedem Standort eine nicht-AD-integrierte DNS-Zone angelegt - bei uns heißt die pxeboot.local. Der lokale Depot-Server wird dann unter branch.pxeboot.local und das Master-Depot unter root.pxeboot.local angesprochen.
Wegen dem Problem mit den Symlinks habe ich für rsync eine Exclusion-List für die drivers-Verzeichnisse erstellt, d.h. die werden nicht auf die Standorte verteilt.
Daher findet sich dann für die Treiberintegration im win7-x64 Installationsskript folgende Anpassung:
Code: Alles auswählen
drvsource = 'smb://root.pxeboot.local/opsi_depot'
os.makedirs('/mnt/rootdepot')
srcDriversDir = '/mnt/rootdepot/win7-x64/drivers'
mount(dev = drvsource,mountpoint = '/mnt/rootdepot', username='svcdeploy',domain='branch',password='asdfasdf')
integrateAdditionalWindowsDrivers(srcDriversDir + u'/drivers/additional', dstDriversDir, additionalDrivers, messageSubject = scriptMessageSubject) #, srcRepository = depot)
integrateWindowsHardwareDrivers(srcDriversDir, dstDriversDir, auditHardwareOnHosts, messageSubject = scriptMessageSubject) #, srcRepository = depot)
umount('/mnt/rootdepot')
Warum ich beim domain-Parameter im mount alles angeben darf, außer meinem reellen Domainnamen muss ich noch untersuchen - vermutlich irgendein PAM-Problem ^^
Wichtig ist auch,
srcRepository = depot auszukommentieren - sonst wirds nie funktionieren...
Für alle Interessierten: Ich bin gerade dabei, das ganze Setup genauer zu dokumentieren
