Appsuite auf Domaincontroller Slave installieren

german

#1

Guten Tag,

wir möchten die Open-Xchange Appsuite über das Appcenter auf einem frisch installierten und korrekt gejointen UCS 3.1-1 Errata 215 Domaincontroller Slave installieren.
Als verfügbare Version wird die Appsuite 7.4.0-2 angeboten.

Nach der Auswahl der App und dem Klick auf “Installieren” erscheint direkt ein Fenster mit folgender Fehlermeldung:

Die Anfrage konnte nicht bearbeitet werden.

[code]Die Ausführung des Kommandos appcenter/invoke_dry_run ist fehlgeschlagen:

Traceback (most recent call last):
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/init.py”, line 204, in execute
func( request )
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/init.py”, line 169, in invoke_dry_run
self.invoke(request)
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/decorators.py”, line 176, in _response
return function(self, request)
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/init.py”, line 265, in invoke
self.package_manager.set_finished() # nothing to do, ready to take new commands
File “/usr/lib/python2.6/contextlib.py”, line 34, in exit
self.gen.throw(type, value, traceback)
File “/usr/lib/pymodules/python2.6/univention/lib/package_manager.py”, line 316, in locked
yield
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/init.py”, line 230, in invoke
result = application.install_dry_run(self.package_manager, self.component_manager, remove_component=remove_component, username=self._username, password=self._password, only_master_packages=only_master_packages, dont_remote_install=dont_remote_install, function=function, force=force)
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/app_center.py”, line 633, in install_dry_run
hosts = self.find_all_hosts(is_master=is_master)
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/app_center.py”, line 786, in find_all_hosts
hosts.append((get_master(lo), True))
File “/usr/lib/pymodules/python2.6/univention/management/console/modules/appcenter/util.py”, line 78, in get_master
return get_hosts(domaincontroller_master, lo)[0]
IndexError: list index out of range[/code]

Ein weiterer Versuch, die Installation zu starten wird mit folgender Fehlermeldung quittiert:

[quote]Die Anfrage konnte nicht ausgeführt werden.
Fehlernachricht des Servers:
Das Kommando ist fehlgeschlagen: Zur Zeit wird eine andere Paketverarbeitung durchgeführt[/quote]

Ein erneuter Versuch der Installation, der natürlich auch fehlschlägt, ist erst nach einem Neustart des Servers möglich.

Wie können wir dieses Problem beheben sodass die Installation auf einem Slave funktioniert?


#2

Hallo,

das scheint kein generelles Problem zu sein. Auf meinem gejointen DC Slave 3.1-1 (errata 219) gibt es den Fehler nicht. Mir scheint hier ist etwas mit dem Domain-Join nicht korrekt zu sein.

Während der Installation versucht das AppCenter den Master Server zu ermitteln, um dort dann benötigte Software-Pakete zu installieren. Dies ist hier wohl schief gegangen, es konnte kein Domaincontroller Master gefunden werden (was letztendlich diesen Traceback verursacht).

Bitte führen Sie einmal folgende Befehle auf dem DC Slave aus und posten die entsprechenden Ausgaben:

[code]

wurden alle Join-Script erfolgreich ausgeführt

univention-check-join-status

findet der Slave dem Master Server über den UDM

udm computers/domaincontroller_master list | grep DN:

die lokale Notifier ID der LDAP-Replication

/usr/share/univention-directory-listener/get_notifier_id.py

die Notifier ID auf dem Master (sollte gleich der lokalen sein)

more /var/lib/univention-directory-listener/notifier_id[/code]

Mit freundlichen Grüßen
Felix Botner


#3

Hallo,

der UCS selbst wurde auch schon 2-3 mal installiert und läuft immer in den Fehler.

Hier die Ausgaben:

root@ox:~# univention-check-join-status
Joined successfully
root@ox:~# udm computers/domaincontroller_master list | grep DN:
DN: cn=ucs,cn=dc,cn=computers,dc=iku-systems,dc=de
root@ox:~# /usr/share/univention-directory-listener/get_notifier_id.py
7913
root@ox:~# more /var/lib/univention-directory-listener/notifier_id
7913


#4

Hallo,

[quote=“iKu_Systems”]
root@ox:~# univention-check-join-status
Joined successfully
root@ox:~# udm computers/domaincontroller_master list | grep DN:
DN: cn=ucs,cn=dc,cn=computers,dc=iku-systems,dc=de
root@ox:~# /usr/share/univention-directory-listener/get_notifier_id.py
7913
root@ox:~# more /var/lib/univention-directory-listener/notifier_id
7913[/quote]

Das sieht soweit alles gut aus. Könnten Sie bitte einmal folgendes Python-Skript auf dem DC Slave laufen lassen und die Ausgabe posten (das ist im Grunde das, was das AppCenter macht, wobei dann der Fehler geworfen wird).

from univention.admin.handlers.computers import domaincontroller_master
from univention.admin.handlers.computers import domaincontroller_backup
import univention.uldap as uldap

def get_hosts(module, lo, ucr=None):
        hosts = module.lookup(None, lo, None)
        hostnames = []
        if ucr is not None:
                local_hostname = ucr.get('hostname')
        else:
                local_hostname = None
        for host in hosts:
                host.open() # needed for fqdn. it may be enough to return 'name'
                hostname = host.info.get('name')
                if hostname == local_hostname:
                        print('%s is me. Skipping' % host.dn)
                        continue
                if 'LDAP' not in host.info.get('service', []):
                        print('%s does not provide LDAP. Skipping' % host.dn)
                        continue
                if 'fqdn' not in host.info:
                        print('%s does not have an FQDN. Skipping' % host.dn)
                        continue
                hostnames.append(host.info['fqdn'])
        return hostnames

lo = uldap.getMachineConnection(ldap_master=False)
print get_hosts(domaincontroller_master, lo)[0]

Der Code kann einfach in einer Datei gespeichert (z.B. /tmp/apptest.py) gespeichert und ausgeführt werden (python /tmp/apptest.py).

Mit freundlichen Grüßen
Felix Botner


#5

Hallo,

die Ausgabe lautet wie folgt:

cn=ucs,cn=dc,cn=computers,dc=iku-systems,dc=de does not provide LDAP. Skipping
Traceback (most recent call last):
File “apptest.py”, line 28, in
print get_hosts(domaincontroller_master, lo)[0]
IndexError: list index out of range

ein “ldapsearch -x -h ucs” funktioniert problemlos.

MfG


#6

Das AppCenter erwartet am Rechnerobjekt des Masters ein Service Attribut “LDAP”. Dieses Attribut wird auch standardmäßig im Join-Script für LDAP Server gesetzt. Dies scheint es bei Ihnen aber nicht zu geben.

Könnten Sie einmal dieses Service Attribut auf dem DC Master wie folgt setzen und danach die Installation nochmals testen.

udm computers/domaincontroller_master modify \ --dn "cn=ucs,cn=dc,cn=computers,dc=iku-systems,dc=de" \ --append service=LDAP

Mit freundlichen Grüßen
Felix Botner