Problem nach Update opsi-boot-image

Benutzeravatar
jub
Beiträge: 64
Registriert: 25 Nov 2010, 12:40

Re: Problem nach Update opsi-boot-image

Beitrag von jub »

Das sieht schon besser aus! 8-)

Auf der Console wird zwar vermeldet:

Code: Alles auswählen

RTNETLINK answers: File exists
...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
Benutzeravatar
m.radtke
uib-Team
Beiträge: 1547
Registriert: 10 Jun 2015, 12:19

Re: Problem nach Update opsi-boot-image

Beitrag von m.radtke »

im Opsi Init skript wird nämlich genau das gemacht.
Für jedes gefundene device wird statt

Code: Alles auswählen

dhclient $device
nun

Code: Alles auswählen

dhclient $device -lf /var/lib/dhcp/dhclient.leases
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
Kein Support per DM!
_________________________
opsi support - http://www.uib.de/
For productive opsi installations we recommend support contracts.
Benutzeravatar
jub
Beiträge: 64
Registriert: 25 Nov 2010, 12:40

Re: Problem nach Update opsi-boot-image

Beitrag 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.
Benutzeravatar
m.radtke
uib-Team
Beiträge: 1547
Registriert: 10 Jun 2015, 12:19

Re: Problem nach Update opsi-boot-image

Beitrag von m.radtke »

ok dann frage ich mich wieso dhclient mit -lf im Opsi Init Skript nicht in /var/lib/dhclient.leases schreibt
Kein Support per DM!
_________________________
opsi support - http://www.uib.de/
For productive opsi installations we recommend support contracts.
Benutzeravatar
jub
Beiträge: 64
Registriert: 25 Nov 2010, 12:40

Re: Problem nach Update opsi-boot-image

Beitrag 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

Code: Alles auswählen

ifup $device
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
Benutzeravatar
jub
Beiträge: 64
Registriert: 25 Nov 2010, 12:40

Re: Problem nach Update opsi-boot-image

Beitrag 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
  • timeout 30;
setzen.

Viele Gruesse,
Jens
Benutzeravatar
m.radtke
uib-Team
Beiträge: 1547
Registriert: 10 Jun 2015, 12:19

Re: Problem nach Update opsi-boot-image

Beitrag 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
Kein Support per DM!
_________________________
opsi support - http://www.uib.de/
For productive opsi installations we recommend support contracts.
Benutzeravatar
m.radtke
uib-Team
Beiträge: 1547
Registriert: 10 Jun 2015, 12:19

Re: Problem nach Update opsi-boot-image

Beitrag 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
Kein Support per DM!
_________________________
opsi support - http://www.uib.de/
For productive opsi installations we recommend support contracts.
Benutzeravatar
jub
Beiträge: 64
Registriert: 25 Nov 2010, 12:40

Re: Problem nach Update opsi-boot-image

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