Seite 5 von 5
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 07:34
von jub
Das sieht schon besser aus!
Auf der Console wird zwar vermeldet:
...was nun ja nicht ueberrascht.
Die
dhclient.leases enthaelt anschliessend aber die gleichen Eintraege wie die
dhclient.eth0.leases (von den Timestamps renew, rebind, expire natuerlich mal abgesehen; okay, die Antwort stammt auch noch vom anderen DHCP-Server).
Gruesse,
Jens
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 08:17
von m.radtke
im Opsi Init skript wird nämlich genau das gemacht.
Für jedes gefundene device wird statt
nun
durchgeführt.
Dies sollte somit schon im Init Prozess dann die dhclient.leases füllen.
Wenn dem nicht so ist, muss ein anderer Weg her. Ich habe da auch schon eine Idee.
jub hat geschrieben:
Die dhclient.leases enthaelt anschliessend aber die gleichen Eintraege wie die dhclient.eth0.leases (von den Timestamps renew, rebind, expire natuerlich mal abgesehen; okay, die Antwort stammt auch noch vom anderen DHCP-Server).
die DHCP identifier unterscheiden sich?
Gruß
Mathias
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 09:16
von jub
Mathias hat geschrieben:die DHCP identifier unterscheiden sich?
Ja, aber das ist durchaus okay. Wir haben zwei redundante DHCP-Server, die antworten duerfen.
Im weiteren Verlauf steht bei beiden der gleiche dhcp-server-identifier.
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 10:02
von m.radtke
ok dann frage ich mich wieso dhclient mit -lf im Opsi Init Skript nicht in /var/lib/dhclient.leases schreibt
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 14:39
von jub
Das OPSI-Init-Skript schreibt wohl schon nach
/var/lib/dhcp/dhclient.leases, hat aber wohl noch keine Antwort parat.
Wo kommt also die
dhclient.eth0.leases her?
Wenn ich nun in den laufenden Prozessen nachsehe, finde ich:
Code: Alles auswählen
dhclient eth0 -lf /var/lib/dhcp/dhclient.leases
dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
Ersterer Prozess ist der vom OPSI-Init gestartete.
(Killt man letzteren diesen, hat die
dhclient.leases irgendwann den richtigen Inhalt.)
Verantwortlich fuer
dhclient.eth0.leases ist der Abschnitt
Code: Alles auswählen
try:
execute(u'ifdown -a --exclude=lo')
except:
pass
try:
execute(u'ifup -a --exclude=lo')
except:
pass
in der
master.py, genau genommen das
ifup. Es startet in jedem Fall
Code: Alles auswählen
dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
sofern in der
/etc/network/interfaces fuer eth0 dhcp konfiguriert ist.
Daher waere es m.E. wohl zweckmaessiger in der
etc/init.d/opsi wieder
zu verwenden.
Code: Alles auswählen
# diff etc/init.d/opsi.org etc/init.d/opsi
185,186c185,187
< dhclient $device -lf /var/lib/dhcp/dhclient.leases
< # trying dhclient instead of: ifup $device
---
> # dhclient $device -lf /var/lib/dhcp/dhclient.leases
> # ...trying dhclient instead of: ifup $device
> ifup $device
...allerdings muessen dann in der master.py wieder die
'/var/lib/dhcp/dhclient.'+device+'.leases' geparst werden.
Gruesse,
Jens
Re: Problem nach Update opsi-boot-image
Verfasst: 05 Nov 2015, 17:21
von jub
Hier noch zwei Vorschlaege, wenn
/etc/init.d/opsi wieder auf
ifup $device anstelle von
dhclient umgestellt werden soll:
usr/lib/python2.7/dist-packages/OPSI/System/
Posix.py:
Code: Alles auswählen
# diff usr/lib/python2.7/dist-packages/OPSI/System/Posix.py.org usr/lib/python2.7/dist-packages/OPSI/System/Posix.py
66a67
> DHCLIENT_LEASES_DEVICE_FILE = '/var/lib/dhcp/dhclient.%s.leases'
569a571,572
> elif os.path.exists(DHCLIENT_LEASES_DEVICE_FILE%(device)):
> leasesFile = DHCLIENT_LEASES_DEVICE_FILE % (device)
usr/local/bin/
master.py:
Code: Alles auswählen
# diff usr/local/bin/master.py.org usr/local/bin/master.py
684,695c684,715
< with open('/var/lib/dhcp/dhclient.leases') as f:
< for line in f:
< line = line.strip()
< if line.startswith('interface'):
< unused,interface = line.split(None, 1)
< interface = interface[:-1]
< elif line.startswith('option dhcp-server-identifier'):
< unused,unused,address = line.split(None, 2)
< address = address[:-1]
< if interface and address:
< interfaceAddress[interface.replace('"', '')] = address
< interface = address = None
---
> if os.path.isfile('/var/lib/dhcp/dhclient.leases'):
> with open('/var/lib/dhcp/dhclient.leases') as f:
> logger.notice(u"Parsing /var/lib/dhcp/dhclient.leases...")
> for line in f:
> line = line.strip()
> if line.startswith('interface'):
> unused,interface = line.split(None, 1)
> interface = interface[:-1]
> elif line.startswith('option dhcp-server-identifier'):
> unused,unused,address = line.split(None, 2)
> address = address[:-1]
> if interface and address:
> interfaceAddress[interface.replace('"', '')] = address
> interface = address = None
>
> for device in ethernetDevices:
> logger.notice(u"Parsing /var/lib/dhcp/dhclient.%s.leases..." % device)
> if os.path.isfile('/var/lib/dhcp/dhclient.'+device+'.leases'):
> with open('/var/lib/dhcp/dhclient.'+device+'.leases') as f:
> for line in f:
> line = line.strip()
> if line.startswith('interface'):
> unused,interface = line.split(None, 1)
> interface = interface[:-1]
> elif line.startswith('option dhcp-server-identifier'):
> unused,unused,address = line.split(None, 2)
> address = address[:-1]
> if interface and address:
> interfaceAddress[interface.replace('"', '')] = address
> interface = address = None
> else:
> logger.notice(u"File does not exist: /var/lib/dhcp/dhclient.%s.leases..." % device)
699c719,720
< response = requests.get('https://%s:4447' % address, verify = False)
---
> # response = requests.get('https://%s:4447' % address, verify = False)
> response = requests.get(re.sub('/rpc$','',nextserver), verify = False)
Die in der initrd vorhandene leere
/var/lib/dhcp/dhclient.leases sollte dann geloescht werden.
Schlussendlich muss ich dennoch in der
/etc/dhcp/dhclient.conf
setzen.
Viele Gruesse,
Jens
Re: Problem nach Update opsi-boot-image
Verfasst: 19 Nov 2015, 08:59
von m.radtke
Hi
ich würde die Betroffenen gerne bitten das Bootimage unter
xxx
auszuprobieren.
Dies prüft nach eventuell auftretenden dhclient.'device'.leases Dateien, schreibt diese in die dhclient.leases und fährt dann fort.
Bei einem manuellen Test mit einer generierten dhclient.eth0.leases hat es geklappt.
Danke
Gruß
Mathias
EDIT: Link geändert
Re: Problem nach Update opsi-boot-image
Verfasst: 24 Nov 2015, 09:53
von m.radtke
Hier nun ein Update zu dem Bootimage:
http://download.opensuse.org/repositori ... :/testing/
Über ein Feedback würde ich mich freuen da es dann in den Master des Bootimages wandern kann.
Gruß
Mathias
Re: Problem nach Update opsi-boot-image
Verfasst: 25 Nov 2015, 10:44
von jub
Ich hatte in den letzten Tagen leider keine Gelegenheit das neue Boot-Image zu testen. Das habe ich nun mit Version 20151120-2 nachgeholt.
In der Zwischenzeit hatten meine eigenen Änderungen (s.o.) hier die Probleme behoben.
Mit dem aktualisierten Boot-Image treten die Fehler nicht mehr auf (getestet mit 32 und 64 Bit).
Aus meiner Sicht würde ich für den Bootimage-Master grünes Licht geben.
Viele Grüsse,
Jens