Einbindung der Install-Dateien über eine Win-Freigabe im LAN

Antworten
wiseguy
Beiträge: 19
Registriert: 06 Sep 2011, 11:55

Einbindung der Install-Dateien über eine Win-Freigabe im LAN

Beitrag 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

Code: Alles auswählen

chmod -R g+s /opt/pcbin/install/Win7
leider nix.

Leider kann ich vermutlich dadurch den Befehl

Code: Alles auswählen

opsi-setup --set-rights
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

Code: Alles auswählen

/etc/init.d/opsiconfd restart
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.
Mike1987
Beiträge: 177
Registriert: 08 Dez 2010, 08:30

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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)
wiseguy
Beiträge: 19
Registriert: 06 Sep 2011, 11:55

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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

Code: Alles auswählen

ls -la /var/lib/opsi
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?
seteqsystems
Beiträge: 62
Registriert: 12 Sep 2012, 11:51
Wohnort: Hall in Tirol

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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:

Code: Alles auswählen

mv /opt/pcbin/install/* /var/lib/opsi/depot
Wenn wir jetzt folgendes versuchen sollten keine Fehler mehr auftauchen:

Code: Alles auswählen

opsi-setup --set-rights
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!
Zuletzt geändert von seteqsystems am 08 Apr 2013, 14:59, insgesamt 1-mal geändert.
hadro
Beiträge: 57
Registriert: 14 Mär 2013, 15:37

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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:
Bild
http://www.imagebanana.com/view/03h1hi8y/depot.png

Zum Vergleich die Ausgabe vom "Original" /opt/pcbin/install:
Bild
http://www.imagebanana.com/view/4nfw87sc/depot_org.png

So zeigt Windoof mir die Sache:
Bild
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??
seteqsystems
Beiträge: 62
Registriert: 12 Sep 2012, 11:51
Wohnort: Hall in Tirol

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3327
Registriert: 04 Jun 2008, 14:27

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag von d.oertel »

Hi,

warum fahrt Ihr da nicht (virtuelle) Linuxmaschinen auf euren Windows Servern ?

gruß
d.oertel


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


seteqsystems
Beiträge: 62
Registriert: 12 Sep 2012, 11:51
Wohnort: Hall in Tirol

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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
pandel
Beiträge: 830
Registriert: 25 Jan 2013, 16:47

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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...
seteqsystems
Beiträge: 62
Registriert: 12 Sep 2012, 11:51
Wohnort: Hall in Tirol

Re: Einbindung der Install-Dateien über eine Win-Freigabe im

Beitrag 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 :)
Antworten