openLML-enrol neu entwickeln

Hallo zusammen,

wir betreiben zwar (noch) kein LinuxMuster, unsere Benutzerdaten sind aber auch in einem LDAP (eDirectory).
Ich hab ein kleines Skript gemacht, welches im Verzeichnis „Klassenzimmer“ anlegt. Dort sind dann die Schüler der Klasse, die unterrichtenden Lehrer und die Klassenlehrer eingetragen. Infos stammen aus Untis. Mit diesem Klassenzimmer-Object des LDAP-Verzeichnisses legt dann das Moodle LDAP-Enrolement-Plugin automatisch die Klassenzimmer an.

Die Benutzer selbst werden automatisch mit dem LDAP synchronisiert (LDAP User sync). Da die Schüler eine Schul-Emailadresse besitzen, sind sie in Moodle direkt einsatzbereit und müssen nicht noch eine Email hinterlegen und verifizieren.

Ein weiteres Skript legt in LDAP Klassengruppen an. Diese werden auch für die Nextcloud verwendet. In Moodle sorgt das „Cohort sync“-Plugin für das Anlegen und Synchronisieren der globalen Gruppen. Mittels eines moosh-Kommandos kann man dann die Klassenzimmer gleich gemäß dem Musterklassenzimmer einrichten.

Ferner gibts noch ein kleines Skript, welches im LDAP Gruppen der an einer Schulart unterrichtenden Lehrer anlegt. Das kann man auch immer gebrauchen. Z.B. zum zielgerichteten Kalendertausch.

Also statt eines Spezial-Plugins in Moodle bin ich den anderen Weg gegangen: Innerhalb des Directories die Gruppen so anzulegen, dass man sie mit den Bordmitteln von Moodle greifen kann.

Nur beim Import des Untis-Stundenplans in Moodle bin ich den anderen Weg gegangen und hab ein Plugin für Moodle gemacht, aber das ist eine andere Geschichte.

Liebe Grüße

Raphael

Hallo Frank,

man könnte natürlich Frank Schütte fragen, der hat sein Plugin scheinbar
für eine andere Serverlösung weiterentwickelt:

Moodle plugins directory: OSS Enrolment: Versions | Moodle.org

GitHub https://github.com/fschuett/moodle-enrol_oss

Frank Schütte wurde im März schon kontaktiert und hat mehrere Hinweise
gegeben und auch signalisiert, dass er den gesammten code gerne weiter
geben würde.
Dass er es für OSS weiter entwickelt hat hat er auch gesagt: und dass
sie dort eine AD haben.

Wer auch immer das hier „Betreuen“ würde, hätte schon viel Hilfe: nur
leider kann ich das nicht machen, weil ich jetzt schon so viel um die
Ohren habe, dass ich manche Dinge eben nicht mehr richtig machen kann …

Deswegen suche ich jemand, der sich dafür verantwortlich zeigt.

LG

Holger

Hallo Raphael,

das klingt ja interessant.

Ich hab ein kleines Skript gemacht, welches im Verzeichnis
„Klassenzimmer“ anlegt.

… ein script auf dem novell server, oder?

dann das Moodle LDAP-Enrolement-Plugin automatisch die Klassenzimmer an.

hab ich da im LDAP enrolment von moodle einen Knopf übersehen?
„Klassen“ gibt es bei uns im LDAP ja schon: wenn ich die in moodle
abbilden könnte, wäre das schon viel Wert.

Die Benutzer selbst werden automatisch mit dem LDAP synchronisiert (LDAP
User sync).

wo schaltet man den in moodle ein?

Ein weiteres Skript legt in LDAP Klassengruppen an. Diese werden auch
für die Nextcloud verwendet.

das ist bei uns unnötig, weil es das im LDAP schon gibt: in der
Nextcloud hab ich schon die Klassen mit Teilnehmern.
Man kann also sowiso mit der „7a“ etwas teilen oder mit „teachers“.

In Moodle sorgt das „Cohort sync“-Plugin
für das Anlegen und Synchronisieren der globalen Gruppen.

OK: da muss ich mal hinschauen.

Nur beim Import des Untis-Stundenplans in Moodle bin ich den anderen Weg
gegangen und hab ein Plugin für Moodle gemacht, aber das ist eine andere
Geschichte.

das klingt auch interessant.
Da hab ich diesen Weg gewählt: ich synce die html Dateien auf einen
Server in ein .htacess gesichertes Verzeichnis: in moodle ist ein Link
auf diese Dateien.
Funktioniert auch gut seit Jahren und spart WebUntis …

LG

Holger

Hallo Holger,

für das User-Sync gibts unter „Site administration“ - „Server“ - „Tasks“ - „Scheduled tasks“ den Task:
\auth_ldap\task\sync_task

Die Skripte, die die Gruppen generieren sind kleine Perl-Skripte. Wir verwenden (noch) die NovellML.

Das LDAP-Enrolement Modul ist sehr mächtig. Ich hab auch erst ein wenig gebraucht, bis ich verstanden habe, wie man dort was einstellen kann/muss. Über das „Map roles from LDAP“ können wir da auch die Klassenlehrer und die unterrichtenden Kollegen eintragen. Klassensprecher haben wir nicht über LDAP abgebildet. Das müssen dann die Klassenlehrer von Hand eintragen. Die Klassensprecher haben in dem Moodle-„Klassenzimmer“ dann das Recht den Kalender zu pflegen.
Mittels des Schalters „Auto create“ legt das LDAP-Enrolement-Plugin das Klassenzimmer direkt an.

Die Kollegen legen ihrerseits ihre Fachkurse an und binden sie mittels „Cohort enrolement“ an die jeweilige Klasse. Somit übertragen sich auch Veränderungen in der Klassenzusammensetzung automatisch in Moodle. Nur bei den Fachkursen, da müssen die Kollegen sich ihre Schüler zusammensuchen und einschreiben. Auf jeden Fall müssen sich die Schülerinnen und Schüler um nichts mehr kümmern. Sie sind in die betreffenden Kurse eingeschrieben und haben auf ihrem Dashboard alles im Blick. (Auch der Stundenplan mit aktuellem Vertretungsplan - alles OHNE Webuntis)

Ferner haben wir noch Aulas für die jeweiligen Schularten angelegt. Darüber kann Information klassenübergreifend verteilt oder Abfragen wie „Kurswahl Oberstufe“ abgehandelt werden. Mittels Meta-Kurs ist die entsprechende Aula an die Klassenzimmer gebunden.

Liebe Grüße

Raphael

Hallo zusammen,

ich wollte dazu eigentlich nicht mehr groß etwas schreiben - denn all das ist ja mehr als ausgiebig diskutiert worden.

Nachdem wir bei uns nun monatelang Gehirnschmalz in Moodle gesteckt haben und inzwischen einige Jahre Erfahrung gesammelt haben, sehe ich einfach das Hauptproblem, dass wir in der lml keine Möglichkeiten haben, Schulstrukturen abzubilden. Und genau das will man (irgendwie) in Moodle. Es gibt in der LML Lehrer, Klassen, Projekte. Und es gibt wohl theoretisch auch die Option, mehr abzubilden - aber das gibt es so bisher halt nicht (letztens erst: Hausmeister/Mitarbeiter… „Geht ja über Extraklassen“. Das stimmt - aber damit fehlt halt die Möglichkeit, Hierarchien abzubilden).

Klar - wenn der Verein jetzt Geld in ein neues enrol-Plugin stecken mag, seis drum. Ich denke aber, die Kernprobleme („Wer sind die Lehrkräfte einer Klasse“, „Wie hängen Personen jenseits von Klassen zusammen“/„Wie realisiert man Schülergruppen jenseits von Klassen?“) wären die wichtigeren Baustellen. Die Diskussion ist nicht neu, aber die Aussage damals „Gruppen jenseits von Klassen muss man sich dann halt zusammenklicken“ finde ich doch recht problematisch - denn das betrifft jedes Jahr von Neuem viele, wirklich viele Schülerinnen und Schüler, die von Lehrern „zusammengeklickt“ werden sollen. Und das finde ich extrem unkomfortabel - und da wird es nach derzeitigem Stand auch in den nächsten Jahren keine Lösung geben. Und da schläft eben die Konkurrenz nicht.

Natürlich haben viele noch ein eher flacheres/einfaches Moodle und da würde das Plugin genügen. Aber auch dann geht das Abbilden der LDAP-Nutzer und -Klassen in Moodle über die REST-Schnittstelle wirklich einfach. Das funktioniert zudem mit jeder Moodle-Installation ganz ohne Plugin und von überall aus.
Da die Schulkonsole technisch meines Wissens ähnliche Gundlagen hat, wie Flask, könnte man das vermutlich sogar mit wenig Aufwand dort einbauen.
Daher fände ich das Geld dort sinnvoller investiert, als in einem Plugin, welches das o.g. Problem nur weiter zementiert (und im Übrigen regelmäßig gewartet werden muss, damit sich die Problematik nicht wiederholt).

Viele Grüße
Thomas

3 „Gefällt mir“

Hi zusammen,
ich sehe es zwar genauso wie du, Thomas (@thoschi) – war in der Zwischenzeit aber trotzdem bereits tätig. Frank Schütte meinte ja bereits, dass sein Plugin prinzipiell auch mit v7 bzw einem AD laufen müsste und dass es seiner Meinung nach vermutlich lediglich an ein paar falschen Settings liegt, dass es mit der v7 bisher nicht zusammenlief …
Nun hatte ich einen unserer Schüler auf das Problem losgelassen, der es in relativ kurzer Zeit auf seiner Testinstallation einkreisen und vermutlich lösen konnte. Da er jedoch keine vollständig eingerichteten Klassen/Strukturen hat wie auf einem Produktivsystem, konnte er es bisher nicht ausgiebig testen. Dennoch poste ich jetzt vorab die Ergebnisse (auch wenn das natürlich kontraproduktiv zum Beitrag von Thomas ist). Wer möchte, kann es sich anschauen und es mit den hier dargestellten Einstellungen versuchen. Sehr viel sinnvoller und vor allem sehr viel mächtiger ist aber der Weg über die REST-API - wie von @thoschi vorgestellt.

Dennoch ist es vielleicht gut, wenn dieses Thema als „gelöst“ markiert werden kann, sofern es bei anderen funktioniert.
Hier also die vermutlich richtigen Settings für v7 und das open_enrol-Plugin:
ldap_auth.pdf (75,5 KB)
openlml.pdf (39,0 KB)
Wer testet das in einer produktiven Umgebung und gibt dann hier Bescheid?

Noch eine Ergänzung: Ob und wie das jetzt mit den Projekten funktioniert, kann ich nicht beurteilen, da die Projekte innerhalb der v7-WebUI meiner Meinung nach kein vorangestelltes „p_“ mehr erhalten, oder?

Schöne Grüße,
Michael

Was hat denn die WebUI damit zu tun? Projekte haben nachwievor ein p_ prefix, das wird (auch wen irrelevant) in der WebUI so dargestellt.

… da sieht man es. Sonst nichts. Ich hatte im Hinterkopf wahrscheinlich das ehemalige „Projekt“ p_wifi, das es jetzt ja so nicht mehr gibt und nur noch wifi heißt. Ist ja umso besser, wenn alle anderen (richtigen) Projekte auch weiterhin mit p_ gefiltert werden können…

Unter’m Strich scheint aber der „Andrang“ auf die bereitgestellten PDF Dateien sehr überschaubar zu sein: 0x angeklickt?!? Ferien-Effekt?? Nur E-Mail-Leser hier?

Ja das liegt daran, dass p_wifi ja damals eine Krücke war die nachgereicht wurde um das überhaupt zu realisieren.
Jetzt gibt es ja dafür die Managementgroups. Das wofür die Projekte ursprünglich gedacht waren funktioniert weiter wie gehabt :slight_smile:

Hallo Michael,

Dennoch ist es vielleicht gut, wenn dieses Thema als „gelöst“ markiert
werden kann, sofern es bei anderen funktioniert.
Hier also die vermutlich richtigen Settings für v7 und das
open_enrol-Plugin:
ldap_auth.pdf
https://ask.linuxmuster.net/uploads/short-url/8T5QoaxZX6jLorr8yC7ayXXSF7S.pdf
(75,5 KB)
openlml.pdf
https://ask.linuxmuster.net/uploads/short-url/AsbEaVXnFdra9VikxI30CPs8ZFa.pdf
(39,0 KB)
Wer testet das in einer produktiven Umgebung und gibt dann hier Bescheid?

ich hab jetzt erst mal die LDAP Einstellungen verglichen.
Folgende Dinge sind bei mir anders:

	bei dir		bei mir

LDAP-Codierung: utf-8 cp1252

Kontexte: ou=schools,dc=… ou=default-school,ou=schools,dc=…

ObjectClass (objectClass=user) (will ja keine Rechner drin
haben …)

Entfernte externe Nutzer: nur intenr zugänglich intern löschen
(ich will ja, dass sie rausgeschmissen werden …)

Daten übernehmen (Nachname) : sn
(ich will auch Nachnamen sehen).

Jetzt mach ich mal das neuste openlml_enrol plugin rein und stell alles
nach deiner Doku ein … aber vorher mach ich ein Backup vom
moodleserver :slight_smile:

LG

Holger

Hallo zusammen,

bei meinen Tests in den vergangenen Tagen konnte ich mit dem openlml-enrol-Plugin zwar die Anbindung an den LDAP einrichten, die Funktionalität war aber nur teilweise da, weil der geplante Task nicht lief. Das wird offenbar inzwischen bei Moodle anders umgesetzt.

Ich habe die Funktionalität (weitgehend) deshalb ohne das Plugin nachgebildet:

https://wiki.linuxmuster.net/community/anwenderwiki:webapps:moodle:moodle_extern_ldap:start

Das läuft seit einer Weile sehr gut (soweit man das in den Ferien beurteilen kann).

Beste Grüße

Jörg

2 „Gefällt mir“

bei mir funktioniert es eine frage noch muss ich einen cronjob anlegen damit er das script hier regelmäßig ausführt?

php /var/www/html/moodle/enrol/openlml/cli/sync.php

Lg Pascal

Hi.

Das ist gut zu wissen!
Was den Cronjob angeht: Ja, das hatte ich unter v6 so gemacht; ich glaube mit der Option /15 – also alle 15 Minuten!?

Wenn es nun auch mit der v7 wieder funktioniert, können wir den Thread als gelöst markieren. Nun ist es ja zwischenzeitlich sogar so, dass es mind. 3 unterschiedlich Wege gibt, die zum Ziel führen…

VG,
Michael

also unter sudo -u www-data crontab-e so eintragen?
*/15 * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php >/dev/null >/dev/null 2>&1

Lg Pascal

Genau … natürlich auf dem moodle-Server … wenn der Aufruf manuell funktioniert, sollte es anschließend auch automatisch per cronjob laufen …
Du kannst es natürlich auch seltener als alle /15 Minuten laufen lassen. Soooo häufig ändern sich die globalen Gruppen ja nun nicht. Es ging ja eher darum, dass man auch neu angelegte Projekte reinholen kann und sich dann wundert, warum die nicht sofort auftauchen …

sry es war dieses script

php /var/www/html/moodle/enrol/openlml/cli/sync.php

Ja, das andere („moodle-eigene“) konnte man früher auch per Cronjob ausführen … das geht „neuerdings“ aber glaube ich über das Backend bei den moodle-Cronjobs.

also meine crontab -e sieht jetzt so aus

 * * * * * /usr/bin/php  /var/www/html/moodle/admin/cli/cron.php >/dev/null
*/15 * * * * php /var/www/html/moodle/enrol/openlml/cli/sync.php >/dev/null >/dev/null 2>&1

korrekt?

Wie gesagt … du musst mal schauen, ob der erste Job auch noch per Konsole angenommen wird … ich meine, dass es da eine Meldung gab??? (hier: moodle 3.8)

Den Pfad kannst du in der zweiten Zeile sicherheitshalber auch komplett hinschreiben… und ein /dev/null wieder raus

root@moodle-rbs:~# php /var/www/html/moodle/admin/cli/cron.php
Server Time: Thu, 27 Aug 2020 15:45:37 +0200

Cron script completed correctly
Cron completed at 15:45:38. Memory used 18MB.
Execution took 0.043378 seconds

scheint immer noch angenommen zu werden

also mache ich den cronjob so dann müsste es passen
* * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php
*/15 * * * * php /var/www/html/moodle/enrol/openlml/cli/sync.php >/dev/null >/dev/null 2>&1

Lg Pascal